我正在尝试用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之前过滤这些单词吗?
3条答案
按热度按时间rwqw0loc1#
您正在使用min_df = 1,它将包括在至少一个文档中找到的所有单词,即所有单词。min_df本身可以被视为一个超参数,以删除最常用的单词。我建议使用spacy将单词标记化,并在将其作为计数矢量器的输入之前将其作为字符串连接起来。
注意:你看到的特性名称实际上是词汇表的一部分,它只是噪声。如果你想删除它们,那么设置min_df〉1。
kulphzqa2#
下面是你可以做什么得到你到底想要什么:
wrrgggsh3#
代替vectorizer.get_feature_names(),你可以写**vectorizer.vocabulary_.keys()**来获取单词。