标签: tf-idf

TFIDF 向量化器给出错误

我正在尝试使用 TFIDF 和 SVM 对某些文件进行文本分类。每次选择 3 个词的功能。我的数据文件已经是这样的格式:angel eyes has, each one for, on its own. 没有停用词,也不能进行旅鼠或词干提取。我希望该功能被选择为:angel eyes has ...我编写的代码如下:

import os
import sys
import numpy
from sklearn.svm import LinearSVC
from sklearn.metrics import confusion_matrix
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn import metrics
from sklearn.datasets import load_files
from sklearn.cross_validation import train_test_split

dt=load_files('C:/test4',load_content=True)
d= len(dt)
print dt.target_names
X, y = dt.data, dt.target
print y
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
print y_train …
Run Code Online (Sandbox Code Playgroud)

python tf-idf scikit-learn

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

Python 中单词组合的向量化

我有一个包含医学文本数据的数据集,我对它们应用 tf-idf 矢量器并计算单词的 tf idf 分数,如下所示:

import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer as tf

vect = tf(min_df=60,stop_words='english')

dtm = vect.fit_transform(df) 
l=vect.get_feature_names() 

x=pd.DataFrame(dtm.toarray(), columns=vect.get_feature_names())
Run Code Online (Sandbox Code Playgroud)

所以基本上我的问题如下 - 当我应用 TfidfVectorizer 时,它会将文本分割成不同的单词,例如:“疼痛”、“头痛”、“恶心”等。如何获得 TfidfVectorizer 输出中的单词组合,例如:“剧烈疼痛”、“丛集性头痛”、“恶心呕吐”。谢谢

python nlp tf-idf scikit-learn countvectorizer

4
推荐指数
1
解决办法
650
查看次数

sklearn TfidfVectorizer:通过不删除其中的停用词来生成自定义 NGram

以下是我的代码:

sklearn_tfidf = TfidfVectorizer(ngram_range= (3,3),stop_words=stopwordslist, norm='l2',min_df=0, use_idf=True, smooth_idf=False, sublinear_tf=True)
sklearn_representation = sklearn_tfidf.fit_transform(documents)
Run Code Online (Sandbox Code Playgroud)

它通过删除所有停用词来生成三元组。

我希望它允许那些中间有停用词的 TRIGRAM(不在开始和结束处)

是否需要为此编写处理器。需要建议。

statistics machine-learning tf-idf scikit-learn

4
推荐指数
1
解决办法
4953
查看次数

使用 Tfidf 的 python LightGBM 文本经典化

我正在尝试为文本多分类引入 LightGBM。pandas 数据框中的 2 列,其中“类别”和“内容”设置如下。

数据框:

    contents               category  
1   this is example1...    A  
2   this is example2...    B  
3   this is example3...    C  

*Actual data frame consists of approx 600 rows and 2 columns.
Run Code Online (Sandbox Code Playgroud)

在此,我尝试将文本分为以下 3 类。

代码:

import pandas as pd
import numpy as np

from nltk.corpus import stopwords
stopwords1 = set(stopwords.words('english'))

from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer, TfidfVectorizer 
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split, cross_val_score, GridSearchCV

import lightgbm as lgbm
from lightgbm import LGBMClassifier, LGBMRegressor


#--main code--# …
Run Code Online (Sandbox Code Playgroud)

python tf-idf text-classification lightgbm

4
推荐指数
1
解决办法
3868
查看次数

如何从管道内的 sklearn TFIDF Vectorizer 返回数据帧?

如何在用于交叉验证的 sklearn 管道内让 TFIDF Vectorizer 返回具有相应列名的 Pandas 数据帧?

我有一个 Sklearn 管道,其中一个步骤是一个 TFIDF 向量化器:

class InspectPipeline(BaseEstimator, TransformerMixin):

    def transform(self, x):
        return x

    def fit(self, x, y=None):
        self.df = x
        return self


pipeline = Pipeline(
        [
         ("selector", ItemSelector(key="text_column")),
         ("vectorizer", TfidfVectorizer()),
         ("debug", InspectPipeline()),
         ("classifier", RandomForestClassifier())
        ]
)
Run Code Online (Sandbox Code Playgroud)

我创建了这个类InspectPipeline,以便稍后检查传递给分类器的特征是什么(通过运行pipeline.best_estimator_.named_steps['debug'].df)。但是, TfidfVectorizer 返回一个稀疏矩阵,这是我在执行时得到的pipeline.best_estimator_.named_steps['debug'].df。我想将 TFIDF 向量作为 Pandas 数据帧,而不是获得稀疏矩阵,其中列名是各自的 tfidf 标记。

我知道这tfidf_vectorizer.get_feature_names()有助于了解列名。但是如何在管道中包含这个 + 将稀疏矩阵转换为数据帧?

python tf-idf pandas scikit-learn

4
推荐指数
1
解决办法
2594
查看次数

每个文档/总计中哪 10 个单词的 TF-IDF 值最高?

我正在尝试获取每个文档中 TF-IDF 得分最高的 10 个单词。

我的数据框中有一列包含来自我的各种文档的预处理文本(没有标点符号、停用词等)。在此示例中,一行表示一个文档。

我的数据框

它有 500 多行,我很好奇每行中最重要的单词。

所以我运行了以下代码:

from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer()
vectors = vectorizer.fit_transform(df['liststring'])
feature_names = vectorizer.get_feature_names()
dense = vectors.todense()
denselist = dense.tolist()
df2 = pd.DataFrame(denselist, columns=feature_names)
Run Code Online (Sandbox Code Playgroud)

这给了我一个 TF-IDF 矩阵:

tf idf 矩阵

我的问题是,如何收集 TF-IDF 值最高的前 10 个单词?最好在我的原始数据框 (df) 中创建一个列,其中包含每行的前 10 个单词,同时还知道哪些单词总体上最重要。

python tf-idf pandas scikit-learn tfidfvectorizer

4
推荐指数
1
解决办法
5259
查看次数

unigrams和bigrams(tf-idf)不如unigrams(ff-idf)准确吗?

这是一个关于ngrams线性回归的问题,使用Tf-IDF(术语频率 - 逆文档频率).为此,我使用numpy稀疏矩阵和sklearn进行线性回归.

使用unigrams时我有53个病例和超过6000个功能.预测基于使用LeaveOneOut的交叉验证.

当我创建一个只有unigram分数的tf-idf稀疏矩阵时,我得到的预测比我创建unigram + bigram分数的tf-idf稀疏矩阵要好一些.我添加到矩阵的列越多(三元组,四元组,五元组等的列),回归预测的准确性就越低.

这是常见的吗?这怎么可能?我会认为功能越多越好.

nlp regression machine-learning tf-idf scikit-learn

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

分片导致搜索结果错误?

我具有弹性搜索节点的默认配置:5个分片和1个副本。我查询在特定字段上匹配的节点,这对于这5个分片中的许多文档都是相同的。但是,由于该特定分片中该文档的查询的tf-idf,搜索结果的得分不同。对我而言,理想的情况是在不同分片的相同字段中为文档获得相同的分数,并且我可以通过订购对我来说很重要的第二条标准来打破关系。如何做到这一点?

sharding tf-idf elasticsearch

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

创建TF-IDF Matrix Python 3.6

我有100个文档(每个文档都是该文档中的一个简单的单词列表).现在我想创建一个TF-IDF矩阵,这样我就可以按等级创建一个小词搜索.我使用tfidfVectorizer尝试了它,但在语法中丢失了.任何帮助将非常感激.问候.

编辑:我将列表转换为字符串并将其添加到父列表中:

vectorizer = TfidfVectorizer(vocabulary=word_set)
matrix = vectorizer.fit_transform(doc_strings)
print(matrix)
Run Code Online (Sandbox Code Playgroud)

这里word_set是可能的不同单词的集合,doc_strings是一个包含每个文档作为字符串的列表; 但是,当我打印矩阵时,我得到如下输出:

  (0, 839)  0.299458532286
  (0, 710)  0.420878518454
  (0, 666)  0.210439259227
  (0, 646)  0.149729266143
  (0, 550)  0.210439259227
  (0, 549)  0.210439259227
  (0, 508)  0.210439259227
  (0, 492)  0.149729266143
  (0, 479)  0.149729266143
  (0, 425)  0.149729266143
  (0, 401)  0.210439259227
  (0, 332)  0.210439259227
  (0, 310)  0.210439259227
  (0, 253)  0.149729266143
  (0, 216)  0.210439259227
  (0, 176)  0.149729266143
  (0, 122)  0.149729266143
  (0, 119)  0.210439259227
  (0, 111)  0.149729266143
  (0, 46)   0.210439259227
  (0, 26)   0.210439259227
  (0, 11)   0.149729266143
  (0, 0) …
Run Code Online (Sandbox Code Playgroud)

python information-retrieval matrix tf-idf python-3.x

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

SKLearn TF-IDF丢弃数字?

我正在进行文本分析,我想忽略那些只是数字的"单词".例如.从文本"这是000斯巴达!" 只应使用'this','is'和'Sparta'这两个词.有没有办法做到这一点?怎么样?

tf-idf scikit-learn

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