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

时间:2017-11-21 17:56:26

标签: pandas machine-learning scikit-learn nlp countvectorizer

我尝试使用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之前,有人知道如何过滤这些单词吗?

Screenshot

Screensot of the data.head()

2 个答案:

答案 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()