2

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

截屏

data.head() 的屏幕截图

4

2 回答 2

3

您正在使用 min_df = 1 ,它将包括在至少一个文档中找到的所有单词,即。所有的话。min_df 本身可以被认为是一个超参数来删除最常用的单词。我建议使用 spacy 来标记单词并将它们作为字符串加入,然后再将其作为 Count Vectorizer 的输入。

注意:您看到的功能名称实际上是您的词汇表的一部分。这只是噪音。如果要删除它们,请设置 min_df >1。

于 2017-11-22T04:53:44.127 回答
0

您可以通过以下方式获得您真正想要的东西:

  vectorizer=CountVectorizer()
  vectorizer.fit_transform(df['message_encoding'])
  feat_dict=vectorizer.vocabulary_.keys()
于 2019-06-05T12:42:24.753 回答