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

相关文章

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

macOS彻底卸载Python的超完整指南(推荐!)

《macOS彻底卸载Python的超完整指南(推荐!)》随着python解释器的不断更新升级和项目开发需要,有时候会需要升级或者降级系统中的python的版本,系统中留存的Pytho版本如果没有卸载干... 目录MACOS 彻底卸载 python 的完整指南重要警告卸载前检查卸载方法(按安装方式)1. 卸载

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

Oracle Scheduler任务故障诊断方法实战指南

《OracleScheduler任务故障诊断方法实战指南》Oracle数据库作为企业级应用中最常用的关系型数据库管理系统之一,偶尔会遇到各种故障和问题,:本文主要介绍OracleSchedul... 目录前言一、故障场景:当定时任务突然“消失”二、基础环境诊断:搭建“全局视角”1. 数据库实例与PDB状态2

Git进行版本控制的实战指南

《Git进行版本控制的实战指南》Git是一种分布式版本控制系统,广泛应用于软件开发中,它可以记录和管理项目的历史修改,并支持多人协作开发,通过Git,开发者可以轻松地跟踪代码变更、合并分支、回退版本等... 目录一、Git核心概念解析二、环境搭建与配置1. 安装Git(Windows示例)2. 基础配置(必

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版