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

⽂本预处理(一)

1.1 认识⽂本预处理

学习⽬标

⽂本预处理及其作⽤

⽂本语料在输送给模型前⼀般需要⼀系列的预处理⼯作, 才能符合模型输⼊的要求, 如: 将⽂本转化成模型需要的张量, 规范张量的尺⼨等, ⽽且科学的⽂本预处理环节还将有效指导模型超参数的选择, 提升模型的评估指标.

⽂本预处理中包含的主要环节

  • ⽂本处理的基本⽅法
  • ⽂本张量表示⽅法
  • ⽂本语料的数据分析
  • ⽂本特征处理
  • 数据增强⽅法

⽂本处理的基本⽅法

  • 分词
  • 词性标注
  • 命名实体识别

⽂本张量表示⽅法

  • one-hot编码
  • Word2vec
  • Word Embedding

⽂本语料的数据分析

  • 标签数量分布
  • 句⼦⻓度分布
  • 词频统计与关键词词云

⽂本特征处理

  • 添加n-gram特征
  • ⽂本⻓度规范

数据增强⽅法

  • 回译数据增强法

重要说明

在实际⽣产应⽤中, 我们最常使⽤的两种语⾔是中⽂和英⽂, 因此, ⽂本预处理部分的内容都
将针对这两种语⾔进⾏讲解.

1.2 ⽂本处理的基本⽅法

学习⽬标

  • 了解什么是分词, 词性标注, 命名实体识别及其它们的作⽤.
  • 掌握分词, 词性标注, 命名实体识别流⾏⼯具的使⽤⽅法

什么是分词

分词就是将连续的字序列按照⼀定的规范重新组合成词序列的过程。我们知道,在英⽂的⾏⽂中,单词之间是以空格作为⾃然分界符的,⽽中⽂只是字、句和段能通过明显的分界符来简单划界,唯独词没有⼀个形式上的分界符, 分词过程就是找到这样分界符的过程.
举个例子:
⼯信处⼥⼲事每⽉经过下属科室都要亲⼝交代24⼝交换机等技术性器件的安装⼯作
==> 
['⼯信处', '⼥⼲事', '每⽉', '经过', '下属', '科室', '都', '要', '亲⼝', '交代','24', '⼝', '交换机', '等', '技术性', '器件', '的', '安装', '⼯作']

分词的作⽤:

词作为语⾔语义理解的最⼩单元, 是⼈类理解⽂本语⾔的基础. 因此也是AI解决NLP领域⾼阶任务, 如⾃动问答, 机器翻译, ⽂本⽣成的重要基础环节.

流⾏中⽂分词⼯具jieba:

愿景: “结巴”中⽂分词, 做最好的 Python 中⽂分词组件.

jieba的特性:

  • ⽀持多种分词模式
  • 1.精确模式
  • 2.全模式
  • 3.搜索引擎模式
  • ⽀持中⽂繁体分词
  • ⽀持⽤户⾃定义词典

jieba的安装:

pip install jieba

jieba的使⽤:

  • 精确模式分词:
    • 试图将句⼦最精确地切开,适合⽂本分析.
    • jieba.lcut(content) 默认精确模式
    • jieba.lcut(content, cut_all=False)
>>> import jieba
>>> content = "⼯信处⼥⼲事每⽉经过下属科室都要亲⼝交代24⼝交换机等技术性器件的安装⼯作"
>>> jieba.cut(content, cut_all=False) # cut_all默认为False
# 将返回⼀个⽣成器对象
<generator object Tokenizer.cut at 0x7f065c19e318># 若需直接返回列表内容, 使⽤jieba.lcut即可
>>> jieba.lcut(content, cut_all=False)
['⼯信处', '⼥⼲事', '每⽉', '经过', '下属', '科室', '都', '要', '亲⼝', '交代',
'24', '⼝', '交换机', '等', '技术性', '器件', '的', '安装', '⼯作']

  • 全模式分词:
    • 把句⼦中所有的可以成词的词语都扫描出来, 速度⾮常快,但是不能消除 歧义.
    • jieba.cut(content, cut_all=True) # cut_all默认为False
>>> import jieba
>>> content = "⼯信处⼥⼲事每⽉经过下属科室都要亲⼝交代24⼝交换机等技术性器件的安装⼯作"
>>> jieba.cut(content, cut_all=True) # cut_all默认为False
# 将返回⼀个⽣成器对象
<generator object Tokenizer.cut at 0x7f065c19e318>
# 若需直接返回列表内容, 使⽤jieba.lcut即可
>>> jieba.lcut(content, cut_all=True)
['⼯信处', '处⼥', '⼥⼲事', '⼲事', '每⽉', '⽉经', '经过', '下属', '科室', '都',
'要', '亲⼝', '⼝交', '交代', '24', '⼝交', '交换', '交换机', '换机', '等', '技
术', '技术性', '性器', '器件', '的', '安装', '安装⼯', '装⼯', '⼯作']

  • 搜索引擎模式分词:
    • 精确模式的基础上,对⻓词再次切分,提⾼召回率,适合⽤于搜索引擎分词.
    • jieba.lcut_for_search(content)
>>> import jieba
>>> content = "⼯信处⼥⼲事每⽉经过下属科室都要亲⼝交代24⼝交换机等技术性器件的安装⼯作"
>>> jieba.cut_for_search(content)
# 将返回⼀个⽣成器对象
<generator object Tokenizer.cut at 0x7f065c19e318>
# 若需直接返回列表内容, 使⽤jieba.lcut_for_search即可
>>> jieba.lcut_for_search(content)
['⼯信处', '⼲事', '⼥⼲事', '每⽉', '经过', '下属', '科室', '都', '要', '亲⼝',
'交代', '24', '⼝', '交换', '换机', '交换机', '等', '技术', '技术性', '器件',
'的', '安装', '⼯作']
# 对'⼥⼲事', '交换机'等较⻓词汇都进⾏了再次分词.

  • 中⽂繁体分词:
    • 针对中国⾹港, 台湾地区的繁体⽂本进⾏分词.
>>> import jieba
>>> content = "煩惱即是菩提,我暫且不提"
>>> jieba.lcut(content)
['煩惱', '即', '是', '菩提', ',', '我', '暫且', '不', '提']

  • 使⽤⽤户⾃定义词典:
    • 添加⾃定义词典后, jieba能够准确识别词典中出现的词汇,提升整体的识别准确率.
    • 词典格式: 每⼀⾏分三部分:词语、词频(可省略)、词性(可省略),⽤空格隔开,顺序不可颠倒.
    • 词典样式如下, 具体词性含义请参照附录: 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")
>>> jieba.lcut("⼋⼀双⿅更名为⼋⼀南昌篮球队!")
# 使⽤了⽤户⾃定义词典后的结果:
['⼋⼀双⿅', '更名', '为', '⼋⼀', '南昌', '篮球队', '!']

什么是命名实体识别

命名实体: 通常我们将⼈名, 地名, 机构名等专有名词统称命名实体. 如: 周杰伦, ⿊⼭县, 孔⼦学院, 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:
  • ⽀持多种分词模式: 精确模式, 全模式, 搜索引擎模式
  • ⽀持中⽂繁体分词
  • ⽀持⽤户⾃定义词典
http://www.dtcms.com/a/279743.html

相关文章:

  • volatile 关键字
  • Codeforces Round 787 (Div. 3)(A,B,C,D,E,F,G)
  • DO,VO,DTO.....
  • (二十四)-java+ selenium自动化测试-三大延时等待
  • UI前端与数字孪生融合案例:智慧城市的智慧停车引导系统
  • 苍穹外卖Day4
  • JavaScript进阶篇——第二章 高级特性核心
  • vue笔记4 vue3核心语法和pinia基础使用
  • 【leetcode】326. 3的幂
  • VSCode中使用容器及容器编排docker-compose
  • L1与L2正则化详解:原理、API使用与实践指南
  • FastAPI + gRPC 全栈实践:Windows 开发到 Ubuntu 部署全指南
  • JVM监控及诊断工具-命令行篇
  • ubuntu 22.04 anaconda comfyui安装
  • 8.数据库索引
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘collections’问题
  • WIFI MTU含义 ,协商修改的过程案例分析
  • ansys2021R Fluent 的UDF配置问题
  • 开疆智能EtherCAT转CANopen网关连接磁导航传感器配置案例
  • 《美术教育研究》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • Python项目中Protocol Buffers的应用示例
  • MySQL Innodb Cluster介绍
  • 零基础 “入坑” Java--- 十一、多态
  • Spring Boot + Vue2 实现腾讯云 COS 文件上传:从零搭建分片上传系统
  • 并发编程核心概念详解:进程、线程与协程的本质与差异
  • 解锁HTTP:从理论到实战的奇妙之旅
  • Windows系统使用docker部署项目(有网与离线)
  • LeetCode--45.跳跃游戏 II
  • 破局与重构:文心大模型开源的产业变革密码
  • 北京饮马河科技公司 Java 实习面经