本文介绍自然语言处理的常见任务,使读者在遇到实际问题时能够找到用怎样的工具去解决。

众所周知,自然语言处理的目标是让计算机理解人类文字,使计算机具备理解和推理的能力。现实任务中,用到自然语言处理技术的有如下几个场景:
当我们新推出了一款产品,如何衡量它在市场的评价?
当我们看到受理人的申请贷款信件在犹豫是否应该贷款给受理人?
某某公司被报道出丑闻,是否会影响其明天的股价?
如何做翻译系统,对话系统等?


一. 分词与向量化

常见的分词工具包括 :NLTK,ICTCLAS,JIEBA 。使用此类工具,你可以完成基本的分词任务。但是,仍不能满足日常需求,因此我们还需要进行词干化,同义词替换操作,才能形成一个干净的分词结果。例如使用精确模式的分词结果:

我来到北京清华大学 ------> 我/ 来到/ 北京/ 清华大学

在应用各种模型之前,需要先进行向量化操作。向量化操作指用向量来表示词汇的方法, 是无监督方法, 其规则是把语义相识或前后文相似的词汇的向量距离更近; 可以查看这篇文章python文本分析,这篇文章的末尾总结了常见的向量化操作。

二. 实体识别

使用NLTK可以很好的完成实体识别,注意实体识别中的评分规则,严格评分和宽松评分的结果会不一致。NLTK和ICTCLAS可以很好的完成此项功能。例如:

我用自然语言处理 --------> 自然语言处理

三. 情感分析

使用NLTK ,TEXTBLOB,SNOWNLP可以很好的完成情感分析,注意使用预处理的模型,注意训练的数据领域不一样,所以结果请谨慎对待。例如:

我恨你 --------- > 0.1 我爱你 ----------> 0.9

四. 自动化摘要

NLTK,GENSIM,SUMY可以很好的完成自动化摘要,使用TextRank算法和LSA算法可以取得相对较好的结果。此网站 autotldr (u/autotldr) - Reddit 使用自动化摘要技术提取每篇新闻的摘要,是目前最好的商用产品之一。
##五. 主题识别
根据文档中的词语观测变量推出主题隐藏变量是主题识别的核心思想,也即是广为流传的LDA模型。Gensim包可以很好的完成这项任务。参见我的这篇文章 python文本分析 中的任务3.

六. 总结

旨在做工程的, 关注的已不是算法的实现本身, 而是更好的应用算法模型工具, 来达到更好的效果. 但是特征的处理还是最重要的, 特征决定上限. 所以专注对数据的处理吧, 专注github;

参考文献

  1. https://zhuanlan.zhihu.com/p/34194797