赞
踩
词排列的数量从简单的问候语factorial( 3)== 6激增到更长的语句factorial( 12)
== 479001600
很明显,词序所包含的逻辑对任何希望正确回复的机器而言都很重要。尽管普通的问候语通常不会因为词袋处理而造成混淆,但如果把更复杂的语句放入词袋中,就会丢失大部分意思。就像前面示例中的自然语言查询一样,词袋并不是处理数据库查询的最佳方式。
3.词向量
2012年,微软实习生Thomas Mikolov发现了一种用一定维度的向量表示词的含义的方法。Mikolov训练了一个神经网络来预测每个目标词附近的共现词。2013年,Mikolov和他的队友在谷歌发布了创建这些词向量的软件,称为Word2vec。
Word2vec仅仅基于大型未标记文本语料库来学习词的含义,而不需要标记Word2vec词汇表中的词。我们不需要告诉Word2vec算法玛丽·居里是一个科学家、伐木者是一个足球队、西雅图是一个城市、波特兰是俄勒冈州和缅因州的一个城市,也不需要告诉Word2vec足球是一项运动、一个团队是一群人,或者城市既是地点也是社区。Word2vec完全可以靠自己学到更多的知识!大家需要做的只是准备一个足够大的语料库,其中在科学、足球或城市相关的词附近提到玛丽·居里、伐木者队和波特兰。
正是Word2vec这种无监督的特性使它无比强大,因为世界上充满了未标记、未分类、非结构化的自然语言文本。
4.Word2vec和GloVe
Word2vec是一个巨大的突破,但它依赖于必须经反向传播来训练的神经网络模型。反向传播在效率上通常不如使用梯度下降法直接优化的代价函数。由Jeffrey Pennington领导的斯坦福大学NLP研究团队研究了Word2vec的工作原理,并从中找到可优化的代价函数。他们计算词的共现次数并记录在一个正方形矩阵中。他们发现可以对这个共现矩阵进行奇异值分解,分解得到的两个权重矩阵的意义与Word2vec产生的完全相同。关键点在于用同样的方法对共现矩阵进行归一化。在某些情况下,Word2vec模型无法收敛,而斯坦福大学的研究人员能够通过他们提出的SVD方法得到全局最优解。这个方法是对词共现的全局向量(在整个语料库中的共现)直接进行优化,因此命名为GloVe(global vectors of word co-occurrences)。
GloVe可以产生相当于Word2vec输入权重矩阵和输出权重矩阵的矩阵,其生成的语言模型具有与Word2vec相同的精确率,而且花费的时间更少。GloVe通过更高效地使用数据来加速训练进程。它可以在较小的语料库进行训练,并仍然能够收敛。SVD算法已经改进了几十年,所以GloVe在调试和算法优化方面很有优势。相比之下,Word2vec依赖反向传播来更新表示词嵌入的权重,而神经网络的反向传播效率低于GloVe使用的SVD这种更成熟的优化算法。
尽管Word2vec首先普及了基于词向量进行语义推理的概念,不过大家还是应当尽量使用GloVe来训练新的词向量模型。通过GloVe,大家更有可能找到词向量表示的全局最优解,从而得到更精确的结果。
GloVe的优点如下:
1.训练过程更快;
2.更有效地利用CPU、内存(可以处理更大规模的文档);
3.更有效地利用数据(对小型语料库有帮助);
4.在相同训练次数的情况下精确率更高。
5.知识方法
A.L.I.C.E.和其他AIML聊天机器人完全依赖模式匹配。在构想AIML之前,第一个流行的聊天机器人ELIZA也使用了模式匹配和模板。但是这些聊天机器人的开发人员在模式和模板中硬编码了回复的逻辑。硬编码不能很好地“扩展”,这种扩展不是从处理性能而是从人力的角度来说的。以这种方式构建的聊天机器人的复杂性随着投入人力的增加呈线性增长。事实上,随着这个聊天机器人的复杂性不断增长,我们开始看到自己努力的回报却在递减,这是因为随着“活动组件”之间交互的增加,聊天机器人的行为变得越来越难以预测和调试。
如今,数据驱动编程是应对大多数复杂编程挑战的现代方法。如何使用数据对聊天机器人进行编程?在上一章中,我们学习了如何使用信息提取从自然语言文本(非结构化数据)中创建结构化知识。仅仅基于读入文本,就可以构建关系或事实组成的网络,这些文本可以是维基百科文章,甚至是大家自己的个人日志。
通过逻辑推理来处理知识图谱,可以回答包含在知识库中的世界相关的问题。然后可以使用推理答案填写模板化回复中的变量,从而创建自然语言答案。问答系统,例如IBM在Jeopardy获胜的“沃森”(Watson),最初也是以这种方式构建的,尽管最近的版本几乎必然也采用了搜索或信息检索技术。知识图谱可以说是将聊天机器人带到现实世界的“根本”。
基于知识库的方法不仅限于回答关于世界的问题。知识库也可以使用正在进行的与对话相关的事实进行实时填充。这可以让聊天机器人快速了解对话目标以及他们的喜好。
6.检索(搜索)方法
另一种“倾听”用户的数据驱动方法是在历史对话日志中搜索之前的语句。这类似于人类倾听者尝试回想之前他们在哪里听到过该问题、句子或词。机器人不仅可以搜索自己的对话日志,还可以搜索任何人与人之间的对话记录、机器人和人之间的对话记录,甚至是机器人和机器人之间的对话记录。但和以往一样,脏数据进脏数据出。因此,我们应该清理并整合历史对话的数据库,以确保机器人搜索(并模仿)高质量的对话。我们希望人类享受与机器人之间的对话。
基于搜索的聊天机器人应确保其对话数据库包含令人愉快或有用的对话,并且它们应该是设定个性的机器人预期交流的一些主题。对于基于搜索的机器人,一些好的对话资源例子包括电影对话脚本、IRC频道上的客户服务日志(用户满意的部分)和人类之间的直接消息互动(如果那些人愿意与我们分享的话)。如果没有获得想要使用的对话中涉及的所有人的书面同意,请不要使用大家自己的电子邮件或短消息日志。
如果决定将机器人之间的对话合并到语料库中,那么请千万小心。我们的数据库中只需要那些至少有一个人看起来对交互感到满意的语句,哪怕只是继续对话。除非是真正非常智能的聊天机器人,否则很少采用机器人之间的对话。
基于搜索的聊天机器人可以使用历史对话日志来查找和机器人的交谈对象刚刚说的话类似的语句示例。为了便于搜索,应该把对话语料库组织成语句-回复对。如果回复作为被回复的语句,那么该回复应该在数据库中出现两次,一次作为回复,然后再作为促使回复的语句。数据库表中的回复列随后可作为“语句”(或促使)列的语句的回复依据。
光了解上面这些NLP的知识其实对学习NLP来说是完全不够的。那么如何去高效完整地掌握NLP的整体框架和所有知识呢?相信这一本 《自然语言处理实战:利用Python理解、分析和生成文本》可以帮到你。
自然语言处理实战 利用Python理解、分析和生成文本
作者:[美]霍布森•莱恩(Hobson Lane) ,科尔•霍华德(Cole Howard) ,汉纳斯•马克斯•哈普克(Hannes Max Hapke)
译者: 史亮 ,鲁骁 ,唐可欣 ,王斌
注:本书分为3部分:第一部分介绍NLP基础,包括分词、TF-IDF向量化以及从词频向量到语义向量的转换;第二部分讲述深度学习,包含神经网络、词向量、卷积神经网络(CNN)、循环神经网络(RNN)、长短期记忆(LSTM)网络、序列到序列建模和注意力机制等基本的深度学习模型和方法;第三部分介绍实战方面的内容,包括信息提取、问答系统、人机对话等真实世界系统的模型构建、性能挑战以及应对方法。
-END-
Today's Interaction
今日互动
你对NLP感兴趣吗?
关注AI科技大本营并评论分享你对自然语言处理的见解, 我们将从中选出10条优质评论分别获得赠书1本,截止时间11月15日晚20:00。 返回搜狐,查看更多
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。