..................................内容纯转发+收藏...................................

学习自然语言这一段时间以来接触和听说了好多开源的自然语言处理工具,在这里做一下汇总方便自己以后学习,其中有自己使用过的也有了解不是很多的,对于不甚了解的工具以后学习熟悉了会做更新的。

1.IKAnalyzer

IK Analyzer是一个开源的,基于Java语言开发的轻量级的中文分词工具包。从2006.12推出1.0版本开始,IK Analyzer已经推出了多个版本,当前最新版本为2012 u6,最初基于Luence,从3.0开始成为面向Java的公用分词组件,独立于Luence,下载地址为:http://code.google.com/p/ik-analyzer/。IK支持细粒度和智能分词两种切分模式,支持英文字母、数字、中文词汇等分词处理,兼容韩文、日文字符。可以支持用户自定义的词典,通过配置IKAnalyzer.cfg.xml文件来实现,可以配置自定义的扩展词典和停用词典。词典需要采用UTF-8无BOM格式编码,并且每个词语占一行。配置文件如下所示:

  1. <properties>
  2. <comment>IK Analyzer 扩展配置</comment>
  3. <!--用户可以在这里配置自己的扩展字典-->
  4. <entry key="ext_dict">ext.dic;</entry>
  5. <!--用户可以在这里配置自己的扩展停止词字典-->
  6. <entry key="ext_stopwords">stopword.dic;chinese_stopword.dic</entry>
  7. </properties>

IK部署很简单,只需要把IKAnalyzer2012_u6.jar部署于项目的lib中,同时将IKAnalyzer.cfg.xml文件以及词典文件置于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((lex=ik.next())!=null){
  11. //              System.out.print(lex.getLexemeText()+" ");
  12. wordsBuffer.append(lex.getLexemeText()).append(" ");
  13. }
  14. }catch(Exception e){
  15. logger.error(e.getMessage());
  16. }
  17. return wordsBuffer.toString();
  18. }

IK简单、易于扩展,分词结果较好并且采用Java编写,因为我平时的项目以Java居多,所以是我平时处理分词的首选工具。

2.中科院ICTCLAS

ICTCLAS是由中科院计算所历经数年开发的分词工具,采用C++编写。最新版本命名为ICTCLAS2013,又名为NLPIR汉语分词系统,官网为:http://ictclas.nlpir.org/。主要功能包括中文分词、词性标注、命名实体识别、用户词典功能,同时支持GBK编码、UTF8编码、BIG5编码,新增微博分词、新词发现与关键词提取。可以可视化界面操作和API方式调用。

3.FudanNLP

FudanNLP主要是为中文自然语言处理而开发的工具包,也包含为实现这些任务的机器学习算法和数据集。FudanNLP及其包含数据集使用LGPL3.0许可证。

主要功能包括:

信息检索:文本分类,新闻聚类。

中文处理:中文分词,词性标注,实体名识别,关键词抽取,依存句法分析,时间短语识别。

结构化学习:在线学习,层次分类,聚类,精确推理。

工具采用Java编写,提供了API的访问调用方式。最新版本为FudanNLP-1.6.1,下载地址为:http://code.google.com/p/fudannlp/

下载安装包后解压后,内容如下图所示:

在使用时将fudannlp.jar以及lib中的jar部署于项目中的lib里面。models文件夹中存放的模型文件,主要用于分词、词性标注和命名实体识别以及分词所需的词典;文件夹example中主要是使用的示例代码,可以帮助快速入门和使用;java-docs是API帮助文档;src中存放着源码;PDF文档中有着比较详细的介绍和自然语言处理基础知识的讲解。

初始运行程序时初始化时间有点长,并且加载模型时占用内存较大。在进行语法分析时感觉分析的结果不是很准确。

4.The Stanford Natural LanguageProcessing Group

Stanford NLP Group是斯坦福大学自然语言处理的团队,开发了多个NLP工具,官网网址为:http://nlp.stanford.edu/software/index.shtml。其开发的工具包括以下内容:

4.1 Stanford CoreNLP

采用Java编写的面向英文的处理工具,下载网址为:http://nlp.stanford.edu/software/corenlp.shtml。主要功能包括分词、词性标注、命名实体识别、语法分析等。

我曾经采用它进行英语单词的词性还原,具体应用详见文章《采用Stanford CoreNLP实现英文单词词形还原》。

4.2 Stanford Word Segmenter

采用CRF(条件随机场)算法进行分词,也是基于Java开发的,同时可以支持中文和Arabic,官方要求Java版本1.6以上,推荐内存至少1G。下载地址为http://nlp.stanford.edu/software/segmenter.shtml

简单的示例程序:

  1. //设置分词器属性。
  2. Properties props = new Properties();
  3. //字典文件地址,可以用绝对路径,如d:/data
  4. props.setProperty("sighanCorporaDict", "data");
  5. //字典压缩包地址,可以用绝对路径
  6. props.setProperty("serDictionary","data/dict-chris6.ser.gz");
  7. //输入文字的编码;
  8. props.setProperty("inputEncoding", "UTF-8");
  9. props.setProperty("sighanPostProcessing", "true");
  10. //初始化分词器,
  11. CRFClassifier classifier = new CRFClassifier(props);
  12. //从持久化文件中加载分词器设置;
  13. classifier.loadClassifierNoExceptions("data/ctb.gz", 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编写的面向英文、中文、法语、阿拉伯语、德语的命名实体识别工具,下载地址为:http://nlp.stanford.edu/software/tagger.shtml。还没有接触过,需要以后学习研究。

4.4 Stanford Named Entity Recognizer

采用条件随机场模型的命名实体工具,下载地址为:http://nlp.stanford.edu/software/CRF-NER.shtml。还没有接触过,需要以后学习研究。

4.5 Stanford Parser

进行语法分析的工具,支持英文、中文、阿拉伯文和法语。下载地址为:http://nlp.stanford.edu/software/lex-parser.shtml。具体的使用介绍见《采用Stanford Parser进行中文语法解析》。

4.6 Stanford Classifier

采用Java编写的分类器,下载地址为:http://nlp.stanford.edu/software/classifier.shtml。还没有接触过,需要以后学习研究。

原文地址:http://blog.csdn.net/cuixianpeng/article/details/16288307

自然语言处理(NLP)常用开源工具总结(转)的更多相关文章

  1. NLP常用开源/免费工具

    一些常见的NLP任务的开源/免费工具, *Computational Linguistics ToolboxCLT http://complingone.georgetown.edu/~linguis ...

  2. 自然语言处理NLP学习笔记二:NLP实战-开源工具tensorflow与jiagu使用

    前言: NLP工具有人推荐使用spacy,有人推荐使用tensorflow. tensorflow:中文译作:张量(超过3维的叫张量)详细资料参考:http://www.tensorfly.cn/ J ...

  3. 曼孚科技:AI自然语言处理(NLP)领域常用的16个术语

    ​自然语言处理(NLP)是人工智能领域一个十分重要的研究方向.NLP研究的是实现人与计算机之间用自然语言进行有效沟通的各种理论与方法. 本文整理了NLP领域常用的16个术语,希望可以帮助大家更好地理解 ...

  4. NLP开源工具

    最近有人问我几次NLP有哪些开源工具,这里做个笔记.

  5. Java自然语言处理NLP工具包

    1. Java自然语言处理 LingPipe LingPipe是一个自然语言处理的Java开源工具包.LingPipe目前已有很丰富的功能,包括主题分类(Top Classification).命名实 ...

  6. 自然语言处理NLP学习笔记一:概念与模型初探

    前言 先来看一些demo,来一些直观的了解. 自然语言处理: 可以做中文分词,词性分析,文本摘要等,为后面的知识图谱做准备. http://xiaosi.trs.cn/demo/rs/demo 知识图 ...

  7. GitHub 开源工具整理

    技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 ...

  8. 大数据分析系统Hadoop的13个开源工具

    Hadoop是由Apache基金会开发的一个大数据分布式系统基础架构,最早版本是2003年原Yahoo!DougCutting根据Google发布的学术论文研究而来. 用户可以在不了解分布式底层细节的 ...

  9. 自然语言处理(NLP)

    苹果语音助手Siri的工作流程: 听 懂 思考 组织语言 回答 这其中每一步骤涉及的流程为: 语音识别 自然语言处理 - 语义分析 逻辑分析 - 结合业务场景与上下文 自然语言处理 - 分析结果生成自 ...

随机推荐

  1. C++中的class

    C++中的class是C++不同于C的关键所在: 是面向对象中声明的类:   公有成员public   member      在程序的不论什么地方都能够被訪问实行信息隐藏的类将      其publ ...

  2. canvas绘制贝塞尔曲线

    原文:canvas绘制贝塞尔曲线 1.绘制二次方贝塞尔曲线 quadraticCurveTo(cp1x,cp1y,x,y); 其中参数cp1x和cp1y是控制点的坐标,x和y是终点坐标 数学公式表示如 ...

  3. 合并多段zip文件并解压缩

    cat xxx.zip.*** >xxx.zip unzip xxx.zip

  4. 【Unity 3D】学习笔记四十一:关节

    关节 关节组件能够加入至多个游戏对象中,而加入关节的游戏对象将通过关节连接在一起而且感觉连带的物理效果.须要注意的是:关节必须依赖于刚体组件. 关节介绍 关节一共分为5大类:链条关节,固定关节,弹簧关 ...

  5. Linux httpd 跳转简单方法二

    使用mod_proxy 这种方法要添加上mod_proxy_http.so 在httpd.conf 中打开httpd-vhost 在 httpd-vhost 里面添加上 <VirtualHost ...

  6. struts2注解redirect传递参数解决方案时,中国的垃圾问题

    struts2注解redirect传递参数解决方案时,中国的垃圾问题 试过很多方法  tomcat 编码  .字符串转换 .URLEncoder  .. 但是,没有解决方案,然后仔细阅读   stru ...

  7. PHP 14:类的实例

    原文:PHP 14:类的实例 在本章中我们将介绍一个实例,来进一步对类加深了解.本章构建一个Page类,它代表了一个页面.其中有显示页面的title,样式,内容等函数.此页面的效果如下:我们将把这个页 ...

  8. [ACM] POJ 2506 Tiling (递归,睑板)

    Tiling Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7487   Accepted: 3661 Descriptio ...

  9. js 实现自动换行

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. Spring IOC之基于JAVA的配置

    基础内容:@Bean 和 @Configuration 在Spring中新的支持java配置的核心组件是 @Configuration注解的类和@Bean注解的方法. @Bean注解被用于表明一个方法 ...