||
libsvm:
>>> y, x = svm_read_problem('label_Tfidf.txt')
>>> m = svm_train(y[:800], x[:800], '-c 5')
>>> p_label, p_acc, p_val = svm_predict(y[800:], x[800:], m)
Accuracy = 9.613% (929/9664) (classification)
>>> y, x = svm_read_problem('label_Tfidf.txt')
>>> m = svm_train(y[:8000], x[:8000], '-c 5')
>>> p_label, p_acc, p_val = svm_predict(y[8001:], x[8001:], m)
Accuracy = 0% (0/2463) (classification)
以下转载自http://www.wtoutiao.com/p/12dmN1i.html
import time
import re
import os
import sys
import codecs
import shutil
from sklearn import feature_extraction
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import CountVectorizer
'''''
sklearn里面的TF-IDF主要用到了两个函数:CountVectorizer()和TfidfTransformer()。
CountVectorizer是通过fit_transform函数将文本中的词语转换为词频矩阵。
矩阵元素weight[i][j] 表示j词在第i个文本下的词频,即各个词语出现的次数。
通过get_feature_names()可看到所有文本的关键字,通过toarray()可看到词频矩阵的结果。
TfidfTransformer也有个fit_transform函数,它的作用是计算tf-idf值。
'''
if __name__ == "__main__":
corpus = [] #文档预料 空格连接
#读取预料 一行预料为一个文档
for line in open('BaiduSpider_Result.txt', 'r').readlines():
print line
corpus.append(line.strip())
#print corpus
time.sleep(5)
#将文本中的词语转换为词频矩阵 矩阵元素a[i][j] 表示j词在i类文本下的词频
vectorizer = CountVectorizer()
#该类会统计每个词语的tf-idf权值
transformer = TfidfTransformer()
#第一个fit_transform是计算tf-idf 第二个fit_transform是将文本转为词频矩阵
tfidf = transformer.fit_transform(vectorizer.fit_transform(corpus))
#获取词袋模型中的所有词语
word = vectorizer.get_feature_names()
#将tf-idf矩阵抽取出来,元素w[i][j]表示j词在i类文本中的tf-idf权重
weight = tfidf.toarray()
resName = "BaiduTfidf_Result.txt"
result = codecs.open(resName, 'w', 'utf-8')
for j in range(len(word)):
result.write(word[j] + ' ')
result.write('rnrn')
#打印每类文本的tf-idf词语权重,第一个for遍历所有文本,第二个for便利某一类文本下的词语权重
for i in range(len(weight)):
print u"-------这里输出第",i,u"类文本的词语tf-idf权重------"
for j in range(len(word)):
result.write(str(weight[i][j]) + ' ')
result.write('rnrn')
result.close()
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-1 16:14
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社