入门
自然语言处理应用场景:
语音助手
机器翻译
搜索引擎
智能问答(AI客服)
推荐系统
文本预处理主要环节:
文本处理的基本方法
词向量表示方法
文本语料的数据分析
文本特征处理
数据增强方法
文本语料在输送给模型前一般需要一系列的预处理工作, 才能符合模型输入的要求, 如: 将文本转化成模型需要的张量, 规范张量的尺寸等, 而且科学的文本预处理环节还将有效指导模型超参数的选择, 提升模型的评估指标
流行的中英文分词工具hanlp:
中英文NLP处理工具包, 基于tensorflow2.0, 使用在学术界和行业中推广最先进的深度学习技术
命名实体识别
命名实体: 通常我们将人名, 地名, 机构名等专有名词统称命名实体.
顾名思义,命名实体识别(Named Entity Recognition,简称NER)就是识别出一段文本中可能存在的命名实体.
命名实体识别的作用
命名实体识别的任务就是识别出文本中三大类(实体类、时间类和数字类)、七小类(人名、机构名、地名、时间、日期、货币和百分比)命名实体
同词汇一样, 命名实体也是人类理解文本的基础单元, 因此也是AI解决NLP领域高阶任务的重要基础环节.
使用hanlp进行中文命名实体识别
>>> import hanlp # 加载中文命名实体识别的预训练模型MSRA_NER_BERT_BASE_ZH
>>> recognizer = hanlp.load(hanlp.pretrained.ner.MSRA_NER_BERT_BASE_ZH)
>>> recognizer(list('上海华安工业(集团)公司董事长谭旭光和秘书张晚霞来到美国纽约现代艺术博物馆参观。’))
[('上海华安工业(集团)公司', 'NT', 0, 12), ('谭旭光', 'NR', 15, 18), ('张晚霞', 'NR', 21, 24), ('美国', 'NS', 26, 28), ('纽约现代艺术博物馆', 'NS', 28, 37)]
返回结果是一个装有n个元组的列表, 每个元组代表一个命名实体, 元组中的每一项分别代表具体的命名实体, 如: ‘上海华安工业(集团)公司’; 命名实体的类型, 如: ‘NT’-机构名; 命名实体的开始索引和结束索引, 如: 0, 12.
词性标注
词性: 语言中对词的一种分类方法,以语法特征为主要依据、兼顾词汇意义对词进行划分的结果, 常见的词性有14种, 如: 名词, 动词, 形容词等.
顾名思义, 词性标注(Part-Of-Speech tagging, 简称POS)就是标注出一段文本中每个词汇的词性
eg。
我爱自然语言处理
==>
我/rr,
爱/v,
自然语言/n,
处理/vn
rr: 人称代词 v: 动词 n: 名词 vn: 动名词
使用jieba进行中文词性标注
>>> import jieba.posseg as pseg
>>> pseg.lcut("我爱北京天安门")
[pair('我', 'r'), pair('爱', 'v'), pair('北京', 'ns'), pair('天安门', 'ns’)]
# 结果返回一个装有pair元组的列表, 每个pair元组中分别是词汇及其对应的词性, 具体词性含义请参照[附录: jieba词性对照表]()
什么是文本张量表示
将一段文本使用张量进行表示,其中一般将词汇为表示成向量,称作词向量,再由各个词向量按顺序组成矩阵形成文本表示.
[“人生”, “该”, “如何”, “奋斗"]
==> # 每个词对应矩阵中的一个向量
[[1.32, 4,32, 0,32, 5.2], [3.1, 5.43, 0.34, 3.2],
[3.21, 5.32, 2, 4.32], [2.54, 7.32, 5.12, 9.54]]
文本张量表示的作用
将文本表示成张量(矩阵)形式,能够使语言文本可以作为计算机处理程序的输入,进行接下来一系列的解析工作.
文本张量表示的方法
one-hot编码
Word2Vec(CBOW和Skip-Gram)
Glove
One-hot编码
又称独热编码,将每个词表示成具有n个元素的向量,这个词向量中只有一个元素是1,其他元素都是0,不同词汇元素为0的位置不同,其中n的大小是整个语料中不同词汇的总数.
One-hot编码优劣
优势:操作简单,容易理解.
劣势:完全割裂了词与词之间的联系,而且在大语料集下,每个向量的长度过大,占据大量内存
词嵌入(Word Embedding)
用低维向量表示一个词,使得相似意义的词向量距离相近,同时又能避免维度过高的问题。
核心思想:根据词语的上下文来计算词向量,一个词的语义是由它周围的词决定的。
词嵌入是自然语言处理的重要突破之一。
比如在一个文本中包含“猫”“狗”“爱情”等若干单词,而这若干单词映射到向量空间中,“猫”对应的向量为(0.1 0.2 0.3),“狗”对应的向量为(0.2 0.2 0.4),“爱情”对应的映射为(-0.4 -0.5 -0.2),这个映射的过程就叫做词嵌入。
通过词嵌入这种方式将单词转变为词向量,机器便可对单词进行计算,通过计算不同词向量之间夹角余弦值cosine而得出单词之间的相似性。
如: v(“国王”)-v(“男人”)+v(“女人”)≈v(“女王”)