python - 如何停用 sklearn TfidfVectorizer 的默认停用词功能

标签 python machine-learning scikit-learn nlp tf-idf

我正在尝试获取日语单词的 tf-idf 值。 我遇到的问题是 sklearn TfidfVectorizer 删除了一些我想保留的日语字符作为停用词。

示例如下:

from sklearn.feature_extraction.text import TfidfVectorizer
tf = TfidfVectorizer(stop_words = None)

words_list = ["歯","が","痛い"]
tfidf_matrix =  tf.fit_transform(words_list)
feature_names = tf.get_feature_names() 
print (feature_names)

输出为:['痛い']

但是,我想将所有这三个字符保留在列表中。 我相信 TfidfVectorizer 会删除长度为 1 的字符作为停用词。 我怎样才能停用默认停用词功能并保留所有字符?

最佳答案

您可以将 token_pattern 参数从 (?u)\\b\\w\\w+\\b(默认)更改为 (?u )\\b\\w\\w*\\b;默认匹配具有两个或多个单词字符的标记(如果您不熟悉正则表达式,+ 表示一个或多个,因此 \\w\\w+ 匹配单词具有两个或多个单词字符;另一方面,* 表示零个或多个,因此 \\w\\w* 将匹配具有一个或多个字符的单词):

from sklearn.feature_extraction.text import TfidfVectorizer
tf = TfidfVectorizer(stop_words = None, token_pattern='(?u)\\b\\w\\w*\\b')
​
words_list = ["歯","が","痛い"]
tfidf_matrix =  tf.fit_transform(words_list)
feature_names = tf.get_feature_names() 
print(feature_names)
# ['が', '歯', '痛い']

关于python - 如何停用 sklearn TfidfVectorizer 的默认停用词功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44360774/

相关文章:

python - mixins 应该使用父属性吗?

python strptime vs dateutil - 推荐使用

python - SageMaker 线性学习器结果不准确?

machine-learning - 分类信息可以改善样本外类别的预测吗?

python - 评分系统 - 输入特征

python - 如果值不在使用 python 的数据中,则跳过文件

python - 机器学习sklearn中的海量数据集

python - 为什么 GridSearchCV 在 { 'acquire' 对象的方法 'thread.lock'} 上花费超过 50% 的时间?

python - 无法从版本 > 0.20 的 sklearn 导入 cross_validation

python - 使用 lxml,找到所有 td 类 ='banana',但前提是它们包含文本 "Today"