如何解决如何从 Tfidvectorizer 添加停用词?
我正在尝试将停用词添加到我的停用词列表中,但是,我使用的代码似乎不起作用:
创建停用词列表:
stopwords = nltk.corpus.stopwords.words('english')
CustomListofWordstoExclude = ['rt']
stopwords1 = stopwords.extend(CustomListofWordstoExclude)
在这里,我将文本转换为具有 tfidf 权重的 dtm(文档术语矩阵):
vect = TfidfVectorizer(stop_words = 'english',min_df=150,token_pattern=u'\\b[^\\d\\W]+\\b')
dtm = vect.fit_transform(df['tweets'])
dtm.shape
但是当我这样做时,我得到这个错误:
FutureWarning:将 input=None 作为关键字参数传递。从 0.25 版本开始,将这些作为位置参数传递将导致错误 warnings.warn("Pass {} 作为关键字参数。从 0.25 版开始"
这是什么意思?有没有更简单的方法来添加停用词?
解决方法
我无法重现警告。但是,请注意,诸如此类的警告并不意味着您的代码未按预期运行。这意味着在包的未来版本中,它可能无法按预期工作。所以如果你明年用更新的软件包尝试同样的事情,它可能不起作用。
关于您关于使用停用词的问题,您需要进行两项更改才能使您的代码按预期工作。
-
list.extend()
就地扩展列表,但不返回列表。要看到这一点,您可以执行type(stopwords1)
给出NoneType
。要在一行中定义一个新变量并将自定义单词列表添加到stopwords
,您只需使用列表的内置+
运算符功能:
stopwords = nltk.corpus.stopwords.words('english')
CustomListofWordstoExclude = ['rt']
stopwords1 = stopwords + CustomListofWordstoExclude
- 要在执行 TF-IDF 矢量化时实际使用
stopwords1
作为新的停用词列表,您需要传递stop_words=stopwords1
:
vect = TfidfVectorizer(stop_words=stopwords1,# Passed stopwords1 here
min_df=150,token_pattern=u'\\b[^\\d\\W]+\\b')
dtm = vect.fit_transform(df['tweets'])
dtm.shape
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。