Java⾃然语⾔处理NLP⼯具包
⾃然语⾔处理
1. Java⾃然语⾔处理 LingPipe
LingPipe是⼀个⾃然语⾔处理的Java开源⼯具包。LingPipe⽬前已有很丰富的功能,包括主题分类(Top Classification)、命名实体识别(Named Entity Recognition)、词性标注(Part-of Speech Tagging)、句题检测(Sentence Detection)、查询拼写检查(Query Spell Checking)、兴趣短语检测(Interseting Phrase Detection)、聚类(Clustering)、字符语⾔建模(Character Language Modeling)、医学⽂献下载/解析/索引(MEDLINE Download, Parsing and Indexing)、数据库⽂本挖掘(Database Text Mining)、中⽂分词(Chinese Word Segmentation)、情感分析(Sentiment Analysis)、语⾔辨别(Language Identification)等API。
下载链接:
2.中⽂⾃然语⾔处理⼯具包 FudanNLP
FudanNLP主要是为中⽂⾃然语⾔处理⽽开发的⼯具包,也包含为实现这些任务的机器学习算法和数据集。
演⽰地址:
FudanNLP⽬前实现的内容如下:
1. 中⽂处理⼯具
1. 中⽂分词
2. 词性标注
3. 实体名识别
4. 句法分析
5. 时间表达式识别
2. 信息检索
1. ⽂本分类
2. 新闻聚类
3.
java开发可视化界面
3. 机器学习
1. Average Perceptron
2. Passive-aggressive Algorithm
3. K-means
4. Exact Inference
下载链接:
3.⾃然语⾔处理⼯具Apache OpenNLP
OpenNLP 是⼀个机器学习⼯具包,⽤于处理⾃然语⾔⽂本。⽀持⼤多数常⽤的 NLP 任务,例如:标识化、句⼦切分、部分词性标注、名称抽取、组块、解析等。
下载链接:/
4.⾃然语⾔处理⼯具 CRF++
CRF++是著名的条件随机场开源⼯具,也是⽬前综合性能最佳的CRF⼯具。CRF++本⾝已经是个⽐较⽼的⼯具了,但鉴于其性能较好,仍然是⾃然语⾔处理很重要的⼀个⼯具。
中⽂分词库在使⽤该⼯具。
下载链接:
5、斯坦福⼤学NLP
很⽜叉的⼀个库
下载地址 /#browse%7C11864822
学习⾃然语⾔这⼀段时间以来接触和听说了好多开源的⾃然语⾔处理⼯具,在这⾥做⼀下汇总⽅便⾃⼰以后学习,其中有⾃⼰使⽤过的也有了解不是很多的,对于不甚了解的⼯具以后学习熟悉了会做更新的。
分词组件
1.IKAnalyzer
IK Analyzer是⼀个开源的,基于Java语⾔开发的轻量级的中⽂分词⼯具包。从2006.12推出1.0版本开始,IK Analyzer已经推出了多个版本,当前最新版本为2012 u6,最初基于Luence,从3.0开始成为⾯向Java的公⽤分词组件,独⽴于Luence,下载地址为:。IK⽀持细粒度和智能分词两种切分模式,⽀持英⽂字母、数字、中⽂词汇等分词处理,兼容韩⽂、⽇⽂字符。可以⽀持⽤户⾃定义的词
典,l⽂件来实现,可以配置⾃定义的扩展词典和停⽤词典。词典需要采⽤UTF-8⽆BOM格式编码,并且每个词语占⼀⾏。配置⽂件如下所⽰:
1. <properties>
2.    <comment>IK Analyzer 扩展配置</comment>
3.    <!--⽤户可以在这⾥配置⾃⼰的扩展字典-->
4.    <entry key="ext_dict">ext.dic;</entry>
5.
6.    <!--⽤户可以在这⾥配置⾃⼰的扩展停⽌词字典-->
7.    <entry key="ext_stopwords">stopword.dic;chinese_stopword.dic</entry>
8.
9. </properties>
IK部署很简单,只需要把IKAnalyzer2012_u6.jar部署于项⽬的lib中,同时将l⽂件以及词典⽂件置于src中,即可通过API 的⽅式开发调⽤。
⽰例代码:
1. /**
2.      * IK分词功能实现
3.      * @return
4.      */
5.    public String spiltWords(String srcString){
6.        StringBuffer wordsBuffer = new StringBuffer("");
7.        try{
8.            IKSegmenter ik=new IKSegmenter(new StringReader(srcString), true);
9.            Lexeme lex=null;
10.            while((())!=null){
11. //              System.out.LexemeText()+" ");
12.                wordsBuffer.LexemeText()).append(" ");
13.            }
14.        }catch(Exception e){
15.            (e.getMessage());
16.        }
17.        String();
18.    }
IK简单、易于扩展,分词结果较好并且采⽤Java编写,因为我平时的项⽬以Java居多,所以是我平时处理分词的⾸选⼯具。
2.中科院ICTCLAS
ICTCLAS是由中科院计算所历经数年开发的分词⼯具,采⽤C++编写。最新版本命名为ICTCLAS2013,⼜名为NLPIR汉语分词系统,官⽹为:。主要功能包括中⽂分词、词性标注、命名实体识别、⽤户词典功能,同时⽀持GBK编码、UTF8编码、BIG5编码,新增微博分词、新词发现与关键词提取。可以可视化界⾯操作和API⽅式调⽤。
3.FudanNLP
FudanNLP主要是为中⽂⾃然语⾔处理⽽开发的⼯具包,也包含为实现这些任务的机器学习算法和数据集。FudanNLP及其包含数据集使⽤LGPL3.0许可证。
主要功能包括:
信息检索:⽂本分类,新闻聚类。
中⽂处理:中⽂分词,词性标注,实体名识别,关键词抽取,依存句法分析,时间短语识别。
结构化学习:在线学习,层次分类,聚类,精确推理。
⼯具采⽤Java编写,提供了API的访问调⽤⽅式。最新版本为FudanNLP-1.6.1,下载地址为:。
在使⽤时将fudannlp.jar以及lib中的jar部署于项⽬中的lib⾥⾯。models⽂件夹中存放的模型⽂件,主要⽤于分词、词性标注和命名实体识别以及分词所需的词典;⽂件夹example中主要是使⽤的⽰例代码,可以帮助快速⼊门和使⽤;java-docs是API帮助⽂档;src中存放着源码;PDF⽂档中有着⽐较详细的介绍和⾃然语⾔处理基础知识的讲解。
初始运⾏程序时初始化时间有点长,并且加载模型时占⽤内存较⼤。在进⾏语法分析时感觉分析的结果不是很准确。
4.The Stanford Natural LanguageProcessing Group
Stanford NLP Group是斯坦福⼤学⾃然语⾔处理的团队,开发了多个NLP⼯具,官⽹⽹址为:。其开发的⼯具包括以下内容:
4.1 Stanford CoreNLP
采⽤Java编写的⾯向英⽂的处理⼯具,下载⽹址为:。主要功能包括分词、词性标注、命名实体识别、语法分析等。
我曾经采⽤它进⾏英语单词的词性还原,具体应⽤详见⽂章《》。
4.2 Stanford Word Segmenter
采⽤CRF(条件随机场)算法进⾏分词,也是基于Java开发的,同时可以⽀持中⽂和Arabic,官⽅要求Java版本1.6以上,推荐内存⾄少
1G。下载地址为。
简单的⽰例程序:
1. //设置分词器属性。
2.    Properties props = new Properties();
3. //字典⽂件地址,可以⽤绝对路径,如d:/data
4.    props.setProperty("sighanCorporaDict", "data");
5. //字典压缩包地址,可以⽤绝对路径
6.    props.setProperty("serDictionary","data/");
7. //输⼊⽂字的编码;
8.    props.setProperty("inputEncoding", "UTF-8");
9.    props.setProperty("sighanPostProcessing", "true");
10. //初始化分词器,
11.    CRFClassifier classifier = new CRFClassifier(props);
12. //从持久化⽂件中加载分词器设置;
13.    classifier.loadClassifierNoExceptions("", props);
14.    // flags must be re-set after data is loaded
15.    classifier.flags.setProperties(props);
16. //分词
17.    List words = classifier.segmentString("语句内容");
4.3 Stanford POS Tagger
采⽤Java编写的⾯向英⽂、中⽂、法语、阿拉伯语、德语的命名实体识别⼯具,下载地址为:。还没有接触过,需要以后学习研究。4.4 Stanford Named Entity Recognizer
采⽤条件随机场模型的命名实体⼯具,下载地址为:。还没有接触过,需要以后学习研究。
4.5 Stanford Parser
进⾏语法分析的⼯具,⽀持英⽂、中⽂、阿拉伯⽂和法语。下载地址为:。具体的使⽤介绍见《》。
4.6 Stanford Classifier
采⽤Java编写的分类器,下载地址为:。还没有接触过,需要以后学习研究。
5.jcseg
Jcseg是基于mmseg算法的⼀个轻量级中⽂分词器,同时集成了关键字提取,关键短语提取,关键句⼦提取和⽂章⾃动摘要等功能,并且提供了⼀个基于Jetty的web服务器,⽅便各⼤语⾔直接http调⽤,同时提供了最新版本的lucene, solr, elasticsearch的分词接⼝!Jcseg⾃带了⼀个 jcseg.properties⽂件
⽤于快速配置⽽得到适合不同场合的分词应⽤,例如:最⼤匹配词长,是否开启中⽂⼈名识别,是否追加拼⾳,是否追加同义词等!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。