文章目录
- 1 认识文本预处理
- 1 文本预处理及其作用
- 2. 文本预处理中包含的主要环节
- 2.1 文本处理的基本方法
- 2.2 文本张量表示方法
- 2.3 文本语料的数据分析
- 2.4 文本特征处理
- 2.5数据增强方法
- 2.6 重要说明
- 2 文本处理的基本方法
- 1. 什么是分词
- 2 什么是命名实体识别
- 3 什么是词性标注¶
1 认识文本预处理
1 文本预处理及其作用
- 文本语料在输送给模型钱一般需要一系列的预处理工作才能符合模型输入的要求,
- 如将文本转化成模型需要的张量, 规范张量的尺寸等, 而且科学的文本预处理环节还将有效的指导模型超参数的选择 提升模型的评估指标
2. 文本预处理中包含的主要环节
- 文本处理的基本方法
- 文本张量表示方法
- 文本语料的数据分析
- 文本特征处理
- 数据增强方法
2.1 文本处理的基本方法
- 分词
- 词性标注
- 命名实体识别
2.2 文本张量表示方法
- one_hot编码
- Word2vec
- Word Embedding
2.3 文本语料的数据分析
- 标签数量分布
- 句子长度分布
- 词频统计与关键词词云
2.4 文本特征处理
- 添加n-gram特征
- 文本长度规范
2.5数据增强方法
- 回译数据增强法
2.6 重要说明
- 在实际生产应用中 我们最长使用的两种语言是中文和英文 因此文本预处理部分的内容都将都将针对于这两种语言进行
2 文本处理的基本方法
1. 什么是分词
-
分词就是将连续的字序列按照一定的规范重新组合成次序列的过程 在英文的行文中 单词是以空格作为自然分界符的 而中文只是字、句、段能通过明显的分解符来简单划界 唯独词没有一个形式上的分界符 分词的过程就是找到这样分界符的过程
-
举个例子
我爱我们的国家,我爱北京
[‘我’,‘爱’,‘我们’,‘的’,‘国家’,‘,’,‘我’,‘爱’,‘北京’] -
分词的作用
- 词作为语言语义理解的最小单元 是人类理解文本语言的基础 因此也是AI解决NLP领域高阶任务 如自动问答 机器翻译 文本生成的重要基础环节
- 人们中文分词工具jieba:
- 愿景 ‘结巴’ 中文分词 做最好的Python中文分词组件
- jieba的特性
- 支持多种分词模式
- 精确模式
- 全模式
- 搜索引擎模式
- 支持中文繁体分词
- 支持用户自定义词典
- 支持多种分词模式
- jieba的安装
pip install jieba - jieba的使用
- 精确模式分词
- 试图将句子最精确的切开 适合文本分析
import jieba
content = "我爱北京天安门"
# 精确模型:试图将句子最精确地切开,适合文本分析。也属于默认模式
jieba.cut(content, cut_all=False) # cut_all默认为False# 将返回一个生成器对象# 若需直接返回列表内容, 使用jieba.lcut即可
jieba.lcut(content, cut_all=False)
['我','爱','北京','天安门']# 若需直接返回列表内容, 使用jieba.lcut即可
jieba.lcut(content, cut_all=True)
# 注意1:人工智能全模型分成三个词
# 注意2:逗号和句号也给分成了词jieba.cut_for_search(content)# 若需直接返回列表内容, 使用jieba.lcut_for_search即可
jieba.lcut_for_search(content)# 对'无线电'等较长词汇都进行了再次分词.
中文繁体分词:
针对中国香港, 台湾地区的繁体文本进行分词。
import jieba
content = "煩惱即是菩提,我暫且不提"
jieba.lcut(content)
['煩惱', '即', '是', '菩提', ',', '我', '暫且', '不', '提']
使用用户自定义词典:
添加自定义词典后, jieba能够准确识别词典中出现的词汇,提升整体的识别准确率。
词典格式: 每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。
词典样式如下, 具体词性含义请参照7 jieba词性对照表, 将该词典存为userdict.txt, 方便之后加载使用。
文件# 格式:word1 freq1 word_type1
爱北 5 nz
import jiebasentence = '我爱北京天安门。'
# 1 没有使用用户自定义词典
mydata = jieba.lcut(sentence, cut_all=False)
print('mydata-->', mydata)# 2 使用用户自定义词典
jieba.load_userdict("./userdict.txt")
mydata2 = jieba.lcut(sentence, cut_all=False)
print('mydata2-->', mydata2)
2 什么是命名实体识别
命名实体: 通常我们将人名, 地名, 机构名等专有名词统称命名实体. 如: 周杰伦, 黑山县, 孔子学院, 24辊方钢矫直机.
顾名思义, 命名实体识别(Named Entity Recognition,简称NER)就是识别出一段文本中可能存在的命名实体.
举个例子:
鲁迅, 浙江绍兴人, 五四新文化运动的重要参与者, 代表作朝花夕拾.
==>
鲁迅(人名) / 浙江绍兴(地名)人 / 五四新文化运动(专有名词) / 重要参与者 / 代表作 / 朝花夕拾(专有名词)
命名实体识别的作用:
同词汇一样, 命名实体也是人类理解文本的基础单元, 因此也是AI解决NLP领域高阶任务的重要基础环节
3 什么是词性标注¶
词性: 语言中对词的一种分类方法,以语法特征为主要依据、兼顾词汇意义对词进行划分的结果, 常见的词性有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词性对照表
- jieba词性对照表:
- a 形容词 - ad 副形词 - ag 形容词性语素 - an 名形词
- b 区别词
- c 连词
- d 副词 - df - dg 副语素
- e 叹词
- f 方位词
- g 语素
- h 前接成分
- i 成语
- j 简称略称
- k 后接成分
- l 习用语
- m 数词 - mg - mq 数量词
- n 名词 - ng 名词性语素 - nr 人名 - nrfg - nrt - ns 地名 - nt 机构团体名 - nz 其他专名
- o 拟声词
- p 介词
- q 量词
- r 代词 - rg 代词性语素 - rr 人称代词 - rz 指示代词
- s 处所词
- t 时间词 - tg 时语素
- u 助词 - ud 结构助词 得- ug 时态助词- uj 结构助词 的- ul 时态助词 了- uv 结构助词 地- uz 时态助词 着
- v 动词 - vd 副动词- vg 动词性语素 - vi 不及物动词 - vn 名动词 - vq
- x 非语素词
- y 语气词
- z 状态词 - zg
- hanlp词性对照表:
【Proper Noun——NR,专有名词】【Temporal Noun——NT,时间名词】【Localizer——LC,定位词】如“内”,“左右”【Pronoun——PN,代词】【Determiner——DT,限定词】如“这”,“全体”【Cardinal Number——CD,量词】【Ordinal Number——OD,次序词】如“第三十一”【Measure word——M,单位词】如“杯”【Verb:VA,VC,VE,VV,动词】【Adverb:AD,副词】如“近”,“极大”【Preposition:P,介词】如“随着”【Subordinating conjunctions:CS,从属连词】【Conjuctions:CC,连词】如“和”【Particle:DEC,DEG,DEV,DER,AS,SP,ETC,MSP,小品词】如“的话”【Interjections:IJ,感叹词】如“哈”【onomatopoeia:ON,拟声词】如“哗啦啦”【Other Noun-modifier:JJ】如“发稿/JJ 时间/NN”【Punctuation:PU,标点符号】【Foreign word:FW,外国词语】如“OK