使用TfidfVectorizer进行n-gram矢量化

问题描述 投票:1回答:1

我正在使用TfidfVectorizer以下参数:

smooth_idf=False, sublinear_tf=False, norm=None, analyzer='word', ngram_range=(1,2)

我正在矢量化下面的文字:“红太阳,粉红色糖果。绿花。”

这是get_feature_names():的输出

['candy', 'candy green', 'coffee', 'flower', 'green', 'green flower', 'hate', 'icecream', 'like', 'moon', 'pink', 'pink candy', 'red', 'red sun', 'sun', 'sun pink']

由于“糖果”和“绿色”是单独句子的一部分,为什么“糖果绿”n-gram创建?

有没有办法防止产生n-gram产生多个句子?

scikit-learn tf-idf
1个回答
0
投票

取决于你如何将它传递给TfidfVectorizer

如果作为单个文档传递,TfidfVectorizer将仅保留包含2个或更多字母数字字符的单词。标点符号被完全忽略,并始终被视为标记分隔符。所以你的句子变成了:

['red', 'sun', 'pink', 'candy', 'green', 'flower'] 

现在从这些令牌中生成ngrams。

由于TfidfVectorizer是一种词汇技术,处理出现在文档中的单词,因此它不会保留有关单个文档中单词的结构或顺序的任何信息。如果您希望单独处理它们,那么您应该自己检测句子并将它们作为不同的文档传递。

或者,将您自己的分析器和ngram生成器传递给TfidfVectorizer。

有关tfidfvectorizer实际工作原理的更多信息,请参阅我的其他答案:

© www.soinside.com 2019 - 2024. All rights reserved.