csdn博客推荐系统实战-6关键词提取-TF-IDF,TEXTRANK

2023-11-07 01:20

本文主要是介绍csdn博客推荐系统实战-6关键词提取-TF-IDF,TEXTRANK,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前面几篇写了相似度计算和话题模型,都是怎么找到相似的文章。2篇文章用各种方法向量化,然后余弦计算相似度,或者同在一个话题的2篇文章,把一整篇文章切成很多很多的词,有的模型或算法还要尽量在词多的情况下计算才准确。

人类有归纳总结的能力,看了一篇英超曼城对曼联比赛的报道,会总结几个出几个关键词,英超 曼联 曼城 得比,看了关键词就能知道这篇文章大概的内容,如果机器也能做到,那该多好啊!!!能,当然能,就是今天要介绍的关键词提取

关键词提取就是从文本里面把跟这篇文档意义最相关的一些词抽取出来。在文献检索领域,依然可以在论文中看到关键词这一项。
关键词还可以在文本聚类、分类、自动摘要等领域中有着重要的作用。比如在聚类时将关键词相似的几篇文档看成一个团簇,可以大大提高聚类算法的收敛速度;从某天所有的新闻中提取出这些新闻的关键词,就可以大致了解那天发生了什么事情;或者将某段时间内几个人的微博拼成一篇长文本,然后抽取关键词就可以知道他们主要在讨论什么话题。
算法上分为2种,有监督和无监督,有监督算法需要标注数据,人工成本很大,今天我主要说的是无监督算法。
无监督提取关键词算法有很多,今天讲TF-IDF,TEXTRANK提取关键词。

TF-IDF

前面我介绍过TF-IDF模型,怎么提取关键词呢?取整篇文章切词后TF-IDF值最高的N个词做为这篇文章的关键词!很简单吧,就是这么简单!。

1. 预处理,首先进行分词和词性标注,去掉停用词,将满足指定词性的词作为候选词;
2. 分别计算每个词的TF-IDF值;
3. 根据每个词的TF-IDF值降序排列,并输出指定个数的词汇作为可能的关键词;

TextRank

TextRank算法是由google的PageRank算法转化而来的。PR(PageRank简称,下同)算法简单点说2句话,一个网页被很多网页链接时,排名就好;排名高的网页权重更高一个网页的排名是由链接这个网页的数量及质量(排名的高低)决定的

PR公式


TextRank公式

TextRank中没有链接的概念,用窗口来代替链接的概念,窗口就是词距,一般取5,表示与某个词的词距不大于5的集合。

TF-IDF和TextRank算法原理都不难,也有很多实现,我这次主要用jieba来实现这2种算法。

代码见https://github.com/worry1613/csdn-blog-recommend/blob/master/code/keyword.py ,jupyter上也有,在jupyter目录下。我说一下最后的结论吧:
1.和文章作者人工写的标签相比,不管是TF-IDF,还是TEXTRANK提取关键词的效果都不好,达到我个人认为还行的标准的比例也就在10%左右,100篇也就有10篇左右用算法提取的关键词还行,如果是100W篇的话,能不能达到10%还未知。
2.算法提取的关键词中,有很少的词有意义,剩下的几个大部分都无意义。
3.英文词,甚至代码中的关键词被提取出来。

下面我取出了其中的一小部分,用户标签|| TF-IDF标签 || TEXTRANK标签。

internet  产品  apple  blackberry  nokia  服务器  ||PC Internet 2003 PDA Apple Intel 产品 iPod||市场 产品 领域 技术 应用 没有 设备 计算
读书  出版  教育  设计模式  语言  java  ||教材 书籍 教学 技术 课堂 学生 教科书 习题||教材 技术 书籍 学生 教学 方法 知识 市场
report  ||设置 LaTeX 0pt fancyhead renewcommand 页眉 字号 1ex||设置 显示 缩进 页脚 包来 纸张 习惯 字号
工作  企业应用  算法  申诉  微软  浏览器  ||项目 软件 队伍 领导 油田 分数 系统 考核||项目 队伍 领导 软件 油田 系统 企业 公司
腾讯  创业  qq  互联网  网络  游戏  ||腾讯 QQ OICQ MIH 移动梦网 马化腾 SP 服务||服务 业务 互联网 用户 注册 收入 移动梦网 游戏
医疗  服务器  技术人  网络  产品  internet  ||医院 信息系统 服务器 信息化 建设 医疗 系统 PC||医院 信息系统 系统 建设 信息化 医疗 服务器 网络
华为  工作  生活  报表  数据库  制造  ||干部 改进 流程 批判 自我 人均 管理 一定||干部 公司 管理 不能 流程 批判 改进 没有
创业  工作  生活  融资  平台  ||创业 软件产业 软件 软件业 几百万 成功 不是 一个||创业 软件 发展 过程 速度 产业 收入 政策
java  j2me  嵌入式  平台  j2se  linux  ||Java com http 嵌入式 java 程序 类别 sun||程序 平台 类别 执行 函式 装置 审核 预先
工作  审查  体育  招聘  活动  ||工作 职员 待遇 老板 了解 简历 能力 变动||工作 能力 实际 公司 没有 可能 变动 获得
constructor  os  class  c++  reference  library  ||Complex operator real imaginary const return ostream os||应该 函数 风格 成员 操作 内容 说明 翻译
function  class  iostream  string  struct  dependencies  ||include std class ostream 头文件 list private public||头文件 需要 代码 使用 程序 函数 成员 类型
c++  microsoft  游戏  语言  borland  pascal  ||50 C++ Kingofark PV Learning Points View kingofark||编程 观点 学习 简称
汇编  c++  语言  工作  c  ||kingofark 五评 推荐 学过 com impossible 一点点 本文||推荐 团体 技术 条款 初学者 个人 喜爱 学院
asp.net  web服务  button  textbox  asp  脚本编程语言  ||控件 Greeter Web NET aspx 页面 ASP Button||控件 页面 服务器端 生成 应用程序 文件 验证 数据
设计模式  java  出版  uml  读书  工具  ||乐趣 模式 读者 这本 设计模式 或许 入门 2003||模式 读者 设计模式 教材 作品 入门 没有 标题
applet  java  jdk  程序开发  网络  sun  ||保护 许可 线程 应用程序 一个 调用 系统 访问||保护 系统 访问 应用程序 线程 调用 可能 方法
url  applet  solaris  windows  java  扩展  ||java 许可 security FilePermission 文件 com home 策略||文件 策略 代码 属性 指定 密钥 入口 系统
classloader  applet  java  jdk  虚拟机  语言  ||装载 一个 Java 授权 子类 类时 AppletClassLoader 虚拟机||授权 使用 创建 可能 原始 提供 用户 运行
工具  jdk  java  applet  solaris  windows  ||storetype keystore 管理器 security Djava keytool storepass SecurityManager||工具 策略 使用 文件 管理器 证书 调用 用户
algorithm  算法  object  java  存储  string  ||GuardedObject 签字 Guard 对象 线程 访问控制 一个 SignedObject||对象 签字 线程 访问控制 消费者 方法 资源 获得
applet  jar  jdk  文档  java  加密  ||签字 子域 许可 一个 代码 密钥 com JAR||签字 使用 子域 保护 代码 概念 资源 认证
编程  语言  加密  工作  产品  c  ||程序员 程序 修养 编程 函数 我要 语句 一个||程序员 程序 修养 函数 进行 语句 编程 没有
语言  pascal  fortran  unix  scheme  c++  ||GDB 调试 language 命令 set 程序 Use 函数||命令 调试 程序 语言 函数 环境 执行 功能
就这样了?还能再提高一些成功率吗?我个人认为还是有可能的,那怎么做呢?

1.专业领域要有专业的关键词表,这样就不会把专业词分成几个普通词了。
2.停用词,太重要了,必须下功夫好好整理整理。
3.预处理太重要了,文章内包括有代码的,是不是要把代码分离出去,有英文翻译的,是不是要把英文分离出去,要保证语料库的质量,质量,质量!!!!

当然,提取关键词还有很多其它的算法,可以试试其它算法,或者是其它算法和以上2种算法的混合。
今天2种算法的测试都不成功,等以后有时间了,我再做更深一步的测试。

这篇关于csdn博客推荐系统实战-6关键词提取-TF-IDF,TEXTRANK的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Windows系统宽带限制如何解除?

《Windows系统宽带限制如何解除?》有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文就跟大家一起来看看Windows系统解除网络限制的操作方法吧... 有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

电脑找不到mfc90u.dll文件怎么办? 系统报错mfc90u.dll丢失修复的5种方案

《电脑找不到mfc90u.dll文件怎么办?系统报错mfc90u.dll丢失修复的5种方案》在我们日常使用电脑的过程中,可能会遇到一些软件或系统错误,其中之一就是mfc90u.dll丢失,那么,mf... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

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

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

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

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

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

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

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加