据我所知,在“单词袋”方法中,特征是一组单词及其在文档中的频率计数。另一方面,N-gram(例如unigram)的功能完全相同,但是它没有考虑单词出现的频率。
我想使用sklearn和CountVectorizer来实现BOW和n-gram方法。
对于BOW,我的代码如下:
CountVectorizer(ngram_range=(1, 1), max_features=3000)
是否足以将'binary'参数设置为True来执行n-gram特征选择?
CountVectorizer(ngram_range=(1, 1), max_features=3000, binary=True)
n-gram比BOW方法有什么优势?
答案 0 :(得分:1)
正如@ daniel-kurniadi回答的那样,您需要调整ngram_range
参数的值以使用n-gram。例如,通过使用(1, 2)
,矢量化器将考虑到字母组合和二元组合。
ngrams优于BOW i的主要优点是要考虑单词的顺序。例如,在句子中:
含义明显不同,但是两种情况下基本的BOW表示都相同。使用n-gram(n> = 2)时,它将捕获术语的顺序,因此表示形式会有所不同。
答案 1 :(得分:0)
如果将ngram_range
参数设置为(m,n),则它将成为N-gram实现。