600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Python 使用tf-idf算法计算文档关键字权重 并生成词云

Python 使用tf-idf算法计算文档关键字权重 并生成词云

时间:2018-08-29 09:55:09

相关推荐

Python 使用tf-idf算法计算文档关键字权重 并生成词云

Python 使用tf-idf算法计算文档关键字权重,并生成词云

作者:虚坏叔叔

博客:

早餐店不会开到晚上,想吃的人早就来了!😄

1. 根据tf-idf计算一个文档的关键词或者短语:

代码如下:

注意需要安装pip install sklean

from re import splitfrom jieba.posseg import dtfrom sklearn.feature_extraction.text import TfidfVectorizerfrom collections import Counterfrom time import timeimport jieba#pip install skleanFLAGS = set('a an b f i j l n nr nrfg nrt ns nt nz s t v vi vn z eng'.split())def cut(text):for sentence in split('[^a-zA-Z0-9\u4e00-\u9fa5]+', text.strip()):for w in dt.cut(sentence):if len(w.word) > 2 and w.flag in FLAGS:yield w.wordclass TFIDF:def __init__(self, idf):self.idf = idf@classmethoddef train(cls, texts):model = TfidfVectorizer(tokenizer=cut)model.fit(texts)idf = {w: model.idf_[i] for w, i in model.vocabulary_.items()}return cls(idf)def get_idf(self, word):return self.idf.get(word, max(self.idf.values()))def extract(self, text, top_n=10):counter = Counter()for w in cut(text):counter[w] += self.get_idf(w)#return [i[0:2] for i in counter.most_common(top_n)]return [i[0] for i in counter.most_common(top_n)]if __name__ == '__main__':t0 = time()with open('./nlp-homework.txt', encoding='utf-8')as f:_texts = f.read().strip().split('\n')# print(_texts)tfidf = TFIDF.train(_texts)# print(_texts)for _text in _texts:seq_list=jieba.cut(_text,cut_all=True) #全模式# seq_list=jieba.cut(_text,cut_all=False) #精确模式# seq_list=jieba.cut_for_search(_text,) #搜索引擎模式# print(list(seq_list))print(tfidf.extract(_text))with open('./resultciyun.txt','a+', encoding='utf-8') as g:for i in tfidf.extract(_text):g.write(str(i) + " ")print(time() - t0)

2. 生成词云:

代码如下:

注意需要安装pip install wordcloud;以及为了保证中文字体正常显示,需要下载SimSun.ttf字体,并且将这个字体包也放在和程序相同的目录下;

from wordcloud import WordCloudfilename = "resultciyun.txt"with open(filename) as f:resultciyun = f.read()wordcloud = WordCloud(font_path="simsun.ttf").generate(resultciyun)# %pylab inlineimport matplotlib.pyplot as pltplt.imshow(wordcloud, interpolation='bilinear')plt.axis("off")plt.show()

3 最后词云的图片

总结

最后的最后

由本人水平所限,难免有错误以及不足之处, 屏幕前的靓仔靓女们 如有发现,恳请指出!

最后,谢谢你看到这里,谢谢你认真对待我的努力,希望这篇博客对你有所帮助!

你轻轻地点了个赞,那将在我的心里世界增添一颗明亮而耀眼的星!

💬 往期优质文章分享

C++ QT结合FFmpeg实战开发视频播放器-01环境的安装和项目部署解决QT问题:运行qmake:Project ERROR: Cannot run compiler ‘cl‘. Output:解决安装QT后MSVC 64bit配置无编译器和调试器问题Qt中的套件提示no complier set in kit和no debugger,出现黄色感叹号问题解决(MSVC)Python+selenium 自动化 - 实现自动导入、上传外部文件(不弹出windows窗口)

🚀 优质教程分享 🚀

🎄如果感觉文章看完了不过瘾,可以来我的其他 专栏 看一下哦~🎄比如以下几个专栏:Python实战微信订餐小程序、Python量化交易实战、C++ QT实战类项目 和 算法学习专栏🎄可以学习更多的关于C++/Python的相关内容哦!直接点击下面颜色字体就可以跳转啦!

🚀 资料白嫖,温馨提示🚀

关注下面卡片即刻获取更多编程知识,包括各种语言学习资料,上千套PPT模板和各种游戏源码素材等等资料。更多内容可自行查看哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。