Github地址: https://github.com/jobbole/awesome-machine-learning-cn
有时候会被问到你平时用过哪些机器学习相关的工具包呀?不能每次都只答个sklearn呀(虽然sklearn真的很好用~),这个github总结得很全了,这篇博客主要梳理一下自然语言处理和数据挖掘相关的资料,先整理一下,之后争取每个都用一下。由于工作和学习环境的关系,主要针对的是Python语言和C++(用得少),Scala目前还没有用过,但是可以了解一下,作为技术积累。感觉julia语言(集合了Python、C++、R)很有潜力~
Python语言
NLP方向:
1. jieba:中文断词工具。(常用)
(使用非常方便, 可以自定义词典,可以分词,词性分析,基于TF-IDF和TextRank提取关键词。)
官网为: https://github.com/fxsjy/jieba#jieba-1 (感谢作者的无私奉献,加膜拜大佬)
网上有很多对jieba的源码进行解读的,感兴趣的同学可以学习一下,并且python的源码也方便按照自己的需求进行一些修改。
2.SnowNLP:中文文本处理库。(没用过)
官网为:https://github.com/isnowfy/snownlp(感谢作者的无私奉献,加膜拜大佬)
空余时间可以看看源码,是对NLP基础知识的一个加深。
看起来蛮厉害的样子,还没有用过,之后可以一试。不过情感分析和文本分类针对不同的领域、任务和数据有不同的特性,一般还是自己训练合适的模型,通用的模型效果很难说。
转何成拼音,还有其他的一些Python库也很好用,比如xpinyin(https://github.com/lxneng/xpinyin),使用也相当方便。
繁体转换成简体这个没有试过,个人感觉这一步可以用来预处理,将所有的文本都转换成简体,尤其是针对评论类的不规则文本。
Tokenization(分割成句子),一些建模任务倾向于以段落或句子的形式输入文本,例如word2vec。你可以先将文本分割成句子,再将每个句子分割成单词,然后将每个句子保存到文件中,每行一个句子。
文本相似,没有尝试过,也算是一个分类问题,之前蚂蚁金服有个比赛就是判断两条文本是否相似,主要应用场景是智能客服,也是要根据具体的任务和数据而训练合适的模型。
3.NLTK,做英文NLP的人应该都用过此平台,专门有一本书讲了这个平台的用法。
官网在这里:http://www.nltk.org/
可以用来分词,英文并不是不需要分词的,只是和中文不同,英文是有空格作为天然分隔符的。还可以用来命名实体识别,句法分析,之后做英文的NLP的时候可以尝试一下。
4.Pattern,数据挖掘、自然语言处理、机器学习与网络分析。文档完善,之后可以尝试一下~
官网在这里:https://www.clips.uantwerpen.be/pattern
- 数据挖掘:包括网络服务(Google,Twitter,Wikipedia),网络蜘蛛,HTML DOM解析
- 自然语言处理
- 机器学习
- 网络分析
5.TextBlob:为普通自然语言处理任务提供一致的API,以NLTK和Pattern为基础,并和两者都能很好兼容。
官网在这里:https://textblob.readthedocs.io/en/dev/
6.nut:自然语言理解工具包,主要用来做CLSCL(跨语言结构对应学习)和NER(命名实体识别)
官网:https://github.com/pprett/nut
7.gensim:用来训练词向量
https://radimrehurek.com/gensim/models/word2vec.html
机器学习方向:
1. scikit-learn:基于SciPy的机器学习模块。
官网:http://scikit-learn.org/ 实在是很好用,里面的文档都应该过一遍,体会一下各个方法的区别。
2.MLlib in Apache Spark:Spark下的分布式机器学习库。
官网:http://spark.apache.org/docs/latest/mllib-guide.html 学习一下呀~