- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
阅读 scikit-learn 中文本特征提取的文档,我不确定可用于 TfidfVectorizer(也可能是其他矢量化器)的不同参数如何影响结果。
以下是我不确定它们如何工作的参数:
TfidfVectorizer(stop_words='english', ngram_range=(1, 2), max_df=0.5, min_df=20, use_idf=True)
最佳答案
我在这篇文章中看到了几个问题。
- How do the different arguments in TfidfVectorizer interact with one another?
ngram_range
to (1,1) 仅输出单字标记,(1,2) 输出单字标记和两字标记,(2, 3) 输出两字标记和三字标记等。
ngram_range
携手合作
analyzer
.套装
analyzer
为“word”输出单词和短语,或设置为“char”输出字符ngrams。
stop_words
删除意义不大的英语单词。
from sklearn.feature_extraction.stop_words import ENGLISH_STOP_WORDS
[('the', 79808),
('of', 40024),
('and', 38311),
('to', 28765),
('in', 22020),
('a', 21124),
('that', 12512),
('he', 12401),
('was', 11410),
('it', 10681),
('his', 10034),
('is', 9773),
('with', 9739),
('as', 8064),
('i', 7679),
('had', 7383),
('for', 6938),
('at', 6789),
('by', 6735),
('on', 6639)]
max_df
可能是有意义的。作为说 0.95 的浮点数以删除前 5%,但是您假设前 5% 都是停用词,但情况可能并非如此。这实际上取决于您的文本数据。在我的工作中,最常见的词或短语不是停用词是很常见的,因为我在非常特定的主题中使用密集文本(搜索查询数据)。
min_df
作为一个整数来删除罕见的单词。如果它们只出现一次或两次,它们不会增加太多值(value),而且通常非常晦涩。此外,通常有很多,所以忽略它们说
min_df=5
可以大大减少您的内存消耗和数据大小。
token_pattern
使用正则表达式
\b\w\w+\b
这意味着标记必须至少有 2 个字符长,因此像“I”、“a”这样的词被删除,并且像 0 - 9 这样的数字也被删除。您还会注意到它删除了撇号
- What happens first, ngram generation or stop word removal?
import numpy as np
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
from sklearn.feature_extraction.stop_words import ENGLISH_STOP_WORDS
docs = np.array(['what is tfidf',
'what does tfidf stand for',
'what is tfidf and what does it stand for',
'tfidf is what',
"why don't I use tfidf",
'1 in 10 people use tfidf'])
tfidf = TfidfVectorizer(use_idf=False, norm=None, ngram_range=(1, 1))
matrix = tfidf.fit_transform(docs).toarray()
df = pd.DataFrame(matrix, index=docs, columns=tfidf.get_feature_names())
for doc in docs:
print(' '.join(word for word in doc.split() if word not in ENGLISH_STOP_WORDS))
tfidf
does tfidf stand
tfidf does stand
tfidf
don't I use tfidf
1 10 people use tfidf
10 and does don for in is \
what is tfidf 0.0 0.0 0.0 0.0 0.0 0.0 1.0
what does tfidf stand for 0.0 0.0 1.0 0.0 1.0 0.0 0.0
what is tfidf and what does it stand for 0.0 1.0 1.0 0.0 1.0 0.0 1.0
tfidf is what 0.0 0.0 0.0 0.0 0.0 0.0 1.0
why don't I use tfidf 0.0 0.0 0.0 1.0 0.0 0.0 0.0
1 in 10 people use tfidf 1.0 0.0 0.0 0.0 0.0 1.0 0.0
it people stand tfidf use \
what is tfidf 0.0 0.0 0.0 1.0 0.0
what does tfidf stand for 0.0 0.0 1.0 1.0 0.0
what is tfidf and what does it stand for 1.0 0.0 1.0 1.0 0.0
tfidf is what 0.0 0.0 0.0 1.0 0.0
why don't I use tfidf 0.0 0.0 0.0 1.0 1.0
1 in 10 people use tfidf 0.0 1.0 0.0 1.0 1.0
what why
what is tfidf 1.0 0.0
what does tfidf stand for 1.0 0.0
what is tfidf and what does it stand for 2.0 0.0
tfidf is what 1.0 0.0
why don't I use tfidf 0.0 1.0
1 in 10 people use tfidf 0.0 0.0
use_idf=False, norm=None
设置这些后,就相当于使用了 sklearn 的 CountVectorizer。它只会返回计数。 token_pattern
类似于 token_pattern=r"\b\w[\w']+\b"
包括撇号。 tfidf = TfidfVectorizer(use_idf=False, norm=None, stop_words='english', ngram_range=(1, 2))
10 10 people does does stand \
what is tfidf 0.0 0.0 0.0 0.0
what does tfidf stand for 0.0 0.0 1.0 0.0
what is tfidf and what does it stand for 0.0 0.0 1.0 1.0
tfidf is what 0.0 0.0 0.0 0.0
why don't I use tfidf 0.0 0.0 0.0 0.0
1 in 10 people use tfidf 1.0 1.0 0.0 0.0
does tfidf don don use people \
what is tfidf 0.0 0.0 0.0 0.0
what does tfidf stand for 1.0 0.0 0.0 0.0
what is tfidf and what does it stand for 0.0 0.0 0.0 0.0
tfidf is what 0.0 0.0 0.0 0.0
why don't I use tfidf 0.0 1.0 1.0 0.0
1 in 10 people use tfidf 0.0 0.0 0.0 1.0
people use stand tfidf \
what is tfidf 0.0 0.0 1.0
what does tfidf stand for 0.0 1.0 1.0
what is tfidf and what does it stand for 0.0 1.0 1.0
tfidf is what 0.0 0.0 1.0
why don't I use tfidf 0.0 0.0 1.0
1 in 10 people use tfidf 1.0 0.0 1.0
tfidf does tfidf stand use \
what is tfidf 0.0 0.0 0.0
what does tfidf stand for 0.0 1.0 0.0
what is tfidf and what does it stand for 1.0 0.0 0.0
tfidf is what 0.0 0.0 0.0
why don't I use tfidf 0.0 0.0 1.0
1 in 10 people use tfidf 0.0 0.0 1.0
use tfidf
what is tfidf 0.0
what does tfidf stand for 0.0
what is tfidf and what does it stand for 0.0
tfidf is what 0.0
why don't I use tfidf 1.0
1 in 10 people use tfidf 1.0
don't I use
有 't
脱光了,因为I
少于两个字符,它被删除,所以单词加入 don use
...实际上不是结构,可能会稍微改变结构!
- does it make sense to use max_df/min_df arguments together with use_idf argument?
max_df
场景。
min_df
很多,使用
min_df
是有意义的如果您正在处理一个庞大的数据集,因为稀有词不会增加值(value),只会导致很多处理问题。我不使用
max_df
很多,但我确信在处理像所有维基百科这样的数据时,有些情况下删除前 x% 可能是有意义的。
关于python - 理解python scikit-learn中的文本特征提取TfidfVectorizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47557417/
我认为函数 TfidfVectorizer 没有正确计算 IDF 因子。例如,从 tf-idf feature weights using sklearn.feature_extraction.tex
我将大型语料库拆分为 5K 个文件,我正在尝试使用 TF-IDF 转换生成基于 IDF 的词汇表。 这是代码:基本上我有一个迭代器,它循环遍历 .tsv 文件的目录,读取每个文件并产生。 import
假设我用于单个文档 text="bla agao haa" singleTFIDF = TfidfVectorizer(analyzer='char_wb', ngram_range= (4,6),p
我尝试在语料库上使用 TfidfVectorizer,但每次都会出现此错误 File "sparsefuncs.pyx", line 117, in sklearn.utils.sparsefuncs
虽然有六个不同的词。结果只打印了5个字。如何根据所有单词(6列向量)获得结果? from sklearn.feature_extraction.text import TfidfVectorizer
我正在尝试使用 sklearn 的 TfidfVectorizer 输出由两个一元组组成的输入列表的 tf-idf 分数和二元组。 这是我正在做的事情的本质: comprehensive_ngrams
我正在寻找一种方法来加载我之前使用 scikit-learn 的 TfidfVectorizer 生成的向量。总的来说,我希望更好地了解 TfidfVectorizer 的数据持久性。 例如,到目前为
就我而言,不存在这样的问题。我正在 Kaggle 中从事 NLP 和情感分析项目,首先我正在准备我的数据。数据框是一个文本列,后跟 0 到 9 之间的数字,用于对行(文档)所属的簇进行分类。我在 sk
我使用 TfIdfVectorizer 和 MultinomialNB 训练了我的模型,并将其保存到 pickle 文件中。 现在我正尝试使用另一个文件中的分类器来预测看不见的数据,我不能这样做,因为
我有一个大型语料库,存储为 25 个列表的字典,我想使用 SKLearn 的 TfidfVectorizer 进行分析。每个列表包含许多字符串。现在,我既关心整个语料库中的总体词频 (tf),也关心
我对 skelearn 的 TfidfVectorizer 在我不知道的情况下到底做了什么感到有点困惑。 我有这样的句子: sentence_1 = 'Sum: 1 Mean: 1 Min:1' 但是
给出以下代码: import pandas as pd from sklearn.feature_extraction.text import TfidfVectorizer import urlli
我正在使用 sklearn Pipeline 和 FeatureUnion 从文本文件创建特征,我想打印出特征名称。 首先,我将所有转换收集到一个列表中。 In [225]:components Ou
我想确保我了解属性 use_idf 和 sublinear_tf 在 TfidfVectorizer 对象中的作用。这几天我一直在研究这个。我正在尝试对不同长度的文档进行分类,目前使用 tf-idf
我正在测试 TfidfVectorizer举个简单的例子,我想不出结果。 corpus = ["I'd like an apple", "An apple a day keeps
在 scikit-learn TfidfVectorizer允许我们拟合训练数据,然后使用相同的向量化器来转换我们的测试数据。 训练数据转换的输出是一个矩阵,表示给定文档的每个单词的 tf-idf 分
我正在尝试删除 TfidfVectorizer 中法语和英语的停用词。到目前为止,我只成功地从英语中删除了停用词。当我尝试为 stop_words 输入法语时,收到一条错误消息,指出它不是内置的。 事
我正在尝试在一组上训练 NLP 模型,保存词汇和模型,然后将其应用于单独的验证集。代码正在运行,但我如何确定它按我的预期工作? 换句话说,我从训练集中保存了词汇和 nmodel,然后使用保存的词汇创建
我有一个相当简单的 NLTK 和 sklearn 分类器(我对此完全是菜鸟)。 我进行通常的导入 import pandas as pd import matplotlib.pyplot as plt
我正在绘制一组二维文本文档,我注意到一些异常值,我希望能够找出这些异常值是什么。我使用原始文本,然后使用 SKLearn 内置的 TfidfVectorizer。 vectorizer = Tfi
我是一名优秀的程序员,十分优秀!