【NLP自然语言处理】文本处理的基本方法

简介: 【NLP自然语言处理】文本处理的基本方法

学习目标

🍀 了解什么是分词, 词性标注, 命名实体识别及其它们的作用.

🍀 掌握如何使用分词工具jieba

🍀 掌握分词, 词性标注, 命名实体识别流行工具的使用方法.

🍔什么是分词

  • 分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符, 分词过程就是找到这样分界符的过程.
  • 举个例子:

无线电法国别研究

['无线电法', '国别', '研究']

  • 分词的作用:
  • 词作为语言语义理解的最小单元, 是人类理解文本语言的基础. 因此也是AI解决NLP领域高阶任务, 如自动问答, 机器翻译, 文本生成的重要基础环节.
  • 流行中文分词工具jieba:
  • 愿景: “结巴”中文分词, 做最好的 Python 中文分词组件.

🍔中文分词工具jieba

jieba是一个流行的中文分词工具,它能够将一段中文文本切分成有意义的词语。jieba是目前Python中最常用的中文分词库之一,具有简单易用、高效准确的特点。

2.1 jieba的基本特点

高效性:jieba分词基于词典和概率模型,通过对文本进行扫描和统计,实现词汇的切分和标注,具有较高的分词效率。

准确性:jieba分词通过建立词典,为每个词语分配一个概率值,并通过计算相邻词语的联合概率来确定最可能的分词结果。同时,它还采用了隐马尔可夫模型(HMM)来处理一些特殊情况,如新词、未登录词等,提高了分词的准确性。

2.2 jieba的功能

分词:jieba提供了基本的分词功能,可以将中文文本切分成有意义的词语。

词性标注:jieba还提供了词性标注功能,可以对分词结果进行词性标注,帮助用户更好地理解文本内容。

关键词提取:jieba能够从一段文本中提取出最重要的关键词,这对于文本摘要、情感分析等任务非常有用。

实体识别:jieba还可以从文本中识别出人名、地名、组织机构等实体,这对于信息抽取等任务非常有帮助。

灵活性:jieba分词支持多种分词模式,包括精确模式、全模式和搜索引擎模式,以满足不同场景下的需求。此外,用户还可以通过添加自定义词典来指导分词器更好地处理特定词汇,提高分词的准确性。

2.3 jieba的安装及使用

jieba的安装:

pip install jieba
  • 精确模式分词:
  • 试图将句子最精确地切开,适合文本分析.
import jieba
content = "无线电法国别研究"
jieba.cut(content, cut_all=False)  # cut_all默认为False
# 将返回一个生成器对象
<generator object Tokenizer.cut at 0x7f065c19e318>
# 若需直接返回列表内容, 使用jieba.lcut即可
jieba.lcut(content, cut_all=False)
['无线电', '法国', '别', '研究']
  • 全模式分词:
  • 把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能消除歧义。
# 若需直接返回列表内容, 使用jieba.lcut即可
jieba.lcut(content, cut_all=True)
['无线', '无线电', '法国', '国别', '研究']
  • 搜索引擎模式分词:
  • 在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
import jieba
content = "无线电法国别研究"
jieba.cut_for_search(content)
# 将返回一个生成器对象
<generator object Tokenizer.cut at 0x7f065c19e318>
# 若需直接返回列表内容, 使用jieba.lcut_for_search即可
jieba.lcut_for_search(content)
['无线', '无线电', '法国', '别', '研究']
# 对'无线电'等较长词汇都进行了再次分词.
  • 中文繁体分词:
  • 针对中国香港, 台湾地区的繁体文本进行分词。
import jieba
content = "煩惱即是菩提,我暫且不提"
jieba.lcut(content)
['煩惱', '即', '是', '菩提', ',', '我', '暫且', '不', '提']
  • 使用用户自定义词典:
  • 添加自定义词典后, jieba能够准确识别词典中出现的词汇,提升整体的识别准确率。
  • 词典格式: 每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。
  • 词典样式如下, 具体词性含义请参照7 jieba词性对照表, 将该词典存为userdict.txt, 方便之后加载使用。
云计算 5 n
李小福 2 nr
easy_install 3 eng
好用 300
韩玉赏鉴 3 nz
八一双鹿 3 nz
import jieba
jieba.lcut("八一双鹿更名为八一南昌篮球队!")
# 没有使用用户自定义词典前的结果:
['八', '一双', '鹿', '更名', '为', '八一', '南昌', '篮球队', '!']
jieba.load_userdict("./userdict.txt")
# 使用了用户自定义词典后的结果:
['八一双鹿', '更名', '为', '八一', '南昌', '篮球队', '!']

🍔什么是命名实体识别

  • 命名实体: 通常我们将人名, 地名, 机构名等专有名词统称命名实体. 如: 周杰伦, 黑山县, 孔子学院, 24辊方钢矫直机.
  • 顾名思义, 命名实体识别(Named Entity Recognition,简称NER)就是识别出一段文本中可能存在的命名实体.
  • 举个例子:

鲁迅, 浙江绍兴人, 五四新文化运动的重要参与者, 代表作朝花夕拾.

==>

鲁迅(人名) / 浙江绍兴(地名)人 / 五四新文化运动(专有名词) / 重要参与者 / 代表作 / 朝花夕拾(专有名词)

 

  • 命名实体识别的作用:
  • 同词汇一样, 命名实体也是人类理解文本的基础单元, 因此也是AI解决NLP领域高阶任务的重要基础环节.

🍔什么是词性标注

  • 词性: 语言中对词的一种分类方法,以语法特征为主要依据、兼顾词汇意义对词进行划分的结果, 常见的词性有14种, 如: 名词, 动词, 形容词等.
  • 顾名思义, 词性标注(Part-Of-Speech tagging, 简称POS)就是标注出一段文本中每个词汇的词性.
  • 举个例子:

我爱自然语言处理

==>

我/rr, 爱/v, 自然语言/n, 处理/vn

rr: 人称代词

v: 动词

n: 名词

vn: 动名词

  • 词性标注的作用:
  • 词性标注以分词为基础, 是对文本语言的另一个角度的理解, 因此也常常成为AI解决NLP领域高阶任务的重要基础环节.
  • 使用jieba进行中文词性标注:
import jieba.posseg as pseg
pseg.lcut("我爱北京天安门") 
[pair('我', 'r'), pair('爱', 'v'), pair('北京', 'ns'), pair('天安门', 'ns')]
# 结果返回一个装有pair元组的列表, 每个pair元组中分别是词汇及其对应的词性, 具体词性含义请参照[附录: jieba词性对照表]()

🍔小结

  • 学习了什么是分词:
  • 分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符, 分词过程就是找到这样分界符的过程.
  • 学习了分词的作用:
  • 词作为语言语义理解的最小单元, 是人类理解文本语言的基础. 因此也是AI解决NLP领域高阶任务, 如自动问答, 机器翻译, 文本生成的重要基础环节.
  • 学习了流行中文分词工具jieba:
  • 支持多种分词模式: 精确模式, 全模式, 搜索引擎模式
  • 支持中文繁体分词
  • 支持用户自定义词典
  • 学习了jieba工具的安装和分词使用.
  • 学习了什么是命名实体识别:
  • 命名实体: 通常我们将人名, 地名, 机构名等专有名词统称命名实体. 如: 周杰伦, 黑山县, 孔子学院, 24辊方钢矫直机.
  • 顾名思义, 命名实体识别(Named Entity Recognition,简称NER)就是识别出一段文本中可能存在的命名实体.
  • 命名实体识别的作用:
  • 同词汇一样, 命名实体也是人类理解文本的基础单元, 因此也是AI解决NLP领域高阶任务的重要基础环节.
  • 学习了什么是词性标注:
  • 词性: 语言中对词的一种分类方法,以语法特征为主要依据、兼顾词汇意义对词进行划分的结果, 常见的词性有14种, 如: 名词, 动词, 形容词等.
  • 顾名思义, 词性标注(Part-Of-Speech tagging, 简称POS)就是标注出一段文本中每个词汇的词性.
  • 学习了词性标注的作用:
  • 词性标注以分词为基础, 是对文本语言的另一个角度的理解, 因此也常常成为AI解决NLP领域高阶任务的重要基础环节.
  • 学习了使用jieba进行词性标注.
相关文章
|
24天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
16天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
20天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2577 22
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
18天前
|
人工智能 IDE 程序员
期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟
在云栖大会上,阿里云云原生应用平台负责人丁宇宣布,「通义灵码」完成全面升级,并正式发布 AI 程序员。
|
3天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】
|
2天前
|
存储 人工智能 搜索推荐
数据治理,是时候打破刻板印象了
瓴羊智能数据建设与治理产品Datapin全面升级,可演进扩展的数据架构体系为企业数据治理预留发展空间,推出敏捷版用以解决企业数据量不大但需构建数据的场景问题,基于大模型打造的DataAgent更是为企业用好数据资产提供了便利。
163 2
|
20天前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1576 16
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
22天前
|
编解码 JSON 自然语言处理
通义千问重磅开源Qwen2.5,性能超越Llama
击败Meta,阿里Qwen2.5再登全球开源大模型王座
973 14
|
3天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
219 2
|
17天前
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
734 9