自然语言处理-第九期-什么是Topic
Posted 好奇宝宝与机器学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自然语言处理-第九期-什么是Topic相关的知识,希望对你有一定的参考价值。
背景
上一期提到了Sentiment Analysis的应用场景,其中一个非常重要的环节是提取文本中的特征。 我找到的大部分特征提取(非监督)都是使用的Topic Model。所以本期将初步涉及我对Topic Model的学习和理解。
As usual,仍然会以问题的方式来引导整个文章的思路
什么是Topic
这个最基本的问题,对于Topic Model 理解至关重要。
比如上一期的例子“小米手机电池一般”,那么可能电池就是我们的特征或则topic。这是基于人类对文字理解的结果。我可以理解Topic不是形容词“一般”,但是为什么topic不是 小米呢?为什么不是手机呢? 其实能够看出,就算是从人类理解文字的角度,也是有模糊区域的。那么对于计算机,我们知道每个词都是一个个向量(参照第三期)。这个时候判断Topic 就更困难了。 并且如果是存在大量文本数据的情况下,如何找到Topic呢?
既然分析的是文本或者文章。让我们回顾一下文章的写作过程。假设,我要写一篇关于“健身”的文章。我们构思一下,此文章可能会包含以下三个主题:1. 健身的必要性 2. 器材的运用方法 3. 健身与饮食。 这只是个大框架,当然每个主题会有自己的论点,论据,或者换句话说:每个主题有自己的很多单词。
当我们完成这篇关于“健身”的文章之后,我们可以从三个层面来看待这篇文章:文档层面、主题(topic)层面、单词层面。文档层面,因为是个例子,所以只有一篇文章;主题层面,我们在构思文章的时候,设立了三个主题;单词层面,在议论每个主题时,我们会使用到不同的论据和单词。当我们回顾这篇文章的时候,可能会发现以下几个事实:
虽然我们已经设立了三个主题,但是该主题可能不会直接出现在文章中。如论述健身必要性时,可能用健身的优缺点,举例,然后论证健身是非常好的。 “必要性”这个单词可能完全不会出现;
每篇文章都有自己的侧重点,可能该篇“健身”文章50%放在必要性上,30%放在器材,另外20%放在健身与饮食;
不同主题我们会运用一些独特的单词。比如在将健身器材部分非常可能出现“跑步机”、“龙门架”、“椭圆机”等等。而这些单词在其他主题不太可能出现;在讲饮食的时候,我们可能会提及“蛋白粉”、“鸡胸肉”、“饮食控制”等等。
都是九年义务过来的,我相信以上过程大家都很熟悉。OK,神奇的时刻来了。将上述过程逆转。大家反向思考下,当你直接看到一篇完整的“健身”的文章的时候,我们如何判断其主题的呢?是不是能找到一些规律呢?
我相信通过上述的例子,大家可能已经有触碰到一些东西。再回到我们的问题,什么是主题(topic)??我自己个人的思考是,对于计算机,Topic是一个Pattern(规律),而Topic Model所做的就是通过某种算法寻找这个Pattern。首先,文章里的单词并不是随机分布并且随机产生的;其次,通过上面那个例子大家可以知道其中是有规律的。 再用下上面这个例子,一个很明显的点就是单词分布存在规律。三个主题中都可能出现“健身”和一些形容词。但是“蛋白粉”、“鸡胸肉”、“饮食控制”这种词的分布就完全是有规律的了。而Topic Model也是通过不同的算法来找寻这其中的规律。
那接着上面“蛋白粉”、“鸡胸肉”、“饮食控制”的例子。开个脑洞,如果最后计算机的topic model给出的是三个list:【鸡胸肉,蛋白粉,饮食控制】、【跑步机,椭圆机,龙门架】、【减肥,体重下降,精神状态】。那么,我们也能大概知道每个词背后的主题是什么了。所以换句话说,我们可以将Topic Model 看待为一个Cluster问题。而我们要做的就是将一些特征明显的词抓取出来。当然这只是一种思路而已,一种值得大家从概念上思考的一种思路。
总结下
大家可以想象下,对于一个文档来说,Topic是一个虚无飘渺的东西。而我们要找的就是这么个虚无缥缈的东西。那Topic到底是什么呢?Topic代表着文本背后的Pattern。当然对于计算机来说,任何东西都是Pattern,这可能是一句废话。但是挖掘单词分布的规律,挖掘文本的规律,而这个规律就是Topic。 不同的算法只是不同的方式来找寻和呈现该规律。
下期预告
本期花了一整期来解释什么是Topic? 一方面是这个确实重要,另一方面是我确实想了很久才想清楚,一头雾水了很久。也是晚上Google,无意中碰到一个Generative 逆向的东西,才大概有了点概念。写上面这个例子的过程的同时,也让我对这个概念更清晰了一点。希望对大家有帮助,有问题的朋友也可以留言,大家一起探讨。
最近也看了下LSA,LDA,LDA2vec,Intent 这些算法,背后的数学都很费脑子。我将跳过Math部分,直接将算法思路及应用部分。后续将给大家带来。
以上是关于自然语言处理-第九期-什么是Topic的主要内容,如果未能解决你的问题,请参考以下文章