【云栖TechDay有问必答】NLP技术的应用及思考

简介: 云栖Techday第33期 怎么实现千人千面的文摘?深度学习在context上的向量化跟传统的word to vector,它是浅层的神经网络,差别有多大?表示语义库怎么得出来呢?

2017年4月22日在云栖TechDay第35期,阿里巴巴iDST 自然语言处理部总监上乘带来题为“NLP技术的应用及思考”,现场一问一答张显了专家专业理论和技术实践的落地。这期是听到“论文”一词最多,本期有问必答第一个问题很典型的应用场景。

NLP技术的应用及思考(演讲全文整理)https://yq.aliyun.com/articles/78031?spm=5176.8091938.0.0.utD2Ny

No1.我有两个问题,我现在的工作在处理“文摘”,根据一篇长文章整理出短的摘要内容。第一个问题是目前阿里的AliNLP平台,能不能提供一些Tool?第二个问题是在整理文摘时,如上乘提到语言的最大特点是因人而异,一篇很长的文章,文科生看和理科生看,整理的摘要需要不一样,如果想做到因人而异的摘要内容有什么建议或方法?有一些开源的工具的都是针对英文的,如何解决?

阿里巴巴iDST上乘:文摘肯定需要很多底层的分析,如能够把一个句子像我们刚讲的电商领域的语料分析一样,做到很深度的分析,会对整理文摘是有帮助的。可以找到一些开源工具做尝试,AliNLP平台暂时还没有对外开放。第二个问题,做文摘传统的思路有两种,第一种是句子摘取,如一个文章里面有100个句子,一个一个去分析哪一个句子最重要的,每次选择最重要的一个句子出来,选择两三句出来,放在一起看成一个摘要,这是比较简单的做法,甚至都不需要关注流利度的问题。更好一种方式叫做理解式的文摘,是需要把文章真正的读懂,然后生成一些新的句子,句子完整的在整个平台里面是没有出现过的,这其实是很困难的。现在这方面有些很多人在探索,做一些深度学习的叫End2End Learning,可以去搜索这样的文章有很多学习了解下。最近今年的ACL2017里面有很多文章在探讨这个问题,实际上需要找一些深度学习的框架,尝试一些开源的工具。把原文作为一个输入,文摘作为一个输出,自己构建大量的pairs,学习怎么做出来做一些新尝试,这是一种思路。现在很多工具都可以搭建这样的方法,但它的缺点是,分析出来的句子可能读起来并不通顺,或者说讲什么完全不知道,有这种可能。前面这个摘取式的,虽然说结果不能理解全篇的内容,但它是可读的,可读性非常强,所以现在商用的文摘系统全是前面这种方法,在做一些流利度的改写这样就更好了。
对于理科生和文科生输出不同摘要,涉及到一个文摘个性化的算法。可以找文科生和理科生来写不同的文摘,对比他们的文摘有什么样的风格,把这个风格用模型的方式抽象出来,再把这个模型的能力放入到深层算法里面,会使得文摘具有多样性。还有一种方式,对文章的每一个句子,判断它究竟是文科生关注的句子还是理科生关注的句子。这种情况下在摘取的时候做些适当性的差异,也可以做出个性化摘要的效果。这个问题其实是很难的问题,刚才我们讲了文摘也是自然语言处理的四大AI完全问题之一,真正解决是不可能的,只能是做一些模拟和尝试。大家可以多找一些论文读一读,还是有很多很好的解决方法。
有好几个平台的开源工具有针对中文的可以去做一些研发,可以尝试哈工大已经开源的LTP(语言技术平台),还有比如分词上可以尝试ICTClass等等这样的平台。它们都是开源的,但是没有办法去做很深度的定制,最本质的解决方案还是要去学习算法怎么做?自己去开发,或者不断优化底层的算法。

No2.我的问题可能跟今天分享的内容关系不大,想请教一下老师能力上的一个问题,刚才看到有一个很有趣的例子:搜索词,可能一开始从搜索词变成一个毫无理解能力的非自然语言词。比如说看过的一些美剧,可能是句未来的话,有时候不管从语音上面还是文字上面还是发表的内容中,有各种各样的监控,这样可能会不会导致一种行为,可能是对实事的判断或者是有些想法的问题,可能会变成非自然语言的表达,用其他的方式表达会造成这样的现象,对于这个方面有些什么看法?

阿里巴巴iDST上乘:这个问题很有挑战性,刚才讲了语言会变化,某一些人对于某一类特殊的场景会用某一些特殊的官方语言来表达,其他话会相对比较自然,假设对话的两个都是淘宝的卖家,一起讨论标题怎么写。也许会将一些例子,讨论过程中其他话就会比较正常,但混在一起对话,机器再去理解就会很困难。对于这种场景有一个比较初步的解决方法,做一些片断式的场景判断。关于英文,比如电影的字幕,它一定是分场景的,一段一段的对话。这段讲逛街,那段讲买衣服、讲吃东西,要做场景一段一段切分判断之后,再用内部的场景结合这个具体的算法,具体的适配算法去解决这样的问题。这是一种解决的方案。但是最终极的解决方案,我们要对两个人聊天的淘宝卖家所涉及的话题,通常会有一些什么样场景的细分,要做很深度的理解,然后用统一模型去解决。如果逐渐细分,细分到一定程度它是永无止境的,就像做分治算法一样,分治到一定程度,做太细就做不了了,这个问题其实很难,回头我们可以再当面探讨一下。

No3实体关系挖掘在AliNLP平台是否有研究过,深度学习在这个里面有没有一些结合的应用?

阿里巴巴iDST上乘:实体关系挖掘是知识图谱构建中很核心的一个问题,其实已经做了很多尝试,但今天没有讲到。实体关系挖掘主要分为两个步骤来做,第一就是先要识别出来,句子里面有什么样的实体,第二就是人和实体之间的关系怎么识别?前一个问题是需要建一个实体库,用基于规则的方式去做处理。第二个要构建一些实体识别的训练语料,用模型的方式解决,利用模型和规则的方式做融合,才会使得实体识别做的能足够好。对关系层面需要对这两种实体之间的某一些关系,最好先做预定义,比如先定义有几十种关系,每一种关系大概的Pattern是什么样子?或者说每一种关系的大概的那个就是它关系两个实体之间的context是什么,再做训练模型进行训练,这样可以做到一定的效果,深度学习对于实体关系学习是非常重要的。可以关注一下ACL,ACL有一个开源的一个论文库叫ACL Anthology,里面有上万篇论文搜索下,里面有很多论文在探讨此问题:实体关系之后在深度学习上怎么做?所谓深度学习无外乎是说,把context做representition的表示之后,向量化以便使context更加的语义化,然后在实体关系判别过程当中,不管是层次化的分类还是多分类,逐级二分类的方式来做,在做特征构建和分类算法的时候,使用深度学习去做特征表示,还是用深度学习去做最终的端到端的学习,都可以做尝试。也可以用fasText去试一试,也可以用DNN,或者RNN、CNN等等,LSTM、还有GRU等等。

No4.目前深度学习在context上的向量化表示,跟传统的word to vector,它是浅层的神经网络,差别有多大?word to vector表示出来的已经有一些语义,深度的用DNN、RNN、LSTM这些差异又有多大?是否有研究过能提升多少?

阿里巴巴iDST上乘:好问题,其实word to vector本身也是深度学习中的一种很好的尝试,在整个自然语言处理里面,最早引入深度学习就是从word to vector开始的,里面有几种比较经典的算法.更深入的事情,word to vector会出现这样一种问题,比如说”苹果”这个词,如果用word to vector测定出来结果,向量表示它是唯一的,但是都知道“苹果”有多种意思,可能是水果,可能是品牌名称,向量究竟是倾向于表示品牌还是表示水果呢?有些人已经在探索一种方式,对word to vector出来的结果还要考虑它的语义类别,在不同的语义类别上有不同的vector,这可以做的更细。但是这种更细的做法并不是用了lstm或者RNN去做的,而是把问题描述成一个新的框架,在里面加入一些新的考虑。用分类的方法来做,如果说要一刀切,比如要用锤子找钉子的思路去做,现在有了RNN的锤子,能不能把word to vector的锤子换掉?其实不可以的,它是不同的工具,工具一定是有能力范畴的,最好从问题的本质出发,把向量表示的学习的方式做的更好,这方面在中科院何世柱老师做了很深入的研究,可以搜索调他讲的报告,可以去做一些分析。阿里巴巴也在做这方面的探索,用哪一种表示做的更好?现在比较好的一种表示方法是DSSM,它考虑的是更多此类信息,而且动态化。比单纯的word to vector要考虑的更深入一点,模型之间本身没有优劣之分,word to vector目前也是整个自然语言处理领域里面深度学习最好用的工具,它很容易上手,但确实因为太容易上手了,使得它更深入去定制就相对困难一点,大家可以做多的尝试,DSSM是微软最早发明的,里面也有很好的论文和工具。

NO.5分享中所讲的语料库,同义词、近义词库还有字典,这些字典是怎么得出来的呢?

阿里巴巴iDST上乘:各种各样的同义词、上下位、语义词库,还有情感词库怎么得来的?首先算法,假设我们今天什么都没有,从零开始做,首先根据业务至少拍脑袋想出来一些词,想出来的词可以作为种子,用bootstrap的算法,或者用自动扩展的思路去搭建词库,比如说应该知道种子词在什么上下文或者什么样的意思,可以先把上下文片断拿出来,把种子词替换成一个X。然后X形成的pattern,在更大的海量语料库里面再做新一轮的抽取,抽取出来某种关系,大量的X,然后出现Y、Z,然后再把Y、Z扩展出来若干词,再放到另外新一轮的语料中进行迭代,扩展出来很多pattern。pattern和种子词一轮一轮的迭代,就会出现大量的信息。但是随着迭代增多后,会使得扩展的质量变差,这时要找一个threshold,找个平衡点。确认好平衡点后才会使得最终词库的质量比较高,但如果要商用的话,一定要一条一条查看一遍,否则一旦某一条有错误会给造成很大的损失,这是第一种做法。
第二种做法也可以找专业的专家来编辑,要保证效果足够好,确实要雇佣几个专业人士天天处理这个事。这方法看起来比较笨,但是有比较好的效果。但是在处理的过程中开发人员可以做各种各样的工具,来辅助把这个事情越做越快、越做越好,甚至形成一个产品。可以再去做任何事情,只要做类似的事情,都可以就按照这个方法找几个人快速的做这完事情。很多人正在做这种事情,以翻译为例,翻译现在最火爆的市场不是自动翻译,是人工辅助机器翻译,找一堆人来帮助机器快速的翻译,或者机器翻译好之后人工怎么快速的校对,类似的思路可以做很多尝试。现在网上也有很多开源的辞典可以用,可以把它们当做一个很好的输入再扩展,这个一定要结合自己的领域来定制,这是最快的方式。要一蹴而就或者直接拿过来就可以用,目前几乎是不可能的。

点击查看更多云栖TechDay的往期视频:https://yq.aliyun.com/edu/lessonTagSearch/cid_695-tagid_13553?spm=5176.8643059.740229.6.6LaMOR

目录
相关文章
|
2月前
|
机器学习/深度学习 自然语言处理
利用深度学习技术改进自然语言处理中的命名实体识别
命名实体识别(Named Entity Recognition, NER)在自然语言处理领域扮演着重要角色,但传统方法在处理复杂语境和多样化实体时存在局限性。本文将探讨如何利用深度学习技术,特别是基于预训练模型的方法,来改进命名实体识别,提高其在现实场景中的性能和适用性。
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习在自然语言处理中的应用与挑战
【5月更文挑战第11天】 随着人工智能技术的飞速发展,深度学习已经成为了自然语言处理(NLP)领域的核心动力。本文旨在探讨深度学习技术在NLP中的创新应用,并分析当前面临的主要挑战和潜在的解决途径。我们将重点讨论循环神经网络(RNN)、卷积神经网络(CNN)以及最新的变换器模型(Transformers),这些模型在文本分类、机器翻译和语音识别等任务中取得了显著成效。文章还将涉及深度学习模型的可解释性问题、数据依赖性和计算资源要求等关键议题,为未来的研究方向提供参考。
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
自然语言处理(NLP)技术入门指南
【5月更文挑战第3天】本文是自然语言处理(NLP)技术的入门指南,介绍了NLP的基本概念、关键技术和学习建议。NLP旨在实现人机自然语言交互,应用于机器翻译、文本分类等领域。核心技术包括词法分析、句法分析、语义分析及深度学习模型。入门学习需掌握基础知识,动手实践,关注前沿技术并持续学习。通过学习NLP,可为人工智能发展贡献力量。
|
9天前
|
机器学习/深度学习 编解码 自然语言处理
如何评价深度学习在自然语言处理、计算机视觉等领域的应用成果?
【5月更文挑战第3天】如何评价深度学习在自然语言处理、计算机视觉等领域的应用成果?
30 6
|
11天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习在图像识别中的应用与挑战探索机器学习中的自然语言处理技术
【4月更文挑战第30天】 随着人工智能技术的飞速发展,深度学习已经成为计算机视觉领域的核心动力。本文将探讨深度学习在图像识别任务中的关键技术、应用实例以及面临的主要挑战。我们将重点讨论卷积神经网络(CNN)的架构优化、数据增强技术以及迁移学习的策略,并通过具体案例分析其在医疗影像、自动驾驶和面部识别等领域的应用成效。同时,我们也将指出当前模型泛化能力不足、对抗性攻击以及算力资源需求等挑战,并提出潜在的解决方向。 【4月更文挑战第30天】 在人工智能领域,自然语言处理(NLP)是赋予机器理解和响应人类语言能力的关键技术。本文将深入探讨NLP的发展历程、核心技术及其在不同领域的应用案例。我们将从
|
12天前
|
机器学习/深度学习 自然语言处理 PyTorch
【Python 机器学习专栏】自然语言处理中的深度学习应用
【4月更文挑战第30天】本文探讨了深度学习在自然语言处理(NLP)中的应用,包括文本分类、情感分析和机器翻译等任务。深度学习的优势在于自动特征学习、强大的表达能力和处理大规模数据的能力。常见模型如RNN、LSTM、GRU、CNN和注意力机制在NLP中发挥作用。Python的TensorFlow、PyTorch、NLTK和SpaCy等工具支持NLP研究。然而,数据稀缺、模型解释性和计算资源需求高等挑战仍待解决。随着技术进步,未来深度学习将进一步推动NLP发展,实现更智能的语言交互。
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
探索机器学习中的自然语言处理技术
【4月更文挑战第29天】本文将深入探讨自然语言处理(NLP)在机器学习领域中的应用和挑战。我们将介绍NLP的基本原理,包括文本预处理、特征提取、模型训练等步骤。然后,我们将讨论一些最新的NLP技术,如深度学习、预训练模型等,并分析其在实际问题中的应用效果。最后,我们将展望NLP的未来发展趋势,以及其在人工智能中的潜在影响。
|
15天前
|
机器学习/深度学习 人工智能 自然语言处理
【专栏】自然语言处理NLP在文本分析中的应用、面临的挑战以及未来的发展方向。
【4月更文挑战第27天】本文探讨了NLP在文本分析中的应用,如客户服务、市场分析等领域,同时指出NLP面临的挑战,如语言多样性、歧义消解及大规模数据处理。随着技术发展,NLP将深化跨语言分析和个性化理解,并关注隐私保护。未来,可解释的AI和联邦学习等技术将为NLP带来新机遇,开启更智能的信息处理时代。
|
18天前
|
机器学习/深度学习 人工智能 自然语言处理
探索机器学习中的自然语言处理技术
【4月更文挑战第24天】本文深入探讨了自然语言处理(NLP)在机器学习领域中的应用与进展。通过分析最新的技术动态,阐释了深度学习如何增强NLP的能力,并讨论了当前面临的挑战及未来的发展趋势。文中不仅总结了NLP的核心概念和关键技术,还通过案例研究展示了其在实际应用中的潜力。
|
24天前
|
机器学习/深度学习 自然语言处理 PyTorch
PyTorch在NLP任务中的应用:文本分类、序列生成等
【4月更文挑战第18天】PyTorch在NLP中应用于文本分类和序列生成,支持RNN、CNN、Transformer等模型构建。其动态计算图、丰富API及强大社区使其在NLP研究中备受欢迎。预训练模型和多模态学习的发展将进一步拓宽PyTorch在NLP的应用前景。