ACL学会网站建立了称作ACL Anthology的页面(URL:ACL Anthology),支持NLP(自然语言处理)/CL(计算机语言学)领域绝大部分国际学术会议论文的免费下载,甚至包含了其他组织主办的学术会议,例如COLING、IJCNLP等,并支持基于Google的全文检索功能。
ACL 选集使用完全开源软件构建,由 ACL 选集工作人员进行进一步开发和定制。当前选集网站使用Hugo框架静态生成,布局使用Bootstrap库进行设计。字体真棒用作图标字体。
选集的源代码可在https://github.com/acl-org/acl-anthology/的 GitHub 上找到。
最方便的方法还是在Google Scholar中搜索“领域名称 + survey / review / tutorial / 综述”来查找
自然语言处理是机器理解专业分析人类语言的人工智能。基本工作步骤:接受自然语言;转译自然语言(基于概率学算法);分析自然语言。
机器翻译 语音识别(例Siri) 聊天机器人 情感分析
关键方法是:
(1)标记法——将文本分解成有用的单位(标记),例如,使用空格分隔单词,或者使用句号分隔句子。
(2)标准化——使用词干提取和词形还原等技术将单词转换为基本形式。这样做是为了帮助减少干扰和简化分析。
(3)词性标注(POS)——利用词法,或研究词与词之间的关系。单词(或标记)是根据它们在句子中的功能来标记的。这是通过使用文本语料库中的既定规则来识别单词在言语中的目的,即动词、名词、形容词等。
(4)句法分析
(5)语义分析
为了使用机器学习和深度学习方法分析文本,需要将文本转换为数字。这就是文本表示的目的。在此步骤中使用的一些关键方法包括:
通过计算输入文档中每个单词与已知词汇的词汇表相比出现的次数来表示文本。结果是一组向量,其中包含描述每个单词出现次数的数字。这些向量被称为“词袋”,因为它们不包含任何关于输入文档结构的信息。
示例:“the cat sat on the mat”。其中包含“the”、“cat”、“sat”、“on”和“mat”等词。这些词的出现频率可以用形式为[2,1,1,1,1]的向量来表示。这里,单词“the”出现两次,其他单词出现一次。这是因为词汇表中没有包含在例句中的所有单词的频率都是零。结果向量可能包含大量的零,因此称为“稀疏向量”。
BoW查看的是单个单词,因此不会捕捉到任何组合词的相关信息。这会导致接下来分析文本时造成上下文丢失。
使用BoW减少上下文丢失的一种方法是创建组合单词而不是单个单词的词汇表。这些分组的单词被称为“n-grams”,其中“n”是分组大小。由此产生的方法称为“N元模型”(BNG)。
该模型基于这样一种假设,第N个词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。这些概率可以通过直接从语料中统计N个词同时出现的次数得到。常用的是二元的2-grams和三元的3-grams。
BNG的优点是每个n-gram比单个单词能捕捉更多的上下文。
实例:在前面的例句中,“sat on”和“the mat”是2-grams的例子,“on the mat”是3-grams的例子。
“词频-逆向文件频率”或TF-IDF。词频是指单词在给定文档中的出现频率,而逆文档频率则是指单词在所有文档中的出现频率。
TF-IDF方法的作用是淡化频繁出现的单词,并突出显示具有有用信息的更独特的单词,例如:突出“cat”或“mat”。这样做可以带来更好的结果。
词嵌入方法利用强大的机器学习和深度学习来完成映射。这是一个不断发展并且已经有了一些出色成果的的领域。目前使用的关键算法包括Word2Vec、GloVe和FastText。
现有的机器学习方法往往无法直接处理文本数据,因此需要找到合适的方法,将文本数据转换为数值型数据,由此引出了Word Embedding的概念。一种更复杂的文本表示方法涉及到词嵌入。它将每个单词映射到单独的向量,其中向量趋向于“密集”而不是“稀疏”(即更小,零更少)。在映射过程中,会考虑每个单词及其周围的单词。由此产生的密集向量可以帮助更好地分析比较单词和上下文。
NLP过程的最后一步是对通过步骤1和步骤2生成的向量,利用机器学习和深度学习方法执行计算,以产生期望的结果。许多来自非NLP领域的相同的机器学习技术,例如图像识别或欺诈检测,可用于该分析。
考虑情感分析。可以使用有监督或无监督的机器学习来完成。有监督的机器学习需要预先标记的数据,而无监督的机器学习则使用预先准备好的词库对情感进行分类。
利用机器学习,用概率方法对输入文本向量进行分类。这可以通过一个训练模型(有监督的机器学习)或者通过与合适词库(无监督的机器学习)的比较来实现。
最后呈现的结果是基于机器学习过程中产生的概率的情绪分类。
推荐阅读:https://mp.weixin.qq.com/s/2b1VLDDDJ3BHwcrQdaszXA
文本的向量化可谓是NLP进入深度学习时代的标志。所谓文本的向量化(embedding),就是将文本用一定维度的向量来表示,也可以理解为文本的数值化。通过embedding,文本的语义、句法等特征得以表征,便于下游模型的处理。
向机器学习模型直接输入字符串(比如文字)显然是不明智的,不便于模型进行计算和文本之间的比较。那么,我们需要一种文本表示方式要能够便于进行文本之间的比较,计算等。最容易想到的,就是对文本进行向量化的表示。
例如,根据语料库的分词结果,建立一个词典,每个词用一个向量来表示,这样就可以将文本向量化了。
词的向量化,最早尝试是词袋模型,后来证明,词袋模型无法表征词序特征,并且会带来维度灾难。Yoshua Bengio2003年提出了一种神经网络的方法,用于语言模型的计算,词向量作为副产品后来却引起了业界的关注。2008年Collobert和Weston展示了第一个能有效利用预训练词嵌入的研究工作,他们提出的神经网络架构,构成了当前很多方法的基础。这一项研究工作还率先将词嵌入作为 NLP 任务的高效工具。不过词嵌入真正走向NLP主流还是Mikolov 等人在 2013 年做出的研究《Distributed Representations of Words and Phrases and their Compositionality》。Mikolov 等研究者在这篇论文中提出了连续词袋模型CBOW和 Skip-Gram 模型,通过引入负采样等可行性的措施,这两种方法都能学习高质量的词向量。基于此,ELMO提出了一种相同词能够根据语境生成不同词向量的模型。高质量的词向量的获得,结合LSTM、CNN等神经网络抽取器,使得NER,文本分类以及信息抽取等任务获得了长足的进步。
此外,基于词向量的思想,从2018年开始,NLP中预训练模型开始流行,BERT、GPT、ALBERT以及XLNET等模型不断刷榜。
序列标注任务是NLP里非常基础和重要的任务,例如分词、NER(专名识别)等都属于序列标注任务,包括一些预测span的阅读理解任务也可归于此列。
分词通常是中文自然语言处理的第一步(随着深度学习模型表征能力越来越强,慢慢证明,分词未必是必要的)
NER(专名识别)是非常重要和基础的信息抽取任务,在非常多的场景中都需要用到,例如聊天机器人中的槽位抽取、文本结构化过程中的实体抽取等等。
早期的序列标注任务,例如分词,NER等主要是用HMM、CRF等机器学习模型;随着深度学习的兴起,LSTM+CRF变成序列标注任务的主流方法。当然,因为LSTM的若干缺点,不少NLP的从业者坚持使用CNN,因而基于膨胀卷积的序列标注模型得以提出。随着transformer的提出,利用BERT等预训练模型做NER这类任务开始变得流行,特别是抽取一些相对较长和复杂的实体,例如地址等。需要特别提出的是,有些情况下,正则匹配也是实体抽取的一种有效手段,可作为补充,例如时间实体等。
文本分类:即通过计算机对输入文本进行分类,例如判断“你真是个帅哥啊”这句话是褒义还是贬义。文本分类的应用场景很多,例如情感分类、机器人中的意图识别等。
当类别非常多或者类别与类别之间差异很小时,文本分类就开始变得困难。有时需要考虑额外特征才能分类正确。例如:常常需要根据说话者语气,才能判断“你真是个帅哥啊”这句话是讽刺还是真心的赞美。
早期有一些基于传统机器学习的文本分类,例如基于某种词语特征的的贝叶斯模型,SVM分类器等。随着深度学习的发展,LSTM+softmax/CNN+softmax模型变成了一种非常流行的文本分类架构,基于此Fasttext、textCNN等便捷高效的开源文本分类工具也开始流行。此外,结合Attention等技巧与概念能够一定程度的提高模型的效果。文本分类还有另外一种模式,即通过将文本向量化,再通过聚类获得类别,NLTK等开源NLP工具都有便捷的Doc2vec API。如果觉得效果不好,可以试试BERT的【CLS】向量。此外,还可以增加TF-IDF模块,构建更有表达能力的DocVec。
信息提取(IE)的目标是将文本信息转化为结构化信息,起初用于定位自然语言文档中的特定信息。广泛的看,信息提取其实是一个非常宽泛的概念,从文本提出感兴趣的内容就可以称为信息提取。在NLP中常常用实体抽取、关系抽取以及事件抽取等手段进行信息抽取。
实体抽取是序列标记问题,上面已经介绍过,关系抽取以及事件抽取则通常转化为分类的任务。关系抽取常常需要先确认subject以及object。所以,关系抽取任务常常伴随着实体抽取的要求。
早期,信息提取多使用正则和传统的机器学习方法。随着深度学习的快速发展,信息提取技术也开始迅速发展。实体抽取与关系抽取从Pipline的方式进化到end-to-end的方式。使用的特征抽取器也逐步进化,从LSTM/CNN到transformer。需要特别提出的是,BERT在信息抽取方面表现出色,基于BERT和阅读理解任务来做信息抽取,是一种非常别致的方式。
NLP还有一些复杂的应用场景,他们可能是多种NLP技术的应用和综合,例如聊天机器人、知识图谱、文本搜索以及文本推荐系统等。
搜索是NLP技术最早得到大规模应用的技术,例如百度搜索、知乎话题搜索以及各大互联网公司的query搜索技术,都涉及到语义匹配或文本分类技术。此外,大型的搜索引擎,知识图谱的搭建是必须的。
推荐系统在一定层面来说是跟搜索场景相反的。搜索是基于用户的意图,在文本库中寻找匹配项;推荐则相反,通常基于积累的用户信息,给用户推荐可能感兴趣的内容。推荐系统常常涉及用户画像、标签定义等过程,需要一定程度的依赖NLP技术。
聊天机器人是目前NLP技术应用最多的场景,基于NLP技术构建一个能够替代客服、销售、办公文员是这一任务的终极目标。目前,聊天机器人已经以各种形态出现在人们面前,有站在银行门口迎接顾客的迎宾机器人,有放在卧室床头的智能音箱,有呆在各个APP首页的助手机器人等等。在聊天机器人中,运用了文本分类、语义匹配、对话管理、实体识别等大量的NLP技术。要做好是一件难度大、超复杂的任务。
知识图谱是AI时代一个非常重要基础设施,大规模结构化的知识网络的搭建,能够重塑很多的智能场景。