使用 TFIDF 的 Python 文本分类

标签 python python-3.x tf-idf text-classification document-classification

我有如下数据集

**ID**        **Text**                                     **Category**
   1     jake loves me more than john loves me               Romance
   2     july likes me more than robert loves me             Friendship
   3     He likes videogames more than baseball              Interest

我需要将以上内容用作我的文本分类的训练数据,稍后当我传递一个新句子时,该句子需要被归类为上表中提供的上述类别中的一个类别。

首先,我对上述数据集执行了 TFIDF(词频逆文档频率),如下所示

mydoclist = []
#below im only taking my field 'Text' as input 
f = open('C:\sample4.csv', "r")
reader = csv.reader(f) 
for row in reader:   
    models.append(row)
f.close()

tf = TfidfVectorizer(tokenizer=lambda doc: doc,lowercase=False, analyzer='word',  min_df = 0, stop_words = 'english')
tfidf_matrix =  tf.fit_transform(mydoclist)
feature_names = tf.get_feature_names()
tfs = tf.fit_transform(mydoclist)
#storing my tfidf matrix
import pickle
with open("x_result.pkl", 'wb') as handle:
    pickle.dump(tfidf_matrix, handle)

我想知道如何使用计算出的 tfidf 矩阵标记上述数据集中的类别?另外,以后如何使用上述数据对任何新数据进行分类?

最佳答案

您可以将 libsvm 与 python 结合使用。

1.首先要做的是按照 libsvm 提供的文件格式来表示您的文档。

2.然后,你读取数据:

from libsvm import *
prob = svm_problem(your data…)

3.设置svm参数

param = svm_parameter(kernel_type …)

4.训练模型

m = svm_model(prob, param)

5.然后你测试新文档的模型

m.predict(your new data...)

关于使用 TFIDF 的 Python 文本分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37600213/

相关文章:

Python Flask 应用程序重复 HTTP 请求

python - 尝试在 Python 3.4.3 上通过 pip 安装 PyGame 时出现 HTTP 错误 400

python - scikit 中的 k-means 向量是在内部学习规范化还是 TfidfVectorizer 规范化不起作用?

c# - IronPython 用于 C# 上的单元测试

python - 如何使用pygtk拖动图像

python - 在python中对每一行进行编号

Python:定义类变量时可以访问哪些范围?

python - 哪 10 个词在每个文档/总数中具有最高的 TF-IDF 值?

python - Gensim 中的 TFIDIF 模型创建类型错误

python - 在元组中插入项目