自然语言处理如何入门

ps:笔者会持续更新~

领域分支概括

俗话说得好:

做research或者学习某个技能最重要的是要对自己的research要非常熟悉(3mins让别人听懂你做的这玩意儿是个啥,contribution在哪里,让别人觉得你做的东西有意义)

那么我就整理一下自然语言处理相关领域分支~

自然语言包括许多分支,主要有:

机器翻译、自动文摘、信息检索、文档分类、问答系统、信息过滤、信息抽取、文本挖掘、语音识别等。

其中很多分支都是相互交叉的,大家可以根据自己的兴趣专攻某个领域。我的方向则为人工智能->机器学习->自然语言处理(NLP)->文本挖掘

那么机器学习在文本挖掘中有哪些应用呢?

(1)话题识别

话题识别属于文本分类,实验中常见的例子就是把新闻文本分类成“财经、教育、体育、娱乐”等等。我目前常用的方法主要是“word2vector”和“word to bags”。 word2vector即“词向量”,通过计算文本中词出现的位置、词性和频率等特征,判断新文本是否来自于此类。比如识别文字是评论性文本还是新闻类文本的一种方案就是评论性语句中出现的情态动词和感叹词比较多且位置不固定。“word to bags”是词袋,在topic model中应用的比较多。“word to bags”计算每个词出现在每个类别的概率,然后通过TF-IDF或者信息增益或者概率找到类别信息含量高的词语,通过判断这些词语的共线程度进行文本分类。

(2)情感分类

情感分析就是用户的态度分析。现在大多数情感分析系统都是对文本进行“正负二项分类的”,即只判断文本是正向还是负向的,有的系统也能做到三分类(中立)。比如,我要分析用户对2013年“马航370事件”的态度,只要找到该事件的话题文本,通过台大情感词典等工具判断情感词的极性,然后根据一定规则组合情感词的频度和程度即可判断文本的情感。但这种方法无法判断文本的评价刻面。比如,我现在有一百万条“小米手机评价”信息,我可以通过上面的方法了解大约有百分之多少的用户对小米手机是不满意的,但却无法知道这些不满意的用户是对小米手机的哪一个方面不满意以及占的比率(比如是外形还是性能)。常用的方法是构建小米手机相关词的种子词典,通过词典找到用户评论的刻面,再构建句法树找到评论该刻面的谓语和修饰副词,通过情感词典量化出情感极性,最后将量化后的评论刻面、修饰词、程度副词带入SVM进行文本分类。不过在这里并不适合使用naive bayes,因为在多刻面多分类中,naive bayes很容易出现过拟合。

(3)命名实体识别

所谓的命名实体识别是指让计算机自动识别出自己不认识的词。比如:“胡歌唱歌非常好听!”,计算机如何才能知道“胡歌”是一个词而不应该是“歌唱”是一个词呢?“胡歌”这个词对于绝大多数词库而言都不太可能存在,那么怎么能让机器识别出这个词并且以最大的可能认为这个词是正确的呢?我认为在所有的方法中,CRF的效果最好,甚至比HMM要好得多。CRF又称条件随机场,它能够记录训练数据中每个特征的状态及其周围特征的状态,当多个特征同时出现的时候,找出每个特征在多个特征组合中最有可能出现的状态。也就是说,CRF以“物以类聚”为基本论点,即大多数词出现的环境是有规律的,并不是杂乱无章的。选取特征的时候,以“字”为单位明显要比以“词”为单位好很多,因为命名实体的词是以字为单位才能理解的,比如“陈小春”,我们是以“陈/小/春”的意思来理解的,而不是“陈/小春”或者“陈小/春”。

(4)推荐系统

文本挖掘在推荐系统中的价值在于特征词权重的计算。比如我们给用户推荐一本新书。我们可以按照下面的方式进行建模:首先找到用户评论中关于书籍的所有特征词汇,建立特征词典;然后通过文本分析和时间序列分析结合用户评论的内容和时间紧凑度计算特征词的权重,表示某个用户关心的某个特征的程度。对建立好的用户评论特征程度表进行倒排索引,找到每个特征词的所有评价用户及其评价的权重,最后根据要推荐的书籍的特征找到可以推荐的用户列表,找到评论权重高的用户并把书籍推荐给他。

目前文本挖掘的主要研究领域有:文本结构分析、文本摘要、文本分类、文本聚类、文本关联分析、分布分析和趋势预测等。

所需知识储备

下面来说一说学习人工智能->机器学习->自然语言处理(NLP)->文本挖掘都需要哪些知识储备:

这里不仅仅是文本挖掘方向,整个NLP领域内其实都是适用的,只不过某个特殊领域会有细微的技术差别,但整体入门,还无需那么深入嘞~

  • 统计学习方法

    这个是最重要的,想要在这个领域深入研究,必须摸透统计学习方法,这里推荐李航教授的《统计学习方法》,一开始大家可能觉得枯燥无味,最好是结合相关的实际应用和代码来阅读,效果最好,理解起来也更方便一些。

  • NLP的整体流程

    这个大家一定要熟悉,对于流程中的每个步骤都烂熟于心,并知道什么时候运用什么方法解决问题,这是NLP的核心,包含的东西非常多,我未来会在博客中详细讲解

  • 一门语言

    学计算机归根到底还是需要用代码实现,光靠想点子也不成,所以大家一定要精通一门语言,最近机器学习最火热的大家应该都知道,就是python嘞~

posted @ 2018-05-13 18:12  口天丶木乔  阅读(350)  评论(0编辑  收藏  举报