Scikit learn 使用TFIDF矢量器的n-gram矢量化
我正在使用Scikit learn 使用TFIDF矢量器的n-gram矢量化,scikit-learn,tf-idf,Scikit Learn,Tf Idf,我正在使用TFIDFvectorier 具有以下参数: smooth_idf=False, sublinear_tf=False, norm=None, analyzer='word', ngram_range=(1,2) 我将以下文字矢量化:“红色的太阳,粉色的糖果,绿色的花朵。” 下面是get\u feature\u names()的输出: 既然“糖果”和“绿色”是单独句子的一部分,为什么创建了“糖果绿色” 有没有办法防止n-gram的创建产生多个句子 取决于如何将其传递给TfidfVec
TFIDFvectorier
具有以下参数:
smooth_idf=False, sublinear_tf=False, norm=None, analyzer='word', ngram_range=(1,2)
我将以下文字矢量化:“红色的太阳,粉色的糖果,绿色的花朵。”
下面是get\u feature\u names()的输出:
既然“糖果”和“绿色”是单独句子的一部分,为什么创建了“糖果绿色”
有没有办法防止n-gram的创建产生多个句子 取决于如何将其传递给
TfidfVectorizer
如果作为单个文档传递,TfidfVectorizer将只保留包含2个或更多字母数字字符的单词。标点符号完全被忽略,并且始终被视为标记分隔符。所以你的句子变成:
['red', 'sun', 'pink', 'candy', 'green', 'flower']
现在从这些令牌生成NGRAM
由于TfidfVectorizer是一种文字袋技术,用于处理文档中出现的文字,因此它不会在单个文档中保留有关文字结构或顺序的任何信息。
如果你想将它们分开处理,那么你应该自己检测这些句子,并将它们作为不同的文档传递
或者,将您自己的分析器和ngram生成器传递给TfidfVectorizer
有关tfidfvectorizer实际工作方式的更多信息,请参阅我的其他答案:
语句。一本书只是一系列单词的集合。
['red', 'sun', 'pink', 'candy', 'green', 'flower']