一直在做文本处理,但感觉做的很分散 没有系统,也没有发现很好的关于NLP的书籍。如果有,请推荐。
现在尝试着总结自己遇到的文本处理技术。
1、工具
- linux 文本处理工具 awk sed 比较常用
推荐两篇左耳朵耗子的博客。我很喜欢的大牛,还有幸和他聊了20分钟,O(∩_∩)O哈哈~
AWK 简明教程
sed 简明教程 - python 文本处理
这个也是文本处理的常用工具,并且现在有很多文本算法工具都是用python写的 ,极力推荐。
Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱
Natural Language Processing with Python
2、算法
2.1 文本特征
2.2 文本基础
- 分词
很基础 但非常重要的工具。可以使用最基本的前向后向切词,最大熵 ,crf条件随机场。
一般的小公司 推荐ansj_seg ,性能好 易于使用,java写的 天然可以用在MR 中。- 语法树 分析
- pos 词性标注
- 关键词分析
很多,诸如 tfidf,bm25 ,textrank, 品牌 产品词 属性词- 行业属性词提取 ()
比如淘宝评论的大家印象
比如情感分析- 新词发现
1、互联网时代的社会语言学:基于SNS的文本数据挖掘,名字很牛逼,其实就是新词发现。主要从左右熵 凝聚度来找
2、 query 搜索中去发现
高阶算法(文本任务)
-文本分类说道分类 ,就不能不提特征,最基本的特征有很多。 还有一类特征就是语义特征,语义特征 包括最出名的就是主题了,当然还有其他的诸如 同义词 query 改写,语义标签 比如 情感词,核心词,产品词,品牌词 型号 啥的
- 朴素贝叶斯 NB
- SVM
最大熵
一般来说NB能解决大部分问题,对于工业界,常用的也是效果最好的是NB+SVM ,对于比如邮件分类 评论的垃圾识别 效果非常好,基本能达到98% 左右,加上规则之类的很可能达到99%。
但是对于多分类,特别是类别很多,基本上就用NB+规则。还有一个利器就是最大熵,在一些应用上效果也非常不错,在78个类目中准确率达到96%。这还没有加文本的诸如词性 产品词之类的特征,加上之后效果会更好一点
分词 词性标注 属性分析
hmm
maxent
最大熵马尔科夫
crf
目前来说crf 效果最好情感分析
其实这个也属于文本分类的范畴 ,单独提出来就是工业界需求巨大,比如分析微博 Twitter来了解用户的情感,然后做推荐或者做股市相关的东西,现在互联网金融这么火,很多都拿这个来忽悠投资。
情感分析低阶点 的就是 简单特征提取 ,然后用svm来分类。高阶点的其实也就是特征做的更好一点,比如情感词的提取 比如语法的分析。主题分析
主题分析 就三种 LSA PLSA LDA
LDA 推荐 企鹅家rickjin写的博客,非常好learning to rank 解决文本问题
主要是使用搜索点击日志来分析title 词权重。这个在各大搜索公司都在使用。搜索日志是个好东西,能很容易的发现很多新趋势。
l2r 主要还是使用 svmrank 以及 gbdtrank。神经语言模型
这是现在的大趋势,我不想用Deep learning for NLP 这种title ,就是想避免花哨了。但无可否认 Deep learning 确实在NLP中 发力了,如很火的CNN以及RNN ,现在只能说很容易的达到了soa ,但一直没有很惊艳的突破。企鹅家的综述
word2vec word2vec的group 也有很多很重要的信息,建议订阅
cnn 用于文本分类
rnn rnn_lsmt
还有很多没写到的,以后再添加