Python机器学习NLP自然语言处理基本操作关键词
作者:我是小白呀 发布时间:2023-11-09 05:51:31
概述
从今天开始我们将开启一段自然语言处理 (NLP) 的旅程. 自然语言处理可以让来处理, 理解, 以及运用人类的语言, 实现机器语言和人类语言之间的沟通桥梁.
关键词
关键词 (keywords), 即关键词语. 关键词能描述文章的本质, 在文献检索, 自动文摘, 文本聚类 / 分类等方面有着重要的应用.
关键词抽取的方法
关键词提取: 针对新文档, 通过算法分析. 提取文档中一些词语作为该文档的关键词
关键词分配: 给定已有的关键词库, 对于新来的文档从该词库里面分配几个词语作为这篇文档的关键词
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 关键词抽取
格式:
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 | 未知词 |
不带关键词权重
例子:
import jieba.analyse
# 定义文本
text = "自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。" \
"它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。" \
"自然语言处理是一门融语言学、计算机科学、数学于一体的科学。" \
"因此,这一领域的研究将涉及自然语言,即人们日常使用的语言," \
"所以它与语言学的研究有着密切的联系,但又有重要的区别。" \
"自然语言处理并不是一般地研究自然语言," \
"而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。" \
"因而它是计算机科学的一部分"
# 提取关键词
keywords = jieba.analyse.extract_tags(text, topK=20, withWeight=False)
# 调试输出
print([i for i in keywords])
输出结果:
Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\Windows\AppData\Local\Temp\jieba.cache
Loading model cost 0.890 seconds.
Prefix dict has been built successfully.
['自然语言', '计算机科学', '语言学', '研究', '领域', '处理', '通信', '有效', '软件系统', '人工智能', '实现', '计算机系统', '重要', '一体', '一门', '日常', '计算机', '密切', '数学', '研制']
附带关键词权重
import jieba.analyse
# 定义文本
content = "自然语言处理是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言处理包括多方面和步骤,基本有认知、理解、生成等部分。"
# 定义文本
text = "自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。" \
"它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。" \
"自然语言处理是一门融语言学、计算机科学、数学于一体的科学。" \
"因此,这一领域的研究将涉及自然语言,即人们日常使用的语言," \
"所以它与语言学的研究有着密切的联系,但又有重要的区别。" \
"自然语言处理并不是一般地研究自然语言," \
"而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。" \
"因而它是计算机科学的一部分"
# 提取关键词 (带权重)
keywords = jieba.analyse.extract_tags(text, topK=20, withWeight=True)
# 调试输出
print([i for i in keywords])
输出结果:
Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\Windows\AppData\Local\Temp\jieba.cache
Loading model cost 1.110 seconds.
Prefix dict has been built successfully.
[('自然语言', 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值即可得到关键词.
import jieba.analyse
# 定义文本
content = "自然语言处理是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言处理包括多方面和步骤,基本有认知、理解、生成等部分。"
# 定义文本
text = "自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。" \
"它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。" \
"自然语言处理是一门融语言学、计算机科学、数学于一体的科学。" \
"因此,这一领域的研究将涉及自然语言,即人们日常使用的语言," \
"所以它与语言学的研究有着密切的联系,但又有重要的区别。" \
"自然语言处理并不是一般地研究自然语言," \
"而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。" \
"因而它是计算机科学的一部分"
# TextRank提取关键词
keywords = jieba.analyse.textrank(text, topK=20, withWeight=False)
# 调试输出
print([i for i in keywords])
调试输出:
Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\Windows\AppData\Local\Temp\jieba.cache
['研究', '领域', '计算机科学', '实现', '处理', '语言学', '数学', '人们', '计算机', '涉及', '有着', '一体', '方法', '语言', '研制', '使用', '人工智能', '在于', '联系', '科学']
Loading model cost 1.062 seconds.
Prefix dict has been built successfully.
以上就是Python机器学习NLP自然语言处理基本操作关键词的详细内容.
来源:https://blog.csdn.net/weixin_46274168/article/details/120111925


猜你喜欢
- Python字符串模糊匹配Python的difflib库中get_close_matches方法包含四个参数x:被匹配的字符串。words:
- 问题你想重新加载已经加载的模块,因为你对其源码进行了修改。解决方案使用imp.reload()来重新加载先前加载的模块。举个例子:>&
- 本文实例讲述了mysql中GROUP_CONCAT的使用方法。分享给大家供大家参考,具体如下:现在有三个表,结构如下:cate表:CREAT
- DQN算法是DeepMind团队提出的一种深度强化学习算法,在许多电动游戏中达到人类玩家甚至超越人类玩家的水准,本文就带领大家了解一下这个算
- 本文实例为大家分享了vue中使用svg封装全局消息提示组件的具体代码,供大家参考,具体内容如下先看效果图一、首先安装下载需要用到的svg相关
- Oracle游标分为显示游标和隐式游标。显示游标(Explicit Cursor):在PL/SQL程序中定义的、用于查询的游标称作显示游标。
- Pytorch把Tensor转化成图像可视化在调试程序的时候经常想把tensor可视化成来看看,可以这样操作:from torchvisio
- 1. 梯度 * 的影响在一个只有一个隐藏节点的网络中,损失函数和权值w偏置b构成error surface,其中有一堵墙,如下所示损失函数每次
- 平常的开发过程中不免遇到需要把model转成字典的需求,尤其是现在流行前后端分离架构,Json格式几乎成了前后端之间数据交换的标准,这种mo
- 一 导入 pymongofrom pymongo import MongoClient二 连接服务器 端口号 27017连接MongoDB连
- 我就废话不多说了,直接上代码吧!import subprocessdef excuteCommand(com): ex = subproce
- 在进行大量数据训练神经网络的时候,可能需要批量读取数据。于是参考了这篇文章的代码,结果发现数据一直批量循环输出,不会在数据的末尾自动停止。然
- 记住:这时候08安装的时候要自定义一个实例 比如:mysql2008(不能在使用默认实例了) sql server 2008 express
- 如下所示:# -*- coding: utf-8 -*-import numpy as npfrom PyQt5.QtCore import
- MNIST 数据集介绍MNIST 包含 0~9 的手写数字, 共有 60000 个训练集和 10000 个测试集. 数据的格式为单通道 28
- 一、多表查询多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间
- 阅读上一篇:[译]Javascript风格要素(一) 我们使用习惯用法可以使我们的意图更加的清晰和简洁。使用==时,当心强制转换考虑下面函数
- 绘制直线图,确定x范围和y的范围代码:import matplotlib.pyplot as pltimport numpy as npxp
- 首先看一下目标的验证形态是什么样子的是一种通过验证推理的验证方式,用来防人机破解的确是很有效果,但是,But,这里面已经会有一些破绽,比如:
- GROUP BY 是分组查询, 一般 GROUP BY 是和 聚合函数配合使用,你可以想想你用了GROUP BY 按