当前位置: 首页 > news >正文

文本处理基本方法

目录

分词

jieba 

词性标注


😆😆😆感谢大家观看😆😆😆

分词

在中文文本中,由于词与词之间没有明显的界限符,如英文中的空格,因此分词是中文自然语言处理的一个基础且重要的步骤。分词的准确性直接影响到后续的语言处理任务,如词性标注、句法分析等。在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符。分词过程就是找到这样分界符的过程。

分词的作用:

词作为语言语义理解的最小单元, 是人类理解文本语言的基础. 因此也是AI解决NLP领域高阶任务, 如自动问答, 机器翻译, 文本生成的重要基础环节。

  • 句子:“我爱自然语言处理。”
  • 分词结果:“我 / 爱 / 自然语言处理。”

在这个例子中,“自然语言处理”作为一个整体是一个专有名词,应该被识别为一个单独的词语,而不是分开为“自然”、“语言”和“处理”。 

  • 句子:“中国的首都北京是一个历史悠久的城市。”
  • 分词结果:“中国 / 的 / 首都 / 北京 / 是 / 一个 / 历史 / 悠久 / 的 / 城市。”

jieba 

jieba库利用一个中文词库来确定汉字之间的关联概率,通过这些概率来组合成词组,从而形成分词结果。除了基本的分词功能,jieba还支持关键词提取、词性标注、词位置查询等高级功能。用户可以向jieba库中添加自定义词组,以提高特定领域文本的分词准确性。jieba库考虑到了性能问题,支持并行分词,提高大规模文本处理的效率。这使得它成为当前Python语言中优秀的中文分词组件之一。

 jieba是一个强大的中文分词工具,它具备多种特性,适用于不同的分词需求三种分词模式

  • 精确模式:此模式能够精确地将文本分离开,不会产生冗余的词组。
  • 全模式:在全模式下,系统会扫描出文本中所有可能的词语,这可能会包含一些冗余的词汇。
  • 搜索引擎模式:这种模式是在精确模式的基础上,对长词进行再次切分,特别适用于搜索引擎中的分词处理。

pip install jieba 

import jieba

sentence = "我爱自然语言处理"
seg_list = jieba.cut(sentence, cut_all=False)
print("精确模式分词结果:", "/".join(seg_list))

 中文繁体分词:

import jieba
content = "煩惱即是菩提,我暫且不提"
jieba.lcut(content)
['煩惱', '即', '是', '菩提', ',', '我', '暫且', '不', '提']

 三种分词模式案例

  1. 精确模式:使用jieba.cut()函数,设置参数cut_all=False(默认值)。
import jieba

text = "我爱自然语言处理"
seg_list = jieba.cut(text, cut_all=False)
print("精确模式分词结果:", "/".join(seg_list))

2.全模式:使用jieba.cut()函数,设置参数cut_all=True

import jieba

text = "我爱自然语言处理"
seg_list = jieba.cut(text, cut_all=True)
print("全模式分词结果:", "/".join(seg_list))
  1. 3搜索引擎模式:使用jieba.cut_for_search()函数。
import jieba

text = "我爱自然语言处理"
seg_list = jieba.cut_for_search(text)
print("搜索引擎模式分词结果:", "/".join(seg_list))

使用jieba分词时,可以通过添加自定义词典来提高分词的准确性。

  1. 创建自定义词典文件:首先,创建一个文本文件,将需要添加到词典中的词汇按照每行一个词的格式列出。例如,如果你的专业领域有特殊术语或者你想加入人名、地名等,都可以在这个文件中添加。
  2. 加载自定义词典:在使用jieba分词时,可以通过jieba.load_userdict(file_name)函数加载自定义词典。这样,jieba在分词时就会自动识别并使用这些新词。
  3. 使用自定义词典进行分词:加载了自定义词典后,可以像平常一样使用jieba.cut函数进行分词,此时jieba会优先考虑自定义词典中的词汇。
import jieba

# 加载自定义词典
jieba.load_userdict('my_dict.txt')

# 使用自定义词典进行分词
sentence = "这是一个包含专业术语的句子"
seg_list = jieba.cut(sentence, cut_all=False)
print("使用自定义词典后的分词结果:", "/".join(seg_list))

命名实体识别

命名实体识别(Named Entity Recognition, NER)是自然语言处理(NLP)中的一项基础任务,它的目标是从文本中识别出具有特定意义的实体,并将这些实体分类到预定义的类别。

命名实体识别包括以下几个关键点:

  1. 边界识别:确定文本中实体的开始和结束位置。
  2. 类别识别:将识别出的实体归类到如人名、地名、组织名、时间表达式等类别中。
  3. 序列标注:命名实体识别属于序列标注任务,需要为文本中的每个词或字分配一个标签,以指示它是否属于某个命名实体以及它的类别。

词性标注

词性: 语言中对词的一种分类方法,以语法特征为主要依据、兼顾词汇意义对词进行划分的结果, 常见的词性有14种, 如: 名词, 动词, 形容词等。

 

我爱自然语言处理

==>

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

rr: 人称代词
v: 动词
n: 名词
vn: 动名词

词性标注以分词为基础, 是对文本语言的另一个角度的理解, 因此也常常成为AI解决NLP领域高阶任务的重要基础环节 。

要使用jieba进行中文词性标注,可以使用jieba.posseg模块:

import jieba.posseg as pseg

# 待分词的文本
text = "我爱自然语言处理"

# 使用jieba进行词性标注
words = pseg.cut(text)

# 输出每个词语及其词性
for word, flag in words:
    print(f"{word}({flag})", end=" ")

# 我(r) 爱(v) 自然语言处理(nz)

其中,"r"表示代词,"v"表示动词,"nz"表示其他专有名词。请注意,jieba的词性标注功能基于其内置的词典和规则,可能无法完全准确地标注所有词汇的词性。

相关文章:

  • 家具工厂5G智能制造数字孪生可视化平台,推进家具行业数字化转型
  • MySQL索引、事务、储存引擎
  • Python 常用内置函数详解(二):print()函数----打印输出
  • 【xr806开发板使用】连接wifi例程实现
  • js封装SDK 在VUE、小程序、公众号直接调用js调用后端接口(本文以vue项目为例)
  • Python深度学习之路:TensorFlow与PyTorch对比【第140篇—Python实现】
  • Android 开机启动的核心系统服务:你了解了吗?
  • Dubbo如何支持集群容错?有哪些集群容错模式?Dubbo的路由策略是怎样的?如何根据路由规则选择服务提供者?
  • Docker常用命令
  • Android学习使用GitLab(保姆级)
  • 算法沉淀——贪心算法四(leetcode真题剖析)
  • 【晴问算法】入门篇—贪心算法—区间不相交问题
  • 力扣由浅至深 每日一题.09 找出字符串中第一个匹配项的下标
  • 02分布式搜索引擎ES
  • Java与Go:对象
  • C++ UML类图
  • 开源表单设计器vue-form-design自动化校验实现原理
  • C#中右键通过listview来控制datagridview字段值的是否显示、显示顺序,并存储到XML中。
  • SQLiteC/C++接口详细介绍sqlite3_stmt类(二)
  • 解决Linux中Eclipse启动时找不到Java环境的问题
  • 巴西总统卢拉抵达北京
  • 巴基斯坦称回应挑衅,对印度发起军事行动
  • 心相印回应官方旗舰店客服辱骂消费者:正排查
  • 康子兴评《文明的追求》|野人脚印:鲁滨逊的恐惧与文明焦虑
  • 马克思主义理论研究教学名师系列访谈|董雅华:让学生感知马克思主义理论存在于社会生活中
  • 安徽六安原市长潘东旭,已任省市场监督管理局党组书记、局长