专栏 | 深度学习在NLP中的运用?从分词、词性到机器翻译、对话系统

竹间智能专栏

作者:自然语言与深度学习小组

自然语言是人类知识的抽象浓缩表示,而自然语言理解是人工智能研究领域中极具挑战的一个分支。上次,《自然语言处理在 2017 年有哪些值得期待的发展?》中,我们已经讲到,2016 年是深度学习大潮冲击 NLP 的一年,通过去年一年的努力,深度学习在 NLP 领域已经站稳了脚跟。其中,对话交互系统已经成为一个重要的应用研究领域,2017 年的自然语言对话系统,将开创一个新的人机交互时代。 通过深度学习和其他机器学习技术的模型组合,竹间智能也已初步实现了自然语言对话中的意图识别、上下文理解和多轮对话。本文将基于竹间智能的一些经验和探索,从分词、词性等基础模块,到机器翻译、知识问答等领域,列举并分析一些深度学习在 NLP 领域的具体运用,希望对大家研究深度学习和 NLP 有所帮助。

事实上,从分词、词性、语法解析、信息抽取等基础模块,到自然语言生成、机器翻译、对话管理、知识问答等高层的 NLP 领域,几乎都可以应用以 CNN、RNN 为代表的深度学习模型,且确实能够取得不错的效果。深度学习模型有效降低了语言模型输入特征的维度,降低了输入层的复杂性。另外,深度学习模型具有其他浅层模型不能比拟的灵活性。深度学习模型更复杂,能够对数据进行更精准的建模,从而增强实验效果。

深度学习模型可以将文本中的词高效地表示为分布式连续向量(word2vec),将词语、文本由词空间映射到语义空间,这样的语义表示可以捕获重要的句法和语义信息,一定程度上缓解了词面不匹配、数据稀疏、语义鸿沟等问题。Word2vec 的应用可以使许多自然语言处理任务取得突出的表现。Word2vec 虽然可以通过神经网络训练大规模的语料实现,但仍面临着 out of vocabulary 的现实。Bahdanau 等人利用 LSTM 模型结合定义知识语料,解决传统 word embedding 模型中的 out of vocabulary 问题。(框架流程见图 1,具体见 https://arxiv.org/abs/1706.00286)

图 1:利用 RNN 解决 Word2Vec 中 out of vocabulary 问题实例

中文不同于英文自然分词,中文分词是文本处理的一个基础步骤,也是自然语言处理的基础模块。分词性能的好坏直接影响比如词性、句法树等其他模块的性能。利用深度学习实现的字嵌入+Bi-LSTM+CRF 中文分词器,不需要构造额外手工特征。使用人民日报的 80 万语料训练实现,按照字符正确率评估标准能达到 98% 的准确率。其本质上是一个序列标注模型,模型参考的论文是:http://www.aclweb.org/anthology/N16-1030,整个神经网络的主要框架如图 2 所示。有感兴趣的朋友可以去看看,具体实现已在 github 开源 https://github.com/koth/kcws。

图 2:Word Embedding+Bi-LSTM+CRF 主要框架示意图

语法解析可以获得句子的语法结构,例如,哪些单词组合在一起(形成「短语」),哪些单词是动词的主题或对象。Syntactic Parsing 明确标出了词与词之间的短语结构,隐含了词与词之间的关系。而 Dependency Parser 则明确表示出了词与词之间的关系。利用神经网络模型解析句子的语法结构的实现可以参考 http://www.petrovi.de/data/acl15.pdf 以及斯坦福的 http://cs.stanford.edu/~danqi/papers/emnlp2014.pdf。除解析文本之外,Richard Socher 等人利用 CNN 模型实现了解析图片的功能(Parsing Natural Scenes and Natural Language with Recursive Neural Networks)。

文本分类是各种场景在自然语言处理领域中经常使用到的技术,例如判断文本内容的情感分类(即对文本表达的情感进行分析,如正面、负面的情感,开心、愤怒等情绪等)。深度学习在文本分类中的表现优于其他一些传统线性模型,例如 https://arxiv.org/abs/1508.04112。Github 上的 https://github.com/harvardnlp/sent-conv-torch 是用于文本分类的 CNN,这个代码用 GPU 在 Torch 中实现了 Kim(2014)的句子卷积代码。它复制了现有数据库中的结果,并允许在任意其它的文本数据库上训练模型。

信息抽取,从句子中抽取特定的片段(比如命名实体识别、摘要总结等)。Abstractive Summarization 摘要总结 https://github.com/harvardnlp/NAMAS,该项目包含了来自论文 A Neural Attention Model for Abstractive Summarization(Alexander M. Rush, Sumit Chopra, Jason Weston. https://arxiv.org/pdf/1509.00685.pdf)的摘要抽象总结系统。该项目里发布的代码可以:提取摘要数据、训练摘要神经网络模型、用 ROUGE 构建评估集、调试提取的特征等。

神经指代消解(Neural Coref Models),在论文 Learning Global Features for Coreference Resolution(Sam Wiseman, Alexander M. Rush, and Stuart M. Shieber, NAACL 2015)和 Learning Anaphoricity and Antecedent Ranking Features for Coreference Resolution(Sam Wiseman, Alexander M. Rush, Stuart M. Shieber, and Jason Weston. ACL 2015)中有所描述。Github 中开源的指代消解项目有 https://github.com/swiseman/nn_coref。

自然语言生成,能够根据一些关键信息及其在机器内部的表达形式,经过一个规划过程,来自动生成一段高质量的自然语言文本。目前关于自然语言生成有一些比较有趣的研究,比如 https://github.com/karpathy/char-rnn 是一个基于 RNN 的文本生成器,可以自动生成莎士比亚的剧本或者 shell 代码;https://link.zhihu.com/?target=https%3A//github.com/phunterlau/wangfeng-rnn 基于 char-rnn 的汪峰歌词生成器等。

知识问答,可以用深度学习模型,从语料中学习获得一些问题的答案,比如 https://github.com/facebook/MemNN,是 memmnn 的一个官方实现,可以从诸如「小明在操场;小王在办公室;小明捡起了足球;小王走进了厨房」的语境中,获得问题「小王在去厨房前在哪里?」这样涉及推理和理解的问题;例如斯坦福的 http://cs.stanford.edu/~danqi/papers/nips2013.pdf 利用深度学习实现的知识问答系统。

神经机器翻译(NMT)在翻译中提供了统计方式之外的另一种方式,同时也更加简便。Github 上基于 Sequence-to-Sequence Learning with Attentional Neural Networks 的开源项目: http://github.com/harvardnlp/seq2seq-attn,以及基于上述项目和 http://www.people.fas.harvard.edu/~yoonkim/data/emnlp_2016.pdf 的安卓系统中的神经机器翻译。该项目考虑了将知识提炼(knowledge distillation)方式加入机器神经翻译中,以解决其体量问题,这种方式已在其他领域中被证明能够成功减小神经模型的尺寸。

在 Github 上还有一些有趣的关于深度学习与自然语言处理的项目。比如:Google Brain 团队的一组研究人员发布了一个项目 Project Magenta,其主要目标是利用机器学习创作艺术和谱写曲子 https://github.com/tensorflow/magenta;https://github.com/ryankiros/neural-storyteller 是一个自然语言生成项目,实现了看图讲故事的功能。

以上是对深度学习在 NLP 领域运用的一些总结和说明。最后,再讲回竹间全力打造的自然语言对话系统。之前提到 2017 年的对话系统一定是在限定的场景下发挥作用的,而竹间智能基于深度学习打造的人机交互系统,在金融、电商及 IoT 等限定领域中已经实现了比较好的可控人机对话。未来,竹间希望在更多垂直领域形成突破。

竹间智能专栏系列:

专栏 | 中文NLP难于英文?从语言学角度看中文NLP、NLU难在哪里

专栏 | 自然语言处理在2017年有哪些值得期待的发展?

本文为机器之心专栏,转载请联系本公众号获得授权。

原文发布于微信公众号 - 机器之心(almosthuman2014)

原文发表时间:2017-08-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据文摘

神经网络的叛离:32年前从心理学与生理学分离的瞬间

这一算法由被誉为深度学习之父的Geoffrey Hinton提出。1986年,他发表了名为Learning representations by back-pr...

1032
来自专栏数据的力量

增长分析必杀技:用户分群

Froc的推荐语:目前在线实时推荐,能够实现千人千面的个性化运营,但基于相对宏观的用户分群,依然是产品运营所需要的。在宏观层面的用户分群(通常把用户分为几类大的...

1541
来自专栏量子位

20年前的吴恩达,藏在一个数据集里

今天这张照片火了。连正主吴恩达都在推特上转发了这张黑白照片。吴恩达回忆说,这张照片拍摄于大概20年前~

884
来自专栏新智元

Hinton《机器学习中使用的神经网络》课程亮点总结

【新智元导读】本文作者两次完成 Hinton 在 coursera 上的经典课程“机器学习中使用的神经网络”,他对这门课程作了总结介绍并极力推荐:这门课很难,但...

37010
来自专栏游戏杂谈

《Unity3D 实战核心技术详解》书中关于矩阵的错误

最近一直在学习实时渲染,不免要接触线性代数。而渲染中,一定会用到矩阵,当我再次去复习我之前看的书时,发现《Unity3D 实战核心技术详解》关于矩阵就有几处错误...

2333
来自专栏大数据文摘

Cell研究揭示生物神经元强大新特性,是时候设计更复杂的神经网络了!

1817
来自专栏大数据文摘

从自然语言处理到人工智能的两条路径(附64页PPT)

2854
来自专栏ATYUN订阅号

加利福尼亚大学开发模型,可减少AI数据集的性别偏见

词嵌入是一种将单词和短语映射到实数向量上的语言建模技术,是自然语言处理的基础部分。这就是机器学习模型如何“学习”语境相似性和词语接近的重要性,以及它们如何最终从...

1502
来自专栏AI科技评论

参会见闻系列:ACL 2018,在更具挑战的环境下理解数据表征及方法评价

AI 科技评论按:本篇属于「顶会见闻系列」。每年这么多精彩的人工智能/机器学习会议,没去现场的自然可惜,在现场的也容易看花眼。那么事后看看别的研究员的见闻总结,...

1231
来自专栏机器之心

观点 | Geoffrey Hinton:放弃反向传播,我们的人工智能需要重头再来

选自Axios 机器之心编译 三十多年前,深度学习著名学者 Geoffrey Hinton 参与完成了论文《Experiments on Learning by...

30910

扫码关注云+社区

领取腾讯云代金券