为什么这不起作用?停止用词

2024-10-01 13:46:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用CountVectorizer标记文本,我想添加我自己的停止词。为什么这样不行?“德”这个词不应该出现在最后的印刷品上。在

from sklearn.feature_extraction.text import CountVectorizer

vectorizer = CountVectorizer(ngram_range=(1,1),stop_words=frozenset([u'de']))
word_tokenizer = vectorizer.build_tokenizer()
print (word_tokenizer(u'Isto é um teste de qualquer coisa.'))

[u'Isto', u'um', u'teste', u'de', u'qualquer', u'coisa']

Tags: from标记文本desklearnumtokenizerword
1条回答
网友
1楼 · 发布于 2024-10-01 13:46:08
from sklearn.feature_extraction.text import CountVectorizer

vectorizer = CountVectorizer(ngram_range=(1,1),stop_words=frozenset([u'de']))
word_tokenizer = vectorizer.build_tokenizer()

In [7]: vectorizer.vocabulary_
Out[7]: {u'coisa': 0, u'isto': 1, u'qualquer': 2, u'teste': 3, u'um': 4}

您可以看到u'de'不在计算词汇表中。。。在

方法build_tokenizer只是将字符串标记化,删除stopwords应该在之后完成

来自CountVectorizer的源代码:

^{pr2}$

解决问题的方法可以是:

vectorizer = CountVectorizer(ngram_range=(1,1),stop_words=frozenset([u'de']))
sentence = [u'Isto é um teste de qualquer coisa.']
tokenized = vectorizer.fit_transform(sentence)
result = vectorizer.inverse_transform(tokenized)

In [12]: result
Out[12]: 
[array([u'isto', u'um', u'teste', u'qualquer', u'coisa'], 
       dtype='<U8')]

相关问题 更多 >