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

相关文章

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

Python实现常用文本内容提取

《Python实现常用文本内容提取》在日常工作和学习中,我们经常需要从PDF、Word文档中提取文本,本文将介绍如何使用Python编写一个文本内容提取工具,有需要的小伙伴可以参考下... 目录一、引言二、文本内容提取的原理三、文本内容提取的设计四、文本内容提取的实现五、完整代码示例一、引言在日常工作和学

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕

C++字符串提取和分割的多种方法

《C++字符串提取和分割的多种方法》在C++编程中,字符串处理是一个常见的任务,尤其是在需要从字符串中提取特定数据时,本文将详细探讨如何使用C++标准库中的工具来提取和分割字符串,并分析不同方法的适用... 目录1. 字符串提取的基本方法1.1 使用 std::istringstream 和 >> 操作符示

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并