标签: tfidfvectorizer

有没有办法使用 scikit 或任何其他 python 包只获取单词的 IDF 值?

我的数据集中有一个文本列,使用该列我想为所有存在的单词计算一个 IDF。scikit 中的 TFID 实现,如tfidfvectorize,直接为我提供 TFIDF 值,而不是仅提供单词 IDF。有没有办法让单词 IDF 给出一组文档?

python nlp tf-idf scikit-learn tfidfvectorizer

3
推荐指数
1
解决办法
2874
查看次数

Scikit - TF-IDF 空词汇

我必须计算两个或多个文本的距离/相似度。有些文本真的很小或没有形成正确的英语单词等,“A1024515”。这意味着它应该接受列表中的每个单词。

作为测试用例,我使用了以下列表作为词库。

words= ['A', 'A', 'A']

vect = TfidfVectorizer(min_df =0)
dtm = vect.fit_transform(words)
df_tf_idf = pd.DataFrame(dtm.toarray(), columns=vect.get_feature_names())
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误

ValueError: empty vocabulary; perhaps the documents only contain stop words
Run Code Online (Sandbox Code Playgroud)

如何确保列表被接受为可能的单词并确保不会从语料库中删除停用词?

python nlp tf-idf scikit-learn tfidfvectorizer

3
推荐指数
1
解决办法
1789
查看次数

如何为 TfidfVectorizer 使用列表列表或集合列表?

我正在使用sklearn TfidfVectorizer进行文本分类。

我知道这个矢量化器需要原始文本作为输入,但使用列表可以(参见 input1)。

但是,如果我想使用多个列表(或集),我会收到以下属性错误。

有谁知道如何解决这个问题?提前致谢!

    from sklearn.feature_extraction.text import TfidfVectorizer

    vectorizer = TfidfVectorizer(min_df=1, stop_words="english")
    input1 = ["This", "is", "a", "test"]
    input2 = [["This", "is", "a", "test"], ["It", "is", "raining", "today"]]

    print(vectorizer.fit_transform(input1)) #works
    print(vectorizer.fit_transform(input2)) #gives Attribute error

input 1:
  (3, 0)    1.0

input 2:
Run Code Online (Sandbox Code Playgroud)

回溯(最近一次调用最后一次):文件“”,第 1 行,文件“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/sklearn/feature_extraction/text.py”中,第 1381 行,在 fit_transform X = super(TfidfVectorizer, self).fit_transform(raw_documents) 文件“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/sklearn/feature_extraction/text.py ”,第 869 行,在 fit_transform self.fixed_vocabulary_) 文件“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/sklearn/feature_extraction/text.py”,第 792 行,在 _count_vocab 中对于分析(doc)中的功能:文件“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/sklearn/feature_extraction/text.py”,第266行,在tokenize(预处理( self.decode(doc))), stop_words) 文件“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/sklearn/feature_extraction/text.py”,第 232 行,作为回报lambda x: strip_accents(x.lower()) AttributeError: 'list' 对象没有属性 'lower'

python python-3.x scikit-learn text-classification tfidfvectorizer

3
推荐指数
1
解决办法
4532
查看次数

sklearn 中的 Tfidfvectorizer - 如何获取矩阵

我想从 sklearn 的 Tfidfvectorizer 对象中获取矩阵。这是我的代码:

from sklearn.feature_extraction.text import TfidfVectorizer
text = ["The quick brown fox jumped over the lazy dog.",
        "The dog.",
        "The fox"]

vectorizer = TfidfVectorizer()
vectorizer.fit_transform(text)
Run Code Online (Sandbox Code Playgroud)

这是我尝试并返回错误的方法:

vectorizer.toarray()
Run Code Online (Sandbox Code Playgroud)
--------------------------------------------------------------------------- 
AttributeError                            Traceback (most recent call last) <ipython-input-117-76146e626284> in <module>()   
----> 1 vectorizer.toarray()

AttributeError: 'TfidfVectorizer' object has no attribute 'toarray'
Run Code Online (Sandbox Code Playgroud)

另一种尝试

vectorizer.todense()
Run Code Online (Sandbox Code Playgroud)
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-118-6386ee121184> in <module>()
----> 1 vectorizer.todense()

AttributeError: 'TfidfVectorizer' object has no attribute 'todense'
Run Code Online (Sandbox Code Playgroud)

python tf-idf scikit-learn tfidfvectorizer

3
推荐指数
1
解决办法
7449
查看次数

TfidfVectorizer 的词汇表和 get_features() 之间的区别?

我有

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

# Train the vectorizer
text="this is a simple example"
singleTFIDF = TfidfVectorizer(ngram_range=(1,2)).fit([text])
singleTFIDF.vocabulary_ # show the word-matrix position pairs

# Analyse the training string - text
single=singleTFIDF.transform([text])
single.toarray()  
Run Code Online (Sandbox Code Playgroud)

我想将每个值关联到单个相应的功能中。现在单机的结构是怎样的?如何将单个值的位置映射到特征?

如何解释词汇表和 get_features() 的索引?他们有关系吗?根据文档,两者都具有带有索引的功能。这很令人困惑吗?

python scikit-learn tfidfvectorizer

2
推荐指数
1
解决办法
1万
查看次数

用作 TfidfTransformer 输入的 CountVectorizer 输出与 TfidfTransformer()

最近,我开始阅读更多有关 NLP 的内容并遵循 Python 教程,以便更多地了解该主题。在学习其中一个教程时,我观察到他们使用每条推文中字数的稀疏矩阵(使用 CountVectorizer 创建)作为 TfidfTransformer 的输入,TfidfTransformer 处理数据并将其提供给分类器进行训练和预测。

pipeline = Pipeline([
     ('vect', CountVectorizer()),
     ('tfidf', TfidfTransformer()),
     ('clf', LogisticRegression())
])
Run Code Online (Sandbox Code Playgroud)

由于没有提供任何解释,我无法理解这背后的思维过程......这不是一个普通的词袋吗?难道不能仅使用其中一个函数(例如 Tfidf)来完成此操作吗?

任何澄清将不胜感激。

python pipeline scikit-learn countvectorizer tfidfvectorizer

2
推荐指数
1
解决办法
776
查看次数

如何获得最高 tf-idf 分数的前 n 个术语 - 大稀疏矩阵

有这个代码:

feature_array = np.array(tfidf.get_feature_names())
tfidf_sorting = np.argsort(response.toarray()).flatten()[::-1]

n = 3
top_n = feature_array[tfidf_sorting][:n]
Run Code Online (Sandbox Code Playgroud)

来自这个答案。

我的问题是在我的稀疏矩阵太大而无法立即转换为密集矩阵(with response.toarray())的情况下,我如何有效地做到这一点?

显然,一般的答案是将稀疏矩阵分割成块,在 for 循环中对每个块进行转换,然后将所有块的结果组合起来。

但我想具体查看执行此操作的代码。

python tf-idf python-3.x scikit-learn tfidfvectorizer

2
推荐指数
1
解决办法
1727
查看次数

如何在 k-means 聚类中使用 tfidf 值

我使用 sckit-learn 库将 K-means 聚类与 TF-IDF 结合使用。我知道 K-means 使用距离来创建集群,距离用(x 轴值,y 轴值)表示,但 tf-idf 是单个数值。我的问题是这个 tf-idf 值是如何通过 K-means 聚类转换为 (x,y) 值的。

nlp tf-idf k-means python-3.x tfidfvectorizer

2
推荐指数
1
解决办法
2645
查看次数

Tfidftransformer 和 Tfidfvectorizer 有什么区别?

Tfidftransformer我对&的使用有点困惑,Tfidfvectorizer因为它们看起来很相似。一种使用单词来转换矩阵 ( Tfidfvectorizer),另一种使用已经转换的文本 (使用CountVectorizer) 来转换矩阵。

谁能解释一下这两者之间的区别吗?

python tf-idf pandas scikit-learn tfidfvectorizer

2
推荐指数
1
解决办法
1703
查看次数

我该如何解决错误:TfidfVectorizer 的 'stop_words' 参数必须是 {'english'} 中的 str、'list' 的实例或 None?

在 Albrecht、Jens、Sidharth Ramachandran 和 Christian Winkler 的解释后,我尝试进行主题建模(使用德语停用词和德语文本)。使用 Python 进行文本分析的蓝图:针对常见现实世界 (NLP) 应用程序的基于机器学习的解决方案。第一版。加利福尼亚州塞巴斯托波尔:O\xe2\x80\x99Reilly Media, Inc,2020。,第 209 页 ff。

\n
# Load Data\nimport pandas as pd\n# csv Datei \xc3\xbcber read_csv laden\nxlsx = pd.ExcelFile("Priorisierung_der_Anforderungen.xlsx")\ndf = pd.read_excel(xlsx)\n\n# Anforderungsbeschreibung in String umwandlen\ndf=df.astype({'Anforderungsbeschreibung':'string'})\ndf.info()\n\n# "Ignore spaces after the stop..."\nimport re\ndf["paragraphs"] = df["Anforderungsbeschreibung"].map(lambda text:re.split('\\.\\s*\\n', text))\ndf["number_of_paragraphs"] = df["paragraphs"].map(len)\n\n%matplotlib inline\ndf.groupby('Title').agg({'number_of_paragraphs': 'mean'}).plot.bar(figsize=(24,12))\n\n\n# Preparations\nfrom sklearn.feature_extraction.text import TfidfVectorizer\nfrom spacy.lang.de.stop_words import STOP_WORDS as stopwords\n\ntfidf_text_vectorizer = TfidfVectorizer(stop_words=stopwords, min_df=5, max_df=0.7)\ntfidf_text_vectors = tfidf_text_vectorizer.fit_transform(df['Anforderungsbeschreibung'])\ntfidf_text_vectors.shape\n
Run Code Online (Sandbox Code Playgroud)\n

我收到此错误消息:

\n
 InvalidParameterError: The 'stop_words' parameter of TfidfVectorizer must be a str among {'english'}, …
Run Code Online (Sandbox Code Playgroud)

nlp topic-modeling tfidfvectorizer

2
推荐指数
1
解决办法
5267
查看次数