countvectorizer 无法检测到单词

Posted

技术标签:

【中文标题】countvectorizer 无法检测到单词【英文标题】:countvectorizer not able to detect , words 【发布时间】:2022-01-05 00:35:48 【问题描述】:
final_vocab = 'Amazon',
'Big Bazaar',
'Brand Factory',
'Central',
'Cleartrip',
'Dominos',
'Flipkart',
'IRCTC',
'Lenskart',
'Lifestyle',
'MAX',
'MMT',
'More',
'Myntra'
 
vect = CountVectorizer(vocabulary=final_vocab)
token_df = pd.DataFrame(vect.fit_transform(['Big Bazaar','Brand Factory']).todense(), columns=vect.get_feature_names())

为什么所有的输出都是零???对于 Big Bazaar 和品牌工厂的价值应该是 1 ???

【问题讨论】:

【参考方案1】:

您的CountVectorizer 缺少两件事:

    ngram_range=(2,2) 如文档中所述:All values of n such such that min_n <= n <= max_n will be used。此帮助CountVectorizer 从输入中获取 2 克向量(Big Bazaar 而不是 ['Big','Bazaar']lowercase=False 表示:Convert all characters to lowercase before tokenizing。这将使Big BazaarBrand Factory 变为小写,因此无法在词汇表中找到。设置为 False 将防止这种情况发生。

另外,由于您已向 CountVectorizer 提供了词汇表,因此请使用 transform 而不是 fit_transform

from sklearn.feature_extraction.text import CountVectorizer

final_vocab = ['Amazon',
'Big Bazaar',
'Brand Factory',
'Central',
'Cleartrip',
'Dominos',
'Flipkart',
'IRCTC',
'Lenskart',
'Lifestyle',
'MAX',
'MMT',
'More',
'Myntra']
 
vect = CountVectorizer(vocabulary=final_vocab, ngram_range=(2, 2), lowercase=False)
token_df = pd.DataFrame(vect.transform(['Big Bazaar','Brand Factory']).todense(), columns=vect.get_feature_names())

【讨论】:

以上是关于countvectorizer 无法检测到单词的主要内容,如果未能解决你的问题,请参考以下文章

CountVectorizer 给出错误的单词计数?

CountVectorizer 构建字典以删除多余的单词

Sklearn CountVectorizer:将表情符号保留为单词

在训练和测试数据上拟合 CountVectorizer,以免遗漏任何单词

CountVectorizer 方法 get_feature_names() 生成代码但不生成单词

Python sklearn CountVectorizer 的分析器参数中如何识别“单词边界”?