nlp基础知识总结

nlp基础知识总结

声明:本次主要为各种网上查找的知识总结,主要来源于百度百科、csdn博客、知乎。如侵删

本次总结的知识分为两大类:nlp基础知识、文本匹配、常用特征提取方式

nlp基础知识

主要了解了下nlp的常用术语、常用训练流程、常用技术。

分词

语句是字的连续序列,分词是把句子分隔成连续的词序列。分词的原因:现代汉语继承于古汉语,古汉语中每个字是一个词,没得形式上的分界符;现代汉语中有很大双字词或多字词,如果不分词,机器理解语句困难。

当前三大类分词算法:字符匹配、理解法(试验阶段)、统计法

字符匹配:速度快、需要存储、对歧义词和未登录词处理能力差

理解法:模拟人对句子的理解,在分词时利用语法句法分析处理歧义词。还在实验阶段

统计法:相邻出现的频率越高,成为词的概率越大,本质上就是概率最大化问题。容易提取出“我的“等高频词组,影响分词效果。优点:容易发现新词。常用模型:n-gram、HMM、CRF

目前多是字符匹配发现常用词,统计法发现新词,两者结合使用。

技术难点:歧义识别、新词发现(主要是命名实体、人名、专业术语等未登录词。如果把未未登录词做成词典,成本高,很可能收益低)

常用工具:jieba分词,其他未使用过的分词见https://blog.csdn.net/wauwa/article/details/7865526
几种开源分词工具的比较

https://blog.csdn.net/sunfoot001/article/details/51523741 常用的开源中文分词工具

词性标注

将词按照词义和上下文信息做标记的处理技术。子中的每个词的词性也影响句子的语义。故仍然需要给词标注词性。可以人工标记和算法标记。

主要应用场景:①,词义消歧,例如book名词的意思为书,动词的意思为预约。②改进词性特征;③,归一化、词元化;④有效地去除停用词

常用的算法:隐马尔可夫模型、条件随机场、RNN,改进的SVM等。

技术难点:一词多词性(多词性概率高达22.5%)、未登录词处理(只能通过统计算法来获取)

算法分为两大类:字典查找法、统计模型标注

jieba分词通过字典查找法和统计算法来共同提高分词和词性标注的准确率。

jieba分词流程:初始化词典、正则分割语句;遍历语句list,对每个语句单独做分词和词性标注;使用HMM处理未登录词。

文本分类

文本分类流程和普通的模型分类相似。大体流程为:预处理、特征工程、建模。区别主要在于预处理和特征工程上。

文本预处理

分词、去停用词、词性标注。

去停用词:有很多功能词、副词、形容词等对于理解语义基本无帮助,故为了降低运算复杂度、存储压力需要把这些词去除。相当于普通机器学习建模中某个特征只有一个特征值,则这个特征对建模无用,反而降低运算效率,甚至可能造成干扰。

特征工程

这里就是和普通分类建模的主要区别。

提取特征方式主要有:

l 对出现的词构建one-hot。极其稀疏、存储压力大、计算复杂度高;未考虑词之间的相似性;丢失词出现的先后顺序信息。

l N-gram:核心思想是当前词出现概率只有他的前n个词有关。优点:简单直观,能学习出一些关键词与分类结果的关系。缺点:词只考虑了前向存在的关系,存在与后向词的关系;n越大参数越多,计算复杂度增加;未考虑词之间的语义联系

l Tf-idf:词的出现频率和词出现的文档数的函数。考虑了词的重要性,简单快速。缺点:单纯认为词出现的频率越高,重要性越高,但有的时候重要词出现次数并不多;idf中计算出现词出现的文档在如下情况会乏力:文档严重过时、文档过热(例如对于任务型问答系统,某个明星、歌、电影最近火爆,几乎文档都有,idf接近于0)

l 词嵌入:相当于学习词的特征。代表有word2vec、Glove、各类语言神经网络模型作为最后一层输入的向量。优点:获得的词向量特征空间小,存储压力低、运算复杂度低;相近的词在特征空间中相近。缺点:在长文本上仍然存在信息丢失的问题。

l 端到端的神经网络:CNN善于捕捉局部信息、RNN善于捕捉上下文信息并有记忆能力。例如孪生网络、esim、biLSTM等。暂时能想到的缺点:运算复杂度高、容易过拟合等等深度神经网络模型的通病

l 基于任务理解的特征抽取。暂时想不到问答系统能用到的地方。

l 特征融合:这个和普通的特征工程一致

l 主题特征:提取的语句的主题(LDA)、提取潜在语义(LSA)。

建模

普通的传统分类模型都可以尝试

常用的神经网络模型:

l fastText模型:两层神经网络,在隐藏层把所有的词向量进行平均,然后sotmax求出概率。和cbow在结构上基本一样,但cbow是预测中间词,fastText是预测语句的标签。

优点:1、适合大型数据+高效的训练速度

2、构造的词向量性能优于word2vec,在许多标准问题上实现当下最好的表现

  缺点:fastText 中的网络结果是完全没有考虑词序信息的

l TextCNN:利用CNN来提取句子中类似 n-gram 的关键信息。卷积神经网络就是提取局部特征的。但是仍然会忽略词的顺序信息;最大问题是固定 filter_size 的视野,一方面无法建模更长的序列信息,另一方面 filter_size
的超参调节也很繁琐。

l TextRNN:循环神经网络可以提取句子的上下文信息。处理长句乏力。不过任务型对话系统以处理短文本居多

l TextRNN + Attention:注意力机制增加了记忆能力、能处理更长的文本。但是运算复杂度高、参数增加

l TextRCNN(TextRNN + CNN):词的表示变为[词向量,前向上下文、后向上下文],获得上下文后连接卷积神经网络。ESIM就是此类。

任务型对话系统

主要模型有两类:pipeline、end-to-end

Pipeline:语义理解、对话管理、自然语义生成

语义理解:把语句映射为intent和slots。

以后可以深入研究的模型参考:https://blog.csdn.net/fkyyly/article/details/83791833

文本匹配

这里是综述:参考文章https://blog.csdn.net/ling620/article/details/95468908#21__9
文章2 https://blog.csdn.net/ling620/article/details/95468908#21__9
传统的文本匹配技术:BoW、VSM、TF-IDF、 BM25、Jaccord、SimHash、LD、LCS

主题模型:LSA、pLSA、LDA。这些技术对文本的语义表示形式简洁、运算方便,较好地弥补了传统词汇匹配方法的不足。

深度语义匹配模型:本质都是基于共现信息的训练。Word Embedding本身没有解决短语、句子的语义表示问题,也没有解决匹配的非对称性问题。一般来说,深度文本匹配模型分为两种类型:
表示型和交互型。

表示型; 经典模型有:DSSM,
CDSSM, MV-LSTM, ARC-I, CNTN, CA-RNN, MultiGranCNN等

优点:可以对文本预处理,构建索引,大幅度降低在线计算耗时

缺点:失去语义焦点,易语义漂移,难以衡量词的上下文重要性。

交互型:交互性模型摒弃后匹配的思路,假设全局的匹配度依赖于局部的匹配度,在输入层就进行词语间的先匹配,并将匹配的结果作为灰度图进行后续的建模。

经典模型有:ARC-II、MatchPyramid、Match-SRNN、K-NRM、DRMM、DeepRank、DUET、IR-Transformer、DeepMatch、ESIM、ABCNN、BIMPM

优点:更好地把握了语义焦点,能对上下文重要性进行更好的建模

缺点:忽视了句法、句间对照等全局性信息,无法由局部匹配信息刻画全局匹配信息

短文本匹配:主题模型效果通常较差。

使用词向量按位累加方式获取句向量,使用距离度量获取相似度

利用DSSM等方法进行匹配度计算

常用算法

l BoW:词袋模型,统计词袋内的词频作为语句的表示,忽略了词序、语法、句法,并假设每个词都是独立的;无法解决一词多义现象。

l VSM,词袋模型的变种。先缺点特征词集,然后以特征词的权重来构建向量。词的权重由TF-IDF来确定。缺陷为TF-IDF和bow的缺陷集合。具有TF-IDF的优点:考虑了词的重要性。(是否为优点还需要考虑任务场景,比较TF-IDF本质上是抑制噪声)

l BM25:把query做分词后,计算每个词与文档D的相关性;词与query之间的关系;词的权重;最后把每个词的得分做加权求和作为query与文档的分数。词权重一般为IDF。

优点:参数b引入字段长度归一化,解决了字段长度增加带来的词重要性降低问题;参数k1考虑了词频上限,即某个词的重要性不是无上限的。

l Jaccord相似系数:两个文档的词的交比上并。余弦相似性在数据极度稀疏时,可能会产生误导,Jaccord能避免这种情况,适用于高维稀疏数据。主要用途:比较文本相似度,用于文本查重与去重;计算距离,用于聚类

l Hamming Distance:等长的语句中,对应位置不同的字数,通常可以使用他的变种字符编辑距离来表征语句差异

l SimHash:分词后构建词-权重对,计算词的hash值,hash值元素相乘权重获得特征向量,所有词的特征向量求和作为句子特征向量a,对a的每一位做0/1置换,计算汉明距离判断相似性。

优点:余弦相似在高维空间中计算复杂度较高,simhash解决了这个问题。

局限:主要用于大规模海里数据去重,对于关键词少、文章内容短时较为乏力。

l LCS:最长公共子序列。可能对于短文本比较乏力。

l LSA:构造词共现矩阵,然后分解。优点:学习了词之间的相似性,相当于学习了词的特征;能在一定程度上解决多义词的情形;特征空间降维。

l DSSM:分为三层结构:输入层、表示层、匹配层。

输入层不使用分词工具,而是使用字向量输入DNN中。使用DNN是为了降低输入空间。了解还有人用偏旁部首构造输入空间的

表示层使用BOW来提取特征传入后续的DNN里

匹配层用cosine计算距离,使用softmax获得相似概率

优点:减少了对分词工具的依赖,增加了繁华能力;相对传统模型需要用无监督训练把词映射入空间,再把向量累加、平均、拼接作为输入的模型,DSSM是有监督学习,精度更高。

缺点:使用CBOW丢失了上下文和词序信息;采用弱监督、端到端的模型,预测结果不可控。

l CDSSM:输入层用word-trigram来增加词之间的联系,相当于使用了基于统计的分词。中文使用反而增加了向量空间的维度

表示层:卷积层提取局部上下文特征,池化层使用最大池化找到全局的上下文特征。

优点:通过卷积层和池化层提取了上下文特征

缺点:对于长距离的上下文信息比较乏力

l LSTM-DSSM:使用LSTM替代CNN,拥有记忆能力,能提高提取上下文的距离

l ESIM:表示型是先表征成向量再匹配,在提取上下文信息上相对乏力。交互型先匹配再提取特征。ESIM在输入层使用biLSTM双向构建嵌入向量a;在表征层计算出词对齐向量a’,构建新的向量表示[a,a’.a-a’,a*a’],起到提取局部特征的作用;然后再次使用biLSTM提取上下文信息。

词向量

机器无法识别文本,需要把文本转换为向量。词的表征方式有one-hot表示、分布式表示两种。

one-hot的缺陷:各个词之间彼此独立,无法有效利用词的相似信息;特别稀疏,特征空间大,增加存储压力、计算压力

分布式表示:通过学习,把词转换为稠密向量。也叫词向量。相当于学习词的特征,能很好的体现词之间的相似性。具有优点:词中间存在相似性,可以定义距离;特征空间相对one-hot减小,向量更稠密,存储压力、计算压力都减小;相近词在特征空间中相近。

生成方式:基于统计、基于语言模型

基于统计:统计词频,生成共现矩阵。然后通过降维、分解得到词向量。

基于模型:基本思想是对出现在上下文的词进行预测。常见的模型有:word2vec、NNLM、Glove

矩阵分解:利用全局语料特征,矩阵分解计算复杂度高

NNLM:词向量是副产物,效率不高

word2vec:利用局部语料库,优化效率高

glove:基于全局语料,结合了矩阵分解和word2vec的优点

bert:动态特征

常用特征提取方式总结

去掉标点符合和空格:这些信息对文本上下文的理解语义基本无帮助,反而增加了特征空间维度,甚至可能会干扰模型效果。

BM25:参数b引入字段长度归一化,解决了字段长度增加带来的词重要性降低问题;参数k1考虑了词频上限,即某个词的重要性不是无上限的。

Tf-idf:tf是词频,idf是逆文件频率。认为词出现的次数越多,词越重要;出现的文档数越多,词越不重要

编辑距离:通过增删改,使两个语句内容一样的最小步骤,用来衡量相似性。时间复杂度为O(N^2)。

LCS:求最长公共子串。时间复杂度为O(N^2)。

Fasttext构造词向量:快速,性能比word2vec高,都是固定表征,完全没有考虑词序。

余弦相似度:两个向量的夹角大小,对高维空间可能比较乏力

Jaccord系数:对于稀疏向量仍然高效,但是未考虑出现的频率

同义词转换:把语义相似的词做转换、长语句表达转为为短语句表达。就是词对齐。有优点:使句子更凝练,浓缩语义,长文本变为更短的文本,有助于后续处理。如计算simhash,编辑距离等

词性特征:形容词、名词、动词、数量词、代词、时间参数等词性特征。有的词具有多词性、不同的词性有不同词义,如英文中的book名词是书,动词是预约。计算词性特征时通常考虑是否相同、相似度、交集、差集、出现的数量

交并集特征计算:|交(差)集|/|并集|,体现两个语句的差异性

去掉语气词,语气词主要用于表达情感,有的时候对于理解语义无影响;但是对于情感分类了可能重要。具体看情况是否删除

ngram特征:1-gram认为词是独立的;2元以上认为词与前面的n个词有关,考虑了词序、词之间的关系。N越大,上下文保留得越多,但是参数越多。参数为|D|^n。

ngram构造的向量空间可能很大,可以考虑向量的低维表示。基本思想为:把语句看成语义序列而不是词序列。具体做法:通过ngram构造词向量,然后对词向量聚类为K个蔟,把语句表示为拥有K个语义特性空间的向量。论文地址:

Bleu得分:语句中的词在参考句中出现的次数/len(参考句)。常用于评估翻译的好坏。改良:把每个词的计分上限定位它在参考句子中出现的最多次数、引入ngram机制。和最长公共序列类似。

优点:简单、直观

缺点:未考虑语法、容易受到常用词的影响、短语句得分偏高、词独立未考虑相似词或者相似表达

仍然可以考虑多个ngram的并差集构建特征

皮尔逊系数:两个向量的协方差和标准差之比,体现了两个向量的数值相关性。局限:容易受到outlier的影响(在nlp中可能容易收到未登录词的影响);刻画的是线性关系,如果两者之间不存在线性关系,可能即使很相关,但是系数为0

欧式距离:距离度量可能在高维空间中失效

汉明距离:等长的语句中,对应位置不同的字数,通常可以使用他的变种字符编辑距离来表征语句差异

  1. 停用词特征:考虑数量、交差集(相当于普通机器学习中的率)

可枚举的特征:特定领域中的一些常见的术语等

领域特征:如疾病领域可考虑(疾病/人群/动物)组,判断是否包含里面的实体,疾病是否相同、相似

加否定词特征:目的是为了增加负信息保证健壮?

长度差特征:计算两个句子的长度差率,问答系统中query多是断句,且两个语义相似的句子通常也句子长度不会差太大

词向量交叉特征,交叉矩阵特征,Ltp词法句法分析,主题模型:未看懂代码想表达什么.???

交互矩阵特征:重塑语句,单字只保留名词和动词,语句截取前n个,这里相当于改进版ngram,然后构造交互特征矩阵,取交互特征矩阵的最大值,相当于最大池化层。作用是:提取全局信息?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值