NLP(二):自然语言处理综述

这是一系列自然语言处理的介绍,本文不会涉及公式推导,主要是一些算法思想的随笔记录。
适用人群:自然语言处理初学者,转AI的开发人员。
编程语言:Python
参考书籍:《数学之美》
《统计自然语言处理》 --宗成庆
参考教程:
《机器读心术之自然语言处理》
《斯坦福CS224n课程(2017)》

概述

NLP的发展,自1950s开始,形成了目前基于规则和基于统计的两派,2006年深度学习起步,对NLP领域的影响,从传统的机器学习逐渐过渡到深度学习。

下面会从NLP的多学科基础(语言学、数学\统计学)到NLP的基础技术及应用,再到NLP用到的深度学习技术三个方面进行综述:

  1. NLP数学基础:形式语言与自动机、语言模型、概率图模型(隐马尔科夫模型、贝叶斯网络、条件随机场);
  2. NLP技术及应用:分词 、词性标注、句法分析(含依存分析)、文本分类、词嵌入、情感分析、信息检索、搜索引擎、自动文摘、信息抽取、机器翻译、问答系统、语音识别;
  3. NLP用到的深度学习技术:CNN\RNN\GRU\LSTM、seq2seq\transformer、注意力机制

信息的度量——熵

一条信息的信息量与其不确定性有着直接的关系,可以认为,信息量就等于不确定性的多少。

形式语言与自动机nlp1nlp2

语言模型 LMnlp3nlp4

概率图模型PGMnlp5

隐马尔科夫模型HMMnlp6

贝叶斯网络BN

贝叶斯网络是有向无环图(Directed Acyclic Graph)和一个条件概率表集合。

马尔科夫链是贝叶斯网络的特例,而贝叶斯网络是马尔科夫链的推广。

隐马尔科夫模型是结构最简单的动态贝叶斯DBN。

条件随机场CRFnlp7

中文分词Token

西方语言中词语有明显的分隔符,而对于中日韩等语言,词与词之间没有明确分界。语言模型是建立在词的基础上的,而词是表达语意的最小单元。

中文分词方法的演变

  1. 查字典:实际就是把一个句子从左到右扫描一遍,遇到字典里有的词就标识出来,遇到复合词(比如“上海大学”)就找最长的词匹配,遇到不认识的字串就分割成单字词。
  2. 最少词数分词法、最大词数分词法:无法解决分词二义性(有双重理解意思)问题。
  3. 基于统计语言模型的分词:分词器由词典和统计语言模型两部分组成。加上的统计语言模型来解决分词的二义性问题,将汉语分词的错误率降低一个数量级。

中文分词以统计语言模型为基础,经过几十年的发展和完善,今天基本上可以看做是一个已经解决的问题。

可通过jieba实现中文分词。

词嵌入Word Embedding、Word2Vec训练词向量

NLP处理的最小单位是词,如何将词转变为计算机可以识别的数学表示呢?这就需要用到词嵌入(Word Embedding)技术。词嵌入技术现在比较通用就是Word2Vec,可以将词训练成词向量

词向量既能够降低维度,又能够捕捉到当前词在本句子上下文中的信息(表现为前后距离关系)。

命名实体识别NERnlp8

NER又称作专名识别,是自然语言处理中的一项基础任务。命名实体一般指的是文本中具有特定意义或者指代性强的实体,通常包括人名、地名、组织机构名、日期时间、专有名词等。

学术上NER所涉及的命名实体一般包括3大类(实体类,时间类,数字类)和7小类(人名、地名、组织机构名、时间、日期、货币、百分比)。

词性标注POS tagging

词性标注(Part-Of-Speech tagging, POS tagging)也被称为语法标注(grammatical tagging)或词类消疑(word-category disambiguation),语料库内单词的词性按其含义和上下文内容进行标记的文本数据处理技术 。

词性标注可以由人工或特定算法完成,使用机器学习方法实现词性标注是自然语言处理的研究内容。常见的词性标注算法包括隐马尔可夫模型 HMM、条件随机场CRF等。

词性标注是语义分析(semantic analysis)和指代消解(coreference resolution)的预处理步骤。

可通过jieba实现POS tagging,也可通过深度学习的Bi-LSTM+CRF实现。

文本分类

文本分类的处理大致分为文本预处理文本特征提取分类模型构建等。

文本分类方法: 传统机器学习方法(贝叶斯,svm等),深度学习方法(fastText,TextCNN等)。

句法分析 Parsing

句法分析是分析句子的句法结构(主谓宾结构)和词汇间的依存关系(并列,从属等)。通过句法分析,可以为语义分析,情感倾向,观点抽取等NLP应用场景打下坚实的基础。

句法分析分为两类,一类是分析句子的主谓宾 定状补的句法结构。另一类是分析词汇间的依存关系(即依存分析 Dependency Parsing),如并列 从属 比较 递进等。

可通过哈工大LTP、斯坦福句法分析工具Stanford Parser来实现Parseing.

情感分析 Sentiment Analysis

情感分析的应用:

  1. 产品评价
  2. 公共意见,eg:分析消费者信心指数,股票指数等
  3. 公共政策,看公众对候选人/政治议题的看法
  4. 预测选举结果、预测市场趋势等

情感分析本质上还是分类问题,可通过机器学习的分类算法如SVM、朴素贝叶斯等实现,也可通过深度学习的LSTM等网络实现。

文本相似度与TF-IDF

在自然语言处理中,经常会涉及到如何度量两个文本的相似度问题。在诸如对话系统(Dialog system)和信息检索(Information retrieval)等的问题中,如何度量句子或者短语之间的相似度尤为重要。

度量文本相似度包括如下三种方法:

  1. 基于关键词匹配的传统方法,如N-gram相似度;
  2. 文本映射到向量空间,再利用余弦相似度等方法;
  3. 深度学习的方法,如基于用户点击数据的深度学习语义匹配模型DSSM,基于卷积神经网络的ConvNet,以及目前state-of-art的Siamese LSTM等方法。

如果直接计算分词后的词组成的向量构成的相似度,不考虑词的权重等问题,会有很差的效果,这时候需要用到TF-IDF技术。

TF意思是词频(Term Frequency),IDF意思是逆文本频率指数(Inverse Document Frequency),两者相乘构成TF-IDF用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。

信息检索Information Retrieval与倒排索引

“信息检索”是在一大堆非结构化的信息里面(通常是文本),找到符合需求的信息。

为了加快信息查找过程,需要建立索引,而倒排索引(Inverted Index),是一种索引方法,常被用于全文检索系统中的一种单词文档映射结构。

现代搜索引擎绝大多数的索引都是基于倒排索引来进行构建的,这源于在实际应用当中,用户在使用搜索引擎查找信息时往往只输入信息中的某个属性关键字。面对海量的信息数据,为满足用户需求,顺应信息时代快速获取信息的趋势,开发者们在进行搜索引擎开发时对这些信息数据进行逆向运算,研发了“关键词——文档”形式的一种映射结构,实现了通过物品属性信息对物品进行映射时,可以帮助用户快速定位到目标信息,从而极大降低了信息获取难度。

倒排索引又叫反向索引,它是一种逆向思维运算,是现代信息检索领域里面最有效的一种索引结构。

搜索引擎Search Engine与PageRank

网页排名技术PageRank是早期Google的杀手锏,它的出现使得网页搜索的质量上了一个大的台阶。其背后的原理就是图论和线性代数的矩阵运算。

自动文摘Automatic Summarization

所谓自动文摘就是利用计算机自动地从原始文献中提取文摘,文摘是全面准确地反映某一文献中心内容地简单连贯的短文。

信息抽取Information Extraction

信息抽取 (Information Extraction: IE)是把文本里包含的信息进行结构化处理,变成表格一样的组织形式。输入信息抽取系统的是原始文本,输出的是固定格式的信息点。信息点从各种各样的文档中被抽取出来,然后以统一的形式集成在一起。这就是信息抽取的主要任务。

信息抽取的任务:

  • 实体识别与抽取
  • 实体消岐
  • 关系抽取
  • 事件抽取

机器翻译MT

机器翻译是一个十分经典的语言理解的测试,涉及语言分析(language analysis)与语言生成(language generation)。

神经机器翻译(NMT):神经机器翻译是利用一个巨大的神经网络来为整体机器翻译过程建模。

聊天机器人ChatBot

聊天机器人可按照以下两个维度划分:
基于检索的认设模型(Retrieval-Based) VS. 基于数据的生成式模型(Generative-Based)
开放领域 VS. 封闭领域(专业领域)
聊天机器人

语音识别Speech Recognition

语音识别

CNN、RNN、GRU、LSTM

深度学习模型可以将文本中的词高效地表示为分布式连续向量(word2vec),将词语、文本由词空间映射到语义空间,这样的语义表示可以捕获重要的句法和语义信息,一定程度上缓解了词面不匹配、数据稀疏、语义鸿沟等问题;Bahdanau 等人利用 LSTM 模型结合定义知识语料,解决传统 word embedding 模型中的 out of vocabulary 问题;

基于CNN、RNN的文本分类;

利用深度学习实现的字嵌入+Bi-LSTM+CRF 中文分词器,不需要构造额外手工特征;

除解析文本之外,Richard Socher 等人利用 CNN 模型实现了解析图片的功能;

**神经机器翻译(NMT)**在翻译中提供了统计方式之外的另一种方式,同时也更加简便。

seq2seq、transformer与注意力机制Attention Mechanism

seq2seq属于encoder-decoder结构的一种,常见的encoder-decoder结构,基本思想就是利用两个RNN,一个RNN作为encoder,另一个RNN作为decoder

经典架构:RNN + Seq2Seq + Atten
深度学习使得 NLP 领域太过简单粗暴,无论什么问题用 seq2seq + atten 都能解决。
seq2seq

开源工具包

  • nltk:一般的nlp任务(tag、分类、解析等)
  • jieba: 分词
  • gensim :word2vec、主题建模、文档相似性等
  • scikit-learn:分类、聚类
  • opencc: 繁体转简体
  • fastText:文本分类
  • HanLP:java的汉语处理包
  • pyhanlp:HanLP的python接口
  • SnowNLP:一个封装好的python库,可以做情感分析,计算文本相似度(BM25方法)、提取关键词等
  • tensorflow\keras\pytorch:深度学习框架
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页