中文文档向量空间表示

  • 发布日期:2019-09-29
  • 难度:简单
  • 类别:Web挖掘、文本挖掘
  • 标签:Python、jieba、scikit-learn、向量空间模型、VSM

1. 问题描述

基于Python第三方库scikit-learn和jieba,将中文文本表示为向量空间模型(Vector Space Model)。

2. 程序实现

In [2]:
import jieba
from sklearn.feature_extraction.text import TfidfVectorizer


docs = ['web数据挖掘技术分析web数据',
        'web数据挖掘有点复杂',
        '挖掘技术哪家强']
tfidf_model = TfidfVectorizer(smooth_idf=False, norm=None,
                              tokenizer=lambda doc : jieba.cut(doc)).fit(docs)

print('(1)词项集合(输出内容为“词项:id”集合)')
print(tfidf_model.vocabulary_)
print('(2)词项idf(输出结果依次为各个词项id对应的idf)')
print(tfidf_model.idf_)
sparse_result = tfidf_model.transform(docs)
print('(3)数据结果为文档集合tf-idf稀疏矩阵表示')
print(sparse_result)
(1)词项集合(输出内容为“词项:id”集合)
{'web': 0, '数据挖掘': 8, '技术': 5, '分析': 1, '数据': 7, '有点': 9, '复杂': 3, '挖掘': 6, '哪家': 2, '强': 4}
(2)词项idf(输出结果依次为各个词项id对应的idf)
[1.40546511 2.09861229 2.09861229 2.09861229 2.09861229 1.40546511
 2.09861229 2.09861229 1.40546511 2.09861229]
(3)数据结果为文档集合tf-idf稀疏矩阵表示
  (0, 8)	1.4054651081081644
  (0, 7)	2.09861228866811
  (0, 5)	1.4054651081081644
  (0, 1)	2.09861228866811
  (0, 0)	2.8109302162163288
  (1, 9)	2.09861228866811
  (1, 8)	1.4054651081081644
  (1, 3)	2.09861228866811
  (1, 0)	1.4054651081081644
  (2, 6)	2.09861228866811
  (2, 5)	1.4054651081081644
  (2, 4)	2.09861228866811
  (2, 2)	2.09861228866811