自然语言基础之分词提取关键词基本操作

news2025/1/24 5:44:25

概述

从今天开始我们将开启一段自然语言处理 (NLP) 的旅程. 自然语言处理可以让来处理, 理解, 以及运用人类的语言, 实现机器语言和人类语言之间的沟通桥梁.

在这里插入图片描述

关键词

关键词 (keywords), 即关键词语. 关键词能描述文章的本质, 在文献检索, 自动文摘, 文本聚类 / 分类等方面有着重要的应用.

在这里插入图片描述

关键词抽取的方法

  1. 关键词提取: 针对新文档, 通过算法分析. 提取文档中一些词语作为该文档的关键词
  2. 关键词分配: 给定已有的关键词库, 对于新来的文档从该词库里面分配几个词语作为这篇文档的关键词

    TF-IDF 关键词提取

    TF-IDF (Term Frequency-Inverse Document Frequency), 即词频-逆文件频率是一种用于信息检索与数据挖掘的常用加权技术. TF-IDF 可以帮助我们挖掘文章中的关键词. 通过数值统计, 反映一个词对于语料库中某篇文章的重要性.

TF

TF (Term Frequency), 即词频. 表示词在文本中出现的频率.

公式:
在这里插入图片描述

IDF

IDF (Inverse Document Frequency), 即逆文档频率. 表示语料库中包含词的文档的数目的倒数.

公式:
在这里插入图片描述

TF-IDF

公式:
在这里插入图片描述

TF-IDF = (词的频率 / 句子总字数) × (总文档数 / 包含该词的文档数)

如果一个词非常常见, 那么 IDF 就会很低, 反之就会很高. TF-IDF 可以帮助我们过滤常见词语, 提取关键词.

jieba TF-IDF 关键词抽取

格式:

 
  1. jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())

参数:

  • sentence: 待提取的文本语料
  • topK: 返回的关键词个数, 默认为 20
  • withWeight: 是否需要返回关键词权重, 默认为 False
  • allowPOS: 仅包括指定词性的词, 默认为空, 即不筛选

jieba 词性

编号词性描述
Ag形语素形容词性语素。形容词代码为 a,语素代码g前面置以A。
a形容词取英语形容词 adjective的第1个字母。
ad副形词直接作状语的形容词。形容词代码 a和副词代码d并在一起。
an名形词具有名词功能的形容词。形容词代码 a和名词代码n并在一起。
b区别词取汉字“别”的声母。
c连词取英语连词 conjunction的第1个字母。
dg副语素副词性语素。副词代码为 d,语素代码g前面置以D。
d副词取 adverb的第2个字母,因其第1个字母已用于形容词。
e叹词取英语叹词 exclamation的第1个字母。
f方位词取汉字“方”
g语素绝大多数语素都能作为合成词的“词根”,取汉字“根”的声母。
h前接成分取英语 head的第1个字母。
i成语取英语成语 idiom的第1个字母。
j简称略语取汉字“简”的声母。
k后接成分
l习用语习用语尚未成为成语,有点“临时性”,取“临”的声母。
m数词取英语 numeral的第3个字母,n,u已有他用。
Ng名语素名词性语素。名词代码为 n,语素代码g前面置以N。
n名词取英语名词 noun的第1个字母。
nr人名名词代码 n和“人(ren)”的声母并在一起。
ns地名名词代码 n和处所词代码s并在一起。
nt机构团体“团”的声母为 t,名词代码n和t并在一起。
nz其他专名“专”的声母的第 1个字母为z,名词代码n和z并在一起。
o拟声词取英语拟声词 onomatopoeia的第1个字母。
p介词取英语介词 prepositional的第1个字母。
q量词取英语 quantity的第1个字母。
r代词取英语代词 pronoun的第2个字母,因p已用于介词。
s处所词取英语 space的第1个字母。
tg时语素时间词性语素。时间词代码为 t,在语素的代码g前面置以T。
t时间词取英语 time的第1个字母。
u助词取英语助词 auxiliary
vg动语素动词性语素。动词代码为 v。在语素的代码g前面置以V。
v动词取英语动词 verb的第一个字母。
vd副动词直接作状语的动词。动词和副词的代码并在一起。
vn名动词指具有名词功能的动词。动词和名词的代码并在一起。
w标点符号
x非语素字非语素字只是一个符号,字母 x通常用于代表未知数、符号。
y语气词取汉字“语”的声母。
z状态词取汉字“状”的声母的前一个字母。
un未知词

不带关键词权重

例子:

 
  1. import jieba.analyse
  2. # 定义文本
  3. text = "自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。" \
  4. "它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。" \
  5. "自然语言处理是一门融语言学、计算机科学、数学于一体的科学。" \
  6. "因此,这一领域的研究将涉及自然语言,即人们日常使用的语言," \
  7. "所以它与语言学的研究有着密切的联系,但又有重要的区别。" \
  8. "自然语言处理并不是一般地研究自然语言," \
  9. "而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。" \
  10. "因而它是计算机科学的一部分"
  11. # 提取关键词
  12. keywords = jieba.analyse.extract_tags(text, topK=20, withWeight=False)
  13. # 调试输出
  14. print([i for i in keywords])

输出结果:

 
  1. Building prefix dict from the default dictionary ...
  2. Loading model from cache C:\Users\Windows\AppData\Local\Temp\jieba.cache
  3. Loading model cost 0.890 seconds.
  4. Prefix dict has been built successfully.
  5. ['自然语言', '计算机科学', '语言学', '研究', '领域', '处理', '通信', '有效', '软件系统', '人工智能', '实现', '计算机系统', '重要', '一体', '一门', '日常', '计算机', '密切', '数学', '研制']

附带关键词权重

 
  1. import jieba.analyse
  2. # 定义文本
  3. content = "自然语言处理是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言处理包括多方面和步骤,基本有认知、理解、生成等部分。"
  4. # 定义文本
  5. text = "自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。" \
  6. "它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。" \
  7. "自然语言处理是一门融语言学、计算机科学、数学于一体的科学。" \
  8. "因此,这一领域的研究将涉及自然语言,即人们日常使用的语言," \
  9. "所以它与语言学的研究有着密切的联系,但又有重要的区别。" \
  10. "自然语言处理并不是一般地研究自然语言," \
  11. "而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。" \
  12. "因而它是计算机科学的一部分"
  13. # 提取关键词 (带权重)
  14. keywords = jieba.analyse.extract_tags(text, topK=20, withWeight=True)
  15. # 调试输出
  16. print([i for i in keywords])

输出结果:

 
  1. Building prefix dict from the default dictionary ...
  2. Loading model from cache C:\Users\Windows\AppData\Local\Temp\jieba.cache
  3. Loading model cost 1.110 seconds.
  4. Prefix dict has been built successfully.
  5. [('自然语言', 1.1237629576061539), ('计算机科学', 0.4503481350267692), ('语言学', 0.27566262244215384), ('研究', 0.2660770221507693), ('领域', 0.24979825580353845), ('处理', 0.24973179957046154), ('通信', 0.2043557391963077), ('有效', 0.16296019853692306), ('软件系统', 0.16102600688461538), ('人工智能', 0.14550809839215384), ('实现', 0.14389939312584615), ('计算机系统', 0.1402028601413846), ('重要', 0.12347581087876922), ('一体', 0.11349408224353846), ('一门', 0.11300493477184616), ('日常', 0.10913612756276922), ('计算机', 0.1046889912443077), ('密切', 0.10181409957492307), ('数学', 0.10166677655076924), ('研制', 0.09868653898630769)]

TextRank

TextRank 通过词之间的相邻关系构建网络,然后用PageRank 迭代计算每个节点的 rank 值. 排序 rank值即可得到关键词.

 
  1. import jieba.analyse
  2. # 定义文本
  3. content = "自然语言处理是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言处理包括多方面和步骤,基本有认知、理解、生成等部分。"
  4. # 定义文本
  5. text = "自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。" \
  6. "它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。" \
  7. "自然语言处理是一门融语言学、计算机科学、数学于一体的科学。" \
  8. "因此,这一领域的研究将涉及自然语言,即人们日常使用的语言," \
  9. "所以它与语言学的研究有着密切的联系,但又有重要的区别。" \
  10. "自然语言处理并不是一般地研究自然语言," \
  11. "而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。" \
  12. "因而它是计算机科学的一部分"
  13. # TextRank提取关键词
  14. keywords = jieba.analyse.textrank(text, topK=20, withWeight=False)
  15. # 调试输出
  16. print([i for i in keywords])

调试输出:

 
  1. Building prefix dict from the default dictionary ...
  2. Loading model from cache C:\Users\Windows\AppData\Local\Temp\jieba.cache
  3. ['研究', '领域', '计算机科学', '实现', '处理', '语言学', '数学', '人们', '计算机', '涉及', '有着', '一体', '方法', '语言', '研制', '使用', '人工智能', '在于', '联系', '科学']
  4. Loading model cost 1.062 seconds.
  5. Prefix dict has been built successfully.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/105200.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我发现,被裁的一般都是情商低的人!网友:老板只看你有没有利用价值!

什么样的人容易被裁员?一位网友分享了自己的发现:被裁的一般都是情商比较低的。有人认同楼主,情商高能在一定程度上降低被裁的概率,大多数被裁的员工是因为情商不够,导致人际关系不好,才被辞退。有人说&…

JS如何读取对象内的一个属性两种方法

目录一:读取对象内的一个属性--可以用数组二:读取对象内的一个属性--可以用 .1、点的方式2、中括号的方式一:读取对象内的一个属性–可以用数组 二:读取对象内的一个属性–可以用 . let obj {name:张三,age:18,address:中国}1、…

【PAT甲级 - C++题解】1067 Sort with Swap(0, i)

✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📚专栏地址:PAT题解集合 📝原题地址:题目详情 - 1067 Sort with Swap(0, i) (pintia.cn) 🔑中文翻译:用 Swap(0, i) 操作…

【关于时间序列的ML】项目 3 :基于机器学习的地震预测模型

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

Datawhale powerful-numpy《从小白到入门》学习笔记

Datawhale powerful-numpy《从小白到入门》学习笔记 持续更新中 文章目录Datawhale powerful-numpy《从小白到入门》学习笔记摘自官方文档的一些话What is NumPy?Why is NumPy Fast?Who Else Uses NumPy?一.创建和生成1.从python列表或元组创建从列表创建从元组创建2.使用ar…

基于ISO13209(OTX)实现引导诊断

在上篇文章《基于ISO13209(OTX)实现EOL下线序列》中,讲到了OTX的由来以及OTX在EOL中的实现案例,而本文将讲述OTX的另一个广阔应用场景——定义引导诊断序列。 一 何为引导诊断? 引导诊断,通常也称为“引导…

市面上有哪些自动生成报表的工具?

每到月末、季度、年底,就是企业里各营销、财务、运营、企管等各部门“摆数据、晒业绩”的时候,除了财务因为有规范的制度约束,在规则和工具上更有保障(最常见的就是在财务软件/ERP 里面自动生成三大周报)之外&#xff…

GoPass系列免杀基础(一)

Goby社区第 23 篇插件分享文章 全文共:7730 字 预计阅读时间:20 分钟 小板凳提示:过数字全家桶(开启晶核)、某绒、卡巴、WD、某管家、魔法保姆、机器人、橘子,全程新手简单版,欢迎师傅们来交流…

一个被迫毕业面试 30 家公司,终于上岸了的Java老前辈的经验分享!

今天分享一个朋友的经历,被“毕业”后的求职经历: 在老东家干了 6 年,发展一般,很想出去,但是一直没有合适的机会,只好一边准备面试一边学习。让我没有想到的是,突然收到了“毕业”通知&#x…

大数据Kudu(十):Flink操作Kudu

文章目录 Flink操作Kudu Flink操作Kudu Flink主要应用场景是流式数据处理上,有些公司针对流式数据使用Flink实时分析后将结果存入Kudu,例如快手公司。这里将实时计算的结果存入Kudu需要自定义Flink Kudu Sink。 场景:Flink实时读取Socket数据,将结果存入Kudu表t_flink_re…

详解OpenCV的椭圆绘制函数ellipse()

函数ellipse()用于在图像上绘制椭圆。 有两种原型,这里只列出常用的那种。 C原型如下: void cv::ellipse(InputOutputArray img,Point center,Size axes,double angle,double startAngle,double endAngle,const Scalar & color,int thickness 1,…

地统计插值学习心得(三)ArcGIS Pro与ArcMap软件中地统计分析的区别

前言 ArcMap中地统计分析由来已久,很多GIS专业的同学学习地统计内容都是在ArcMap软件中实现的,随着IT技术的发展,ArcGIS系列软件架构也发生了重大变化,传统的ArcMap软件已不太能够满足当前的应用需求,在此背景下,ESRI推出了64位的ArcGIS Pro桌面软件,来实现二三维一体化…

【关于时间序列的ML】项目 4 :使用机器学习预测迁移

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

【关于2022年卡塔尔世界杯】

2022卡塔尔世界杯最全面的看点和分析,相信一定有你感兴趣的一点,相信一定会有你感兴趣的,推荐点赞收藏~~ 2022年世界杯比以往任何时候都晚,因为卡塔尔太热了…… 然而,四年一度的世界杯终于……来了 今年的世界杯&am…

非零基础自学Golang 第14章 反射 14.1 反射定义

非零基础自学Golang 文章目录非零基础自学Golang第14章 反射14.1 反射定义14.1.1 反射的定义14.1.2 与其他语言的区别第14章 反射 我们常用的一个打印函数fmt.Println()可以打印任何类型的数据,但是它本身是怎么实现的呢? 解读源码可以看到&#xff0c…

人员定位系统如何实现对人、车、物的安全管控?

人员定位系统是采用物联网设计理念,通过结合定位基站、视频监控、人脸抓拍、巡更、门禁、道闸、梯控等系统,对管控区域工作人员、访客、巡检人员进行精细化、规范化、智能化理。 智慧安全的概念随着物联网技术的发展逐渐成为发展趋势,人员定位…

【Python机器学习】卷积神经网络Vgg19模型预测动物类别实战(附源码和数据集)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 典型神经网络 在深度学习的发展过程中,出现了很多经典的卷积神经网络,它们对深度学习的学术研究和工业生产斗起到了促进的作用,如VGG ResNet Inception DenseNet等等,很多实际…

偷偷告诉你!与其辞职,不如用Python做月入过万的副业兼职

我想辞职! 这是不是当下的你?在这个疫情当下的时代,许多打工人都有过这么一个想法,或许是因为工作待遇、亦或许是其他原因,但是却仍然屹立在工位上,有的甚至天天喊辞职,月月拿满勤。这是为什么…

阿里大牛解析微服务架构:Docker,Spring全家桶,分布式,数据库

前言 微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的类上应用很多SOLID原则。微服务架构是个很有趣的概念,它的…

【愚公系列】2022年12月 使用Jenkins实现程序的自动化发布

文章目录前言一、使用Jenkins实现程序的自动化发布1.安装Jenkins二、安装Gitee插件前言 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进…