NLP随想
(本文来自博主公众号原创,因为下一篇要写一个GTP-3的,所以有必要一起啰嗦一下NLP先)
Team里有一个小伙子长期以来一直远程工作,这几个月这个国家,那几个月那个国家。如今在塞尔维亚,因为CORD-19也没法动了。因为积极参加机器学习的各种活动,被一个机器学习爱好者组织推荐到某大学去教授机器学习的课。
昨天他在Team里的channel上提问,如果是你,你愿意在机器学习的NLP章节里学到什么?
Team里的语言学博士回答:
是什么使得人类语言的机器学习这么困难,或者说这么的与众不同。
语言处理需要我们牢记的是什么方面,特别是与图像处理相比起来。
当把文字转化成机器学习的数值输入时,我们丢失了什么信息。
词真的是语言处理的最小单位吗。
深度学习到底有多懂人类语言。
点好多,是不是。借此机会,我也再次思考了一下,为什么自然语言处理这么难。
首先,还是对上下文的依赖性。有人要说了,依赖上下文的东西可多了,比如说天气预报,比如说维修预测,比如说心电图预警,数也数不完,怎么就你抱怨多呢。我经常对朋友这么说,NLP是extremely context dependent。一句话或一个词要表达的意思在不同的上下文的可以有完全相反的意思。或者你甚至不需要说出那个词,光靠上下文就可以推导出来(这也可以说活是language model的工作原理,根据上下文,然后从统计学上推导出最有可能出现的下个词)。
那我们就多说说NLP的对上下文是怎么依赖的。
自然语言对上下文的依赖不仅是依赖过去,还依赖未来。这就是为什么单向依赖的RNN不如双向依赖的BiLSTM灵。
依赖度不是离的越近就依赖越大,所以RNN这一类的模型并不能最佳的解决自然语言问题。这就是为什么来了个自由依赖的attention model。Attention Model的出场有多霸气,论文的题目叫做: Attention is All You Need.
自然语言上下文依赖的跨越度很大,可能依赖于前面好几句的话,甚至前面好几章出现的话。传统的模型都是谈论句子内部的依赖,后来出现了句子之间依赖的各种衍生模型。
但以上的都是字面上的语言,谈到的还是文字与文字之间的纵向依赖。自然语言还有一个重要的上下文横向依赖。比如说同样一句话,”这个人真是太好了”,很正常的说和很生气的说就是相反的意思。A说和B说可能表达的不是同样程度的好。曾经有人直接给出结论: 自然语言的情感分析是无法解决的难题。虽然有点武断,但也是到处了横向依赖的重要性,如果抛弃了横向上下文,就丢了重要的信息,这种情况下说无解也不无道理。
自然语言处理NLP正在从传统的基于语法分析,构词分析,语义解析慢慢过渡到基于统计学的方向上来。吴军博士的<数学之美>和<智能时代>都提到了这个重要的转变,分析的非常好。但是目前,单纯依赖于统计学也不太行。没有绝对完备的数据。现有的public模型或embedding都是训练在公开数据上,比如说wiki或google news。从统计学上来说,它们都不能全面的代表自然语言,和人类自然对话中的语言风格相聚更是相当大。当然也有很多的课题研究如果进行domain转换。另外即使找到了完备的数据,要从完备的数据当中提取所有含有信息量的东西,是需要超复杂的神经网络超大计算量。也许在拼准确度等score的时候很有用,但商用起来难度非常大。所以更多商用的做法是结合了传统的语言分析和有效的统计学模型。词典其实就是属于传统语言分析范畴的, 但现在的语言模型基本还是离不开它的。
在神经网络以deep learning的新姿态重出江湖的十多年来,自然语言的进步取得了非常大的进展。
比如说文本的自动翻译。谷歌翻译中,英语和瑞典语互译有时候相当的地道。甚至瑞典语直接翻译成中文有时候也是相当的准确,当然整篇文章的自动翻译还有很多工作要做,大数据背景下,Data Scientist们如果有足够的motivation来做这件事,应该会进展的相当快。
自动问答系统QA逐步占领了每个企业的客服网站。
语音识别的应用越来越多。对语音输入的要求也越来越低。
机器人写新闻稿子不是啥新鲜事,写文章写诗也不在话下,当然有时候还是不通的。
通过使用者的评论来分析产品在市场上的欢迎度,范围不仅仅是在official的产品评价当中,每一个与产品相关的twitter,facebook post,新闻报道都是分析的对象。结果自然更加准确。
NLP每向前迈出一步都会推动无数的应用的产生。没有你做不到,只有你想不到。
更多原创文章,欢迎博主微信公众号