python.sklearn:文本特征提取,TfidfVectorizer的应用代码,通俗易懂

版权声明:可以转载,请标明作者和来源。原创首发http://kakazai.cn https://blog.csdn.net/yeziand01/article/details/85951581

TfidfVectorizer

所属模块:sklearn

功能:原始文本转化为tf-idf的特征矩阵,从而为后续的文本相似度计算,奠定基础

该网站可在线测试本文代码,以便快速理解本文代码:http://kakazai.cn/index.php/Kaka/Python/query/name/TfidfVectorizer


实例1:普通例子

#!/usr/bin/python3n
#code-python(3.6)
from sklearn.feature_extraction.text import TfidfVectorizer

document = ['This is a dog!' ,'that is an ...apple.']
'''
这里有两个文档,文档0是‘this is a dog’,文档1是’that is a cat’。
每个文档都是一个样本点。
'''

model = TfidfVectorizer().fit(document)
'''
(1)   fit()会先分析语料库,提取词典等;
(2)   从两个文档中,将所有大写转小写,去掉所有符号。
再分别提出的词语集合['this', 'is', 'a', 'dog'],['that', 'is', 'an', 'apple']。
(3)   对两个集合去重,得到[‘a','an', 'apple', 'dog', 'is', 'that', 'this']。
但这里面有的词语不在该语料库中,比如'a',要剔除。
得到词语集合['an', 'apple', 'dog', 'is', 'that', 'this']。
每个词语都是一个特征。
'''

print(model.get_feature_names())
'''
从文档中提取的词语(特征) = ['an', 'apple', 'dog', 'is', 'that', 'this']
'''

print(model.vocabulary_)
'''
返回词语与索引 = {'an': 0, 'apple': 1',dog': 2,'is': 3,'that': 4, 'this': 5}
表示'an'是第一个特征,'apple'是第二个特征,'this'是最后一个特征,共6个特征。
'''

print(model.idf_)
'''
[1.40 1.40 1.40 1  1.40 1.40]
'''
matrix = model.transform(document)    # transform()会把每篇文档转换为向量;得到tf-idf矩阵;

print(matrix.shape)    
#矩阵是2行6列;即有2个文档,每个文档有6个词语(特征)

print(matrix)
'''
稀疏矩阵表示法
(0, 5)	0.63	#文档0的第5个特征this的权重值是0.63
(0, 3)	0.44
(0, 2)	0.63
(1, 4)	0.53	#文档1的第4个特征that的权重值是0.53
(1, 3)	0.37
(1, 1)	0.53
(1, 0)	0.53
'''
print(matrix.todense())    # 转化为更直观的一般矩阵
'''
[[0      0      0.63    0.44   0.     0.63]
 [0.53   0.53   0       0.37   0.53   0   ]]
'''

猜你喜欢

转载自blog.csdn.net/yeziand01/article/details/85951581