在上网查阅几篇博客之后,整理和汇总了一下自然语言处理常用的开源工具。(中文的我就略过了)
在正文之前,首先要明确下面这个技术概要(这些来自前两天看的一本科普自然语言处理的书,实际上这也是目前我对NLP唯一了解的东西):
- 自然语言处理的三项基本技术(按先后顺序来):
- 单词切分(又叫词素切分)
- 句法分析
- 语义理解
1.Natural Language Toolkit(NLTK)
http://www.nltk.org/
python的,简单易用
这个也是我最近再看的书上建议使用的处理工具。它配有许多现成的文本集,适合用来入门NLP。
英文单词的词性表
2. The Stanford Natural LanguageProcessing Group
Stanford NLP Group是斯坦福大学自然语言处理的团队,开发了多个NLP工具,官网网址为:http://nlp.stanford.edu/software/index.shtml。
2.1 Stanford CoreNLP
采用Java编写的面向英文的处理工具。
主要功能包括分词、词性标注、命名实体识别、语法分析等。
2.2 Stanford Word Segmenter
采用CRF(条件随机场)算法进行分词,也是基于Java开发的,同时可以支持中文和Arabic,官方要求Java版本1.6以上。
2.3 Stanford POS Tagger
采用Java编写的面向英文、中文、法语、阿拉伯语、德语的命名实体识别工具。
2.4 Stanford Named Entity Recognizer
采用条件随机场模型的命名实体工具。
2.5 Stanford Parser
进行语法分析的工具,支持英文、中文、阿拉伯文和法语。
2.6 Stanford Classifier
采用Java编写的分类器,下载地址为:http://nlp.stanford.edu/software/classifier.shtml。
3. Apache OpenNLP–2014.12.29更新
OpenNLP是Apache下的一个自然语言处理工具包,提供了分词、分句、词性标注、命名实体识别等 功能。官网地址为:http://opennlp.apache.org/ 官方提供了文档说明以及API,有命令行调用和程序代码使用两种方式。
看了几份示例程序,发现这个和以前很喜欢做的一件事 ------调API很类似。。。
最后放一张看到的英文单词词性表。