本博客主要是对网络上的一些关于中文自然语言处理开源工具的博客进行整理、汇总,如果有涉及到您的知识产品等,请联系本人已进行修改,也欢迎广大读者进行指正以及补充。

本博客将尽量从工具的使用语言、功能等方面进行汇总介绍。

1 IKAnalyzer

语言:Java

功能:支持细粒度和智能分词两种切分模式;支持英文字母、数字、中文词汇等分词处理,兼容韩文、日文字符;支持用户自定义的词典,通过配置IKAnalyzer.cfg.xml文件来使用自定义的扩展词典和停用词典。

介绍:IKAnalyzer是一个开源的,基于Java语言开发的轻量级的中文分词工具包。从2006.12推出1.0版本开始,IK Analyzer已经推出了多个版本,当前最新版本为IKAnalyzer2012,最初基于Luence,从3.0开始成为面向Java的公用分词组件,独立于Luence,下载地址。

特性:IK简单、易于扩展,分词结果较好并且采用Java编写,如果平时较多使用Java的话,可以使用该工具进行分词处理等操作。

注意事项:词典需要采用UTF-8无BOM格式编码,并且每个词语占一行。

配置文件:

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

部署:IK部署很简单,只需要把IKAnalyzer2012_u6.jar部署于项目的lib中,同时将IKAnalyzer.cfg.xml文件以及词典文件置于src中,即可通过API的方式开发调用。

示例代码:

/** * IK分词功能实现 * @return
*/
public String spiltWords(String srcString){  StringBuffer wordsBuffer = new StringBuffer("");  try{  IKSegmenter ik=new IKSegmenter(new StringReader(srcString), true);    Lexeme lex=null;    while((lex=ik.next())!=null){    System.out.print(lex.getLexemeText()+" ");  wordsBuffer.append(lex.getLexemeText()).append(" ");  }  }catch(Exception e){  logger.error(e.getMessage());  }  return wordsBuffer.toString();
}

2 ICTCLAS(NLPIR)

语言:Java、C++、C、C#

功能:中文分词、词性标注、命名实体识别、自定义用户词典;支持GBK编码、UTF8编码、BIG5编码;新增微博分词、新词发现与关键词提取;可视化界面操作、API方式调用。

介绍:ICTCLAS是由中科院计算所历经数年开发的分词工具,采用C++编写。最新版本命名为ICTCLAS2013,又名为NLPIR汉语分词系统,官网地址。

3 FudanNLP

语言:Java

功能:信息检索:文本分类,新闻聚类。中文处理:中文分词,词性标注,实体名识别,关键词抽取,依存句法分析,时间短语识别。结构化学习:在线学习,层次分类,聚类,精确推理。

介绍:FudanNLP主要是为中文自然语言处理而开发的工具包,也包含为实现这些任务的机器学习算法和数据集。FudanNLP及其包含数据集使用LGPL3.0许可证。工具采用Java编写,提供了API的访问调用方式。最新版本为FudanNLP-1.6.1,下载地址。

部署:在使用时将fudannlp.jar以及lib中的jar部署于项目中的lib里面。

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

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

4 斯坦福大学

语言:Java

功能:分词、词性标注、命名实体识别、语法解析、分类。

介绍:Stanford NLP Group是斯坦福大学自然语言处理的团队,开发了多个NLP工具,官网网址。由于该团队将该开源分为多个子模块,以下将逐一进行介绍。

4.1 Stanford Word Segmenter

介绍:采用CRF(条件随机场)算法进行分词,也是基于Java开发的,同时可以支持中文和Arabic,官方要求Java版本1.6以上,推荐内存至少1G。下载地址。
示例代码:
//设置分词器属性。  Properties props = new Properties();
//字典文件地址,可以用绝对路径,如d:/data  props.setProperty("sighanCorporaDict", "data");
//字典压缩包地址,可以用绝对路径  props.setProperty("serDictionary","data/dict-chris6.ser.gz");
//输入文字的编码;  props.setProperty("inputEncoding", "UTF-8");  props.setProperty("sighanPostProcessing", "true");
//初始化分词器,  CRFClassifier classifier = new CRFClassifier(props);
//从持久化文件中加载分词器设置;  classifier.loadClassifierNoExceptions("data/ctb.gz", props);  // flags must be re-set after data is loaded  classifier.flags.setProperties(props);
//分词  List words = classifier.segmentString("语句内容");

4.2 Stanford POS Tagger

介绍:采用Java编写的面向英文、中文、法语、阿拉伯语、德语的命名实体识别工具,下载地址。

4.3 Stanford Named Entity Recognizer

介绍:采用条件随机场模型的命名实体工具,下载地址。

4.4 Stanford Parser

介绍:进行语法分析的工具,支持英文、中文、阿拉伯文和法语。下载地址。

4.5 Stanford Classifier

介绍:采用Java编写的分类器,下载地址。

最后附上关于中文分词器性能比较的一篇文章(2014.05.27更新)

5 OpenNLP

语言:Java

功能:分词、分句、词性标注、命名实体识别

介绍:OpenNLP是Apache下的一个自然语言处理工具包,官网地址。官方提供了文档说明以及API,有命令行调用和程序代码使用两种方式。任务介绍里面介绍了每种任务已经使用方式,介绍很详细。同时提供了最大熵的处理工具opennlp.maxent,可以实现根据自己的需要来训练最大熵模型,并且借助模型进行语料的最大熵分类。

6 清华大学

6.1 THULAC

语言:C++、Python、Java

功能:中文分词、词性标注

介绍:THULAC(THU Lexical Analyzer for Chinese)由清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包。官网地址。

特性:

能力强:利用我们集成的目前世界上规模最大的人工分词和词性标注中文语料库(约含5800万字)训练而成,模型标注能力强大。

准确率高:该工具包在标准数据集Chinese Treebank(CTB5)上分词的F1值可达97.3%,词性标注的F1值可达到92.9%,与该数据集上最好方法效果相当。

速度较快:同时进行分词和词性标注速度为300KB/s,每秒可处理约15万字。只进行分词速度可达到1.3MB/s。

6.2 THUCTC

语言:Java

功能:提供高效的中文文本特征提取、分类训练和测试功能。

介绍:THUCTC(THU Chinese Text Classification)是由清华大学自然语言处理实验室推出的中文文本分类工具包,能够自动高效地实现用户自定义的文本分类语料的训练、评测、分类功能。文本文类通常包括特征选取、特征降维、分类模型学习三个步骤。如何选取合适的文本特征并进行降维,是中文文本分类的挑战性问题。我组根据多年在中文文本分类的研究经验,在THUCTC中选取二字串bigram作为特征单元,特征降维方法为Chi-square,权重计算方法为tfidf,分类模型使用的是LibSVM或LibLinear。THUCTC对于开放领域的长文本具有良好的普适性,不依赖于任何中文分词工具的性能,具有准确率高、测试速度快的优点。官方网址。

6.3 THUTag

语言:Java

功能:关键词抽取、社会标签推荐

介绍:提供关键词抽取、社会标签推荐功能,包括TextRank、ExpandRank、Topical PageRank(TPR)、Tag-LDA、Word Trigger Model、Word Alignment Model等算法。项目地址。

7 HanLP

语言:Java

功能:

中文分词:最短路分词、N-最短路分词、CRF分词索引分词、极速词典分词、用户自定义词典

词性标注

命名实体识别:中国人名识别、音译人名识别、日本人名识别、地名识别、实体机构名识别

关键词提取:TextRank关键词提取

自动摘要:TextRank自动摘要

短语提取:基于互信息和左右信息熵的短语提取

拼音转换:多音字、声母、韵母、声调

简繁转换:繁体中文分词、简繁分歧词

文本推荐:语义推荐、拼音推荐、字词推荐

依存句法分析:MaxEnt依存句法分析、CRF依存句法分析

语料库工具:分词语料预处理、词频词性词典制作、BiGram统计、词共现统计、CoNLL语料预处理、CoNLL UA/LA/DA评测工具

介绍:HanLP 是由一系列模型与算法组成的 Java 工具包,目标是普及自然语言处理在生产环境中的应用。HanLP 具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。在提供丰富功能的同时,HanLP 内部模块坚持低耦合、模型坚持惰性加载、服务坚持静态提供、词典坚持明文发布,使用非常方便,同时自带一些语料处理工具,帮助用户训练自己的语料。

【自然语言处理】中文开源工具汇总(7种)相关推荐

  1. 【自然语言处理】英文开源工具汇总()

    本博客主要是对网络上的一些关于 英文自然语言处理开源工具的博客进行整理.汇总,如果有涉及到您的知识产权等,请联系本人已进行修改,也欢迎广大读者进行指正以及补充. 本博客将尽量从工具的使用语言.功能等方 ...

  2. 【干货】全球大数据领域顶级开源工具汇总

    大数据技术从业人员必读 一.Hadoop相关工具 1. Hadoop Apache的Hadoop项目已几乎与大数据划上了等号.它不断壮大起来,已成为一个完整的生态系统,众多开源工具面向高度扩展的分布式 ...

  3. 中文-自然语言处理-开源工具-流行度调查+句法依存树可视化调研

    为了找到最流行的中文自然语言处理工具,我进行了一番调研. 开源工具包 百度返回网页数 NLTK 4470000 LTP 哈工大 542,000 OpenNLP 249,000 ICTCLAS 919, ...

  4. 常用的开源中文分词工具

    转载自:  http://www.scholat.com/vpost.html?pid=4477 常用的开源中文分词工具 由于中文文本词与词之间没有像英文那样有空格分隔,因此很多时候中文文本操作都涉及 ...

  5. 开源中文切词工具介绍

    开源中文分词工具介绍 这里介绍常用的开源中文分词工具,大部分是java实现.如果是java生产环境,建议使用ansj.word或HanNlp. Bakeoff是一个国际中文处理比赛,有多个语料,所以每 ...

  6. 中文开源汉语分词工具

    本文转载自:http://www.scholat.com/vpost.html?pid=4477 由于中文文本词与词之间没有像英文那样有空格分隔,因此很多时候中文文本操作都涉及切词,这里整理了一些中文 ...

  7. 飞桨十大中文NLP开源工具详解

    PaddleNLP是基于飞桨(PaddlePaddle)开发的工业级中文NLP开源工具与预训练模型集,将自然语言处理领域的多种模型用一套共享骨架代码实现,可大大减少开发者在开发过程中的重复工作.Pad ...

  8. 强烈推荐| 飞桨十大中文NLP开源工具详解

    PaddleNLP是基于飞桨(PaddlePaddle)开发的工业级中文NLP开源工具与预训练模型集,将自然语言处理领域的多种模型用一套共享骨架代码实现,可大大减少开发者在开发过程中的重复工作.Pad ...

  9. 史上最全,100+大数据开源处理工具汇总

    本文除了一些常用的大数据工具,还总结汇总了其他大数据工具,几乎是最全的大数据工具的总结. 如果你想入门大数据,可以对他们进行简单的了解. 如果你想学习自己熟悉意外的大数据工具,可以看这篇文章. 如果你 ...

最新文章

  1. java性能分析 linux,linux 系统性能分析
  2. 蓝桥杯-c++_ch04_02_修正版(java)
  3. 1.EXTJS Row Editor Grid 点取消时插入的新行 的解决方法
  4. kaggle notebook在git push时附带用户民和密码(一行搞定,全部写在一行中)
  5. JDK1.8简单配置环境变量---两步曲
  6. PCL——4.深度图像
  7. vscode 智能打印_vscode学习(一)之vscode开发中绝对让你惊艳的插件!!!(个人在用) 持续更新。。。。...
  8. ajax submittype,AjaxSubmit()提交file文件
  9. 家用带宽-路由器的选择
  10. sap的pod确认_SAP POD 在途库存 SIT
  11. 刚刚,5000000 里程碑达成!
  12. 基因组组装---基因组大小评估(genome survey)
  13. 微信小程序 java社区快递柜取件管理系统python php
  14. KY-RTI分布仿真技术:第八章 Visual C#程序设计
  15. 【转载】AE表达式中英文对照
  16. 二极管在LDO电路中的几种常见用法
  17. 商用计算机使用温度,电脑一般的使用温度为?
  18. 美团招聘CV算法专家/AutoML专家
  19. Incorrect column count: expected 1, actual 5
  20. c语言蒙特卡洛树搜索代码,uct-gobang

热门文章

  1. 网络原理学习笔记--基本概念1
  2. IntelliJ Idea入门教程:如何新建项目
  3. 使用GTK+获取屏幕分辨率并设置满屏显示效果
  4. Nacos集群部署方案
  5. 易语言.尘土界面库2.0版源代码分析(1):缘起
  6. python如何保存excel文件
  7. Java基本数据类型转字符串
  8. Nexus Windows中搭建Nexus仓库
  9. scala中sealed关键字使用指南
  10. 认知计算框架有哪些?