用TF-IDF算法提取中文文档关键词、词云展示文章内容

本文主要是介绍用TF-IDF算法提取中文文档关键词、词云展示文章内容,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       先使用jieba进行文档内容的分词处理,再利用TfidfVectorizer进行 tf-idf的计算,最后在根据其值进行排序,最后输出排行前十的关键词。

相关原理介绍请参考:文本关键词提取(TF与TF-IDF)-CountVectorizer()和TfidfVectorizer()

#coding:utf-8
from sklearn.feature_extraction.text import CountVectorizer,TfidfVectorizer
import jiebatext = """
"1月29日,货拉拉开始与武汉的连锁便利店Today合作,为武汉40多家医院免费运送餐食。如有战,召必回,我从那天开始随时待命。后来我加入了货拉拉武汉爱心司机支援群,现在志愿司机已经108人了。 我每天早上六点多钟起床,从家里到取餐地黄陂再到协和医院,需在武汉跨越几个区。早上要预留两三个小时来应对限行和出餐点排队轮候、拥堵的问题。为医院运送完餐食后,我还要去运送别的物资。运送的第一批救援物资是给同济医院的防护服,最远是给孝感的医院送防护服。平均每天要跑2-3趟,有时跑4-5趟。没地方吃午饭,想吃泡面也没开水,中午只能吃点饼干。但是我知道,怎么也不能让一线的战士饿着肚子打仗,我早到一点,医院的人就能早些吃到饭菜。我是个人司机,武汉禁行,我本来是不能私下参与运送物资的。货拉拉负责与政府部门沟通,拿到配送通行证,然后将配送任务派发给我们,我们这些司机就根据订单需要去完成定向的物资配送。图 /视觉中国 我的家人都在武汉,还有一个小孙女。为了做好自我防护,我每天都穿防护服,车上备着酒精和消毒水,车辆每天消毒2到3次。数不清每天洗多少次手,只知道手都洗得开裂了。我还在车上放了一个睡袋,我跟家里人说,如果自己被感染,就睡车上,不回家了。 我觉得一线的医护人员才是真正的战士,不能让他们饿着肚子。所以即便在春节假期,我也一直在一线工作,在现场配送物资。即便是封城了,我们也要去做点什么,没有理由退缩。"
"""
sentences = text.split()
sent_words = [list(jieba.cut(sent0)) for sent0 in sentences]
document = [" ".join(sent0) for sent0 in sent_words]
print('词料:', document)tfidf_model = TfidfVectorizer().fit(document)
# 得到语料库所有不重复的词
feature = tfidf_model.get_feature_names()
print(feature)
# ['一切', '一条', '便是', '全宇宙', '天狗', '日来', '星球']
# 得到每个特征对应的id值:即上面数组的下标
print(tfidf_model.vocabulary_)
# {'一条': 1, '天狗': 4, '日来': 5, '一切': 0, '星球': 6, '全宇宙': 3, '便是': 2}# 每一行中的指定特征的tf-idf值:
sparse_result = tfidf_model.transform(document)
# print(sparse_result)# 每一个语料中包含的各个特征值的tf-idf值:
# 每一行代表一个预料,每一列代表这一行代表的语料中包含这个词的tf-idf值,不包含则为空
weight = sparse_result.toarray()# 构建词与tf-idf的字典:
feature_TFIDF = {}
for i in range(len(weight)):for j in range(len(feature)):# print(feature[j], weight[i][j])if feature[j] not in feature_TFIDF:feature_TFIDF[feature[j]] = weight[i][j]else:feature_TFIDF[feature[j]] = max(feature_TFIDF[feature[j]], weight[i][j])
# print(feature_TFIDF)
# 按值排序:
print('TF-IDF 排名前十的:')
featureList = sorted(feature_TFIDF.items(), key=lambda kv: (kv[1], kv[0]), reverse=True)
for i in range(1, 10 if len(featureList) > 10 else len(featureList)):print(featureList[i][0], featureList[i][1])'''
词云展示
'''
from wordcloud import WordCloud
from scipy.misc import imread# 整理文本:
# words = '一切 一条 便是 全宇宙 天狗 日来 星球' # 样例
words = document[0]
# print(words)
# 设置显示的形状图片:
b_mask = imread('./image/ciyun.webp')
# 绘制词图:
wc = WordCloud(background_color="white", #背景颜色max_words=2000, #显示最大词数font_path="./image/simkai.ttf",  #使用字体# min_font_size=5,# max_font_size=80, # 最大字体# width=400,  #图幅宽度mask=b_mask   #显示的形状图片
)
wc.generate(words)
# 准备一个写入的背景图片
wc.to_file("./image/beijing_2.jpg")

输出结果:
词料: ['" 1 月 29 日 , 货 拉拉 开始 与 武汉 的 连锁 便利店 Today 合作 , 为 武汉 40 多家 医院 免费 运送 餐食 。 如有战 , 召必回 , 我 从 那天 开始 随时 待命 。 后来 我 加入 了 货 拉拉 武汉 爱心 司机 支援 群 , 现在 志愿 司机 已经 108 人 了 。', '我 每天 早上 六点 多 钟 起床 , 从 家里 到 取餐 地 黄陂 再 到 协和医院 , 需在 武汉 跨越 几个 区 。 早上 要 预留 两三个 小时 来 应对 限行 和 出 餐点 排队 轮候 、 拥堵 的 问题 。 为 医院 运送 完 餐食 后 , 我 还要 去 运送 别的 物资 。 运送 的 第一批 救援 物资 是 给 同济 医院 的 防护服 , 最远 是 给 孝感 的 医院 送 防护服 。 平均 每天 要 跑 2 - 3 趟 , 有时 跑 4 - 5 趟 。 没 地方 吃 午饭 , 想 吃 泡面 也 没 开水 , 中午 只能 吃点 饼干 。 但是 我 知道 , 怎么 也 不能 让 一线 的 战士 饿着肚子 打仗 , 我 早到 一点 , 医院 的 人 就 能 早些 吃 到 饭菜 。 我 是 个人 司机 , 武汉 禁行 , 我 本来 是 不能 私下 参与 运送 物资 的 。 货 拉拉 负责 与 政府部门 沟通 , 拿到 配送 通行证 , 然后 将 配送 任务 派 发给 我们 , 我们 这些 司机 就 根据 订单 需要 去 完成 定向 的 物资 配送 。 图', '/ 视觉 中国', '我 的 家人 都 在 武汉 , 还有 一个 小孙女 。 为了 做好 自我 防护 , 我 每天 都 穿 防护服 , 车上 备着 酒精 和 消毒水 , 车辆 每天 消毒 2 到 3 次 。 数不清 每天 洗 多少 次手 , 只 知道 手 都 洗 得 开裂 了 。 我 还 在 车上 放 了 一个 睡袋 , 我 跟 家里人 说 , 如果 自己 被 感染 , 就 睡 车上 , 不 回家 了 。', '我 觉得 一线 的 医护人员 才 是 真正 的 战士 , 不能 让 他们 饿着肚子 。 所以 即便 在 春节假期 , 我 也 一直 在 一线 工作 , 在 现场 配送 物资 。 即便 是 封城 了 , 我们 也 要 去 做点 什么 , 没有 理由 退缩 。 "']
['108', '29', '40', 'today', '一个', '一点', '一直', '一线', '不能', '两三个', '个人', '中午', '中国', '为了', '什么', '他们', '任务', '但是', '便利店', '做好', '做点', '免费', '六点', '几个', '别的', '加入', '医护人员', '医院', '午饭', '协和医院', '即便', '参与', '发给', '取餐', '只能', '召必回', '司机', '吃点', '合作', '同济', '后来', '回家', '地方', '备着', '多家', '多少', '如有战', '如果', '孝感', '完成', '定向', '家人', '家里', '家里人', '封城', '小孙女', '小时', '工作', '已经', '平均', '应对', '开始', '开水', '开裂', '待命', '志愿', '怎么', '感染', '我们', '战士', '所以', '打仗', '拉拉', '拥堵', '拿到', '排队', '支援', '政府部门', '救援', '数不清', '早上', '早些', '早到', '春节假期', '最远', '有时', '本来', '根据', '次手', '武汉', '每天', '沟通', '没有', '泡面', '消毒', '消毒水', '然后', '爱心', '物资', '现在', '现场', '理由', '真正', '睡袋', '知道', '禁行', '私下', '第一批', '自己', '自我', '视觉', '觉得', '订单', '负责', '起床', '跨越', '车上', '车辆', '轮候', '运送', '还有', '还要', '这些', '连锁', '退缩', '通行证', '那天', '配送', '酒精', '问题', '防护', '防护服', '限行', '随时', '需在', '需要', '预留', '餐点', '餐食', '饭菜', '饼干', '饿着肚子', '黄陂']
{'29': 1, '拉拉': 72, '开始': 61, '武汉': 89, '连锁': 123, '便利店': 18, 'today': 3, '合作': 38, '40': 2, '多家': 44, '医院': 27, '免费': 21, '运送': 119, '餐食': 138, '如有战': 46, '召必回': 35, '那天': 126, '随时': 133, '待命': 64, '后来': 40, '加入': 25, '爱心': 97, '司机': 36, '支援': 76, '现在': 99, '志愿': 65, '已经': 58, '108': 0, '每天': 90, '早上': 80, '六点': 22, '起床': 114, '家里': 52, '取餐': 33, '黄陂': 142, '协和医院': 29, '需在': 134, '跨越': 115, '几个': 23, '预留': 136, '两三个': 9, '小时': 56, '应对': 60, '限行': 132, '餐点': 137, '排队': 75, '轮候': 118, '拥堵': 73, '问题': 129, '还要': 121, '别的': 24, '物资': 98, '第一批': 107, '救援': 78, '同济': 39, '防护服': 131, '最远': 84, '孝感': 48, '平均': 59, '有时': 85, '地方': 42, '午饭': 28, '泡面': 93, '开水': 62, '中午': 11, '只能': 34, '吃点': 37, '饼干': 140, '但是': 17, '知道': 104, '怎么': 66, '不能': 8, '一线': 7, '战士': 69, '饿着肚子': 141, '打仗': 71, '早到': 82, '一点': 5, '早些': 81, '饭菜': 139, '个人': 10, '禁行': 105, '本来': 86, '私下': 106, '参与': 31, '负责': 113, '政府部门': 77, '沟通': 91, '拿到': 74, '配送': 127, '通行证': 125, '然后': 96, '任务': 16, '发给': 32, '我们': 68, '这些': 122, '根据': 87, '订单': 112, '需要': 135, '完成': 49, '定向': 50, '视觉': 110, '中国': 12, '家人': 51, '还有': 120, '一个': 4, '小孙女': 55, '为了': 13, '做好': 19, '自我': 109, '防护': 130, '车上': 116, '备着': 43, '酒精': 128, '消毒水': 95, '车辆': 117, '消毒': 94, '数不清': 79, '多少': 45, '次手': 88, '开裂': 63, '睡袋': 103, '家里人': 53, '如果': 47, '自己': 108, '感染': 67, '回家': 41, '觉得': 111, '医护人员': 26, '真正': 102, '他们': 15, '所以': 70, '即便': 30, '春节假期': 83, '一直': 6, '工作': 57, '现场': 100, '封城': 54, '做点': 20, '什么': 14, '没有': 92, '理由': 101, '退缩': 124}
TF-IDF 排名前十的:
中国 0.7071067811865475
车上 0.4595922221621456
即便 0.3959878948353881
每天 0.3707961110124713
武汉 0.3339447507363904
开始 0.3324263991986453
一线 0.31948054021065436
一个 0.30639481477476377
运送 0.2923903495520924

这篇关于用TF-IDF算法提取中文文档关键词、词云展示文章内容的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/712465

相关文章

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

Python实现word文档内容智能提取以及合成

《Python实现word文档内容智能提取以及合成》这篇文章主要为大家详细介绍了如何使用Python实现从10个左右的docx文档中抽取内容,再调整语言风格后生成新的文档,感兴趣的小伙伴可以了解一下... 目录核心思路技术路径实现步骤阶段一:准备工作阶段二:内容提取 (python 脚本)阶段三:语言风格调

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使