加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
pager_tf_idf.py 3.07 KB
一键复制 编辑 原始数据 按行查看 历史
张亚飞 提交于 2019-03-29 21:17 . 3月29日提交
# -*- coding: utf-8 -*-
"""
@Datetime: 2019/3/28
@Author: Zhang Yafei
"""
# ################################# nltk计算tfidf ####################################333
# import nltk
# from nltk.text import TextCollection
# sents = ['this is sentence one', 'this is sentence two', 'this is sentence three']
# sents = [nltk.word_tokenize(sent) for sent in sents]
# corpus = TextCollection(sents)
#
# # 直接就能算出tfidf
# # (term: ⼀句话中的某个term, text: 这句话)
# print(corpus.idf('three'))
# print(corpus.tf('four',nltk.word_tokenize('this is a sentence four')))
# print(corpus.tf_idf('four',nltk.word_tokenize('this is a sentence four')))
# ################################# sklearn计算tfidf ####################################333
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import CountVectorizer
corpus = ["我 来到 北京 清华大学", # 第一类文本切词后的结果,词之间以空格隔开
"他 来到 了 网易 杭研 大厦", # 第二类文本的切词结果
"小明 硕士 毕业 与 中国 科学院", # 第三类文本的切词结果
"我 爱 北京 天安门"] # 第四类文本的切词结果
# vectorizer = CountVectorizer() # 该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频
# transformer = TfidfTransformer() # 该类会统计每个词语的tf-idf权值
# tfidf = transformer.fit_transform(vectorizer.fit_transform(corpus)) # 第一个fit_transform是计算tf-idf,第二个fit_transform是将文本转为词频矩阵
# word = vectorizer.get_feature_names() # 获取词袋模型中的所有词语
# weight = tfidf.toarray() # 将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重
# for i in range(len(weight)): # 打印每类文本的tf-idf词语权重,第一个for遍历所有文本,第二个for便利某一类文本下的词语权重
# print("-------这里输出第", i, "类文本的词语tf-idf权重------")
# for j in range(len(word)):
# print(word[j], weight[i][j])
# print(weight)
# ################################# gensim计算tfidf ####################################333
import warnings
warnings.filterwarnings(action='ignore', category=UserWarning, module='gensim')
from gensim import corpora, models, similarities
texts = [[word for word in text.split()] for text in corpus]
dictionary = corpora.Dictionary(texts)
print(dictionary)
# 9、对语料库进一步处理,得到新语料库
corpus = [dictionary.doc2bow(text) for text in texts]
# 10、将新语料库通过tf-idf model 进行处理,得到tfidf
tfidf = models.TfidfModel(corpus)
# 8、将要对比的文档通过doc2bow转化为稀疏向量
data3 = "基本思路 我 爱 北京 天安门"
new_xs = dictionary.doc2bow(data3.split())
print(new_xs)
featurenum = len(dictionary.token2id.keys())
#12、稀疏矩阵相似度,从而建立索引
index = similarities.SparseMatrixSimilarity(tfidf[corpus], num_features=featurenum)
#13、得到最终相似结果
sim = index[tfidf[new_xs]]
print(sim)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化