我尝试使用sklearn CountVectorizer对某些文本进行矢量化。之后,我想看一下生成矢量化器的功能。但相反,我得到了一个代码列表,而不是单词。这意味着什么以及如何处理这个问题?这是我的代码:
vectorizer = CountVectorizer(min_df=1, stop_words='english')
X = vectorizer.fit_transform(df['message_encoding'])
vectorizer.get_feature_names()
我得到了以下输出:
[u'00',
u'000',
u'0000',
u'00000',
u'000000000000000000',
u'00001',
u'000017',
u'00001_copy_1',
u'00002',
u'000044392000001',
u'0001',
u'00012',
u'0004',
u'0005',
u'00077d3',
等等。
我需要真正的功能名称(单词),而不是这些代码。请有人帮帮我吗?
更新: 我设法解决了这个问题,但是现在当我想看看我的话时,我看到很多单词实际上不是单词,而是无意义的字母组(见附件截图)。在使用CountVectorizer之前,有人知道如何过滤这些单词吗?
答案 0 :(得分:1)
您正在使用min_df = 1,其中包含至少在一个文档中找到的所有单词,即。所有的话。 min_df可以被认为是超参数本身,以删除最常用的单词。我建议使用spacy来标记单词并将它们作为字符串连接,然后将其作为计数向量化器的输入。
注意:您看到的功能名称实际上是词汇表的一部分。这只是噪音。如果要删除它们,请设置min_df> 1.
答案 1 :(得分:0)
在这里您可以做得到您真正想要的:
vectorizer=CountVectorizer()
vectorizer.fit_transform(df['message_encoding'])
feat_dict=vectorizer.vocabulary_.keys()