`
usenrong
  • 浏览: 515057 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

JAVA自然语言处理NLP工具包

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。

下载链接:http://alias-i.com/lingpipe/web/download.html

 

2.中文自然语言处理工具包 FudanNLP

 

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

演示地址http://jkx.fudan.edu.cn/nlp/query

FudanNLP目前实现的内容如下:

  1. 中文处理工具
    1. 中文分词
    2. 词性标注
    3. 实体名识别
    4. 句法分析
    5. 时间表达式识别
  2. 信息检索
    1. 文 本分类
    2. 新闻聚类
    3. Lucene中文分词
  3. 机 器学习
    1. Average Perceptron
    2. Passive-aggressive Algorithm
    3. K-means
    4. Exact Inference

下载链接:http://code.google.com/p/fudannlp/downloads/list

 

3.自然语言处理工具 OpenNLP

OpenNLP 是一个机器学习工具包,用于处理自然语言文本。支持大多数常用的 NLP 任务,例如:标识化、句子切分、部分词性标注、名称抽取、组块、解析等。

 

4.自然语言处理工具 CRF++

 

CRF++是著名的条件随机场开源工具,也是目前综合性能最佳的CRF工具。CRF++本身已经是个比较老的工具了,但鉴于其性能较好,仍然是自然语言处理很重要的一个工具。

NlpBamboo 中文分词库在使用该工具。

下载链接:http://sourceforge.net/projects/crfpp/files/

 

5、Stanford CoreNLP 斯坦福大学NLP

很牛叉的一个库

下载地址 http://search.maven.org/#browse%7C11864822

 

 

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

 

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格式编码,并且每个词语占一行。配置文件如下所示:

 

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  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中,同时将IKAnalyzer.cfg.xml文件以及词典文件置于src中,即可通过API的方式开发调用。

示例代码:

 

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  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

简单的示例程序:

 

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  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。还没有接触过,需要以后学习研究。

分享到:
评论

相关推荐

    最新自然语言处理的Java开源工具包-LingPipe3.7.0

    最新自然语言处理的Java开源工具包-LingPipe3.7.0

    Lingpipe(自然语言处理的Java开源工具包)入门

    Lingpipe(自然语言处理的Java开源工具包)入门 Lingpipe 是一款功能强大、文档详细的自然...Lingpipe 是一个功能强大、文档详细、开源免费的自然语言处理工具包,对于自然语言处理领域的研究和应用具有重要的意义。

    java之自然语言处理用到的jar包

    总的来说,Apache OpenNLP为Java开发者提供了一个强大的工具箱,简化了自然语言处理任务的实现,使得开发人员能够更专注于应用逻辑,而非底层算法的实现。无论是在信息检索、文本挖掘、机器翻译还是聊天机器人等领域...

    基于Java开发的OpenNLP自然语言处理工具包设计源码

    本项目为基于Java语言的OpenNLP自然语言处理工具包设计源码,总计1253个文件,其中包含1015个Java源文件、110个XML配置文件、36个文本文件、10个HTML文件、9个样本文件和9个训练文件。支持多种NLP任务,如词性标注、...

    自然语言处理NLP课程资料合集-74份.zip

    自然语言处理(NLP)是计算机科学领域的一个重要分支,它专注于使计算机能够理解、解析、生成和操作人类自然语言。这个"自然语言处理NLP课程资料合集-74份.zip"压缩包包含了丰富的学习资源,旨在帮助学生和研究人员...

    基于java的中文自动分词(自然语言处理)

    总的来说,这个基于Java的中文自动分词项目为开发者和研究者提供了一个实践和学习自然语言处理技术的平台,无论你是想了解分词算法的内部工作原理,还是需要一个现成的分词工具,都能从中受益。通过深入研究源码,...

    自然语言处理入门代码

    hanlp上相关代码文件面向生产环境的多语种自然语言处理工具包,基于 TensorFlow 2.x,目标是普及落地最前沿的NLP技术。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。目前,基于深度学习的...

    GATE 自然语言处理

    《GATE 自然语言处理》一书详细介绍了GATE(General Architecture for Text Engineering)平台的各个方面,这是一款用于自然语言处理(NLP)的强大工具。本书分为四个主要部分,覆盖了GATE的基础知识、高级应用、...

    LingPipe(开源自然语言处理的Java开源工具包) 中文分词java源码

    ,LingPipe(开源自然语言处理的Java开源工具包) 中文分词java程序

    HanLP自然语言处理

    HanLP,全称为“哈工大讯飞自然语言处理工具包”,是由一系列先进的模型和算法构建的Java库,旨在推动NLP技术在实际生产环境中的广泛应用。本文将深入探讨HanLP的功能、特性以及其在分词领域的应用。 首先,HanLP的...

    Nlp2cron自然语言转换cron表达式的工具包用于对话机器人的定时任务等源代码

    Nlp2cron是一款功能强大的工具包,专门用于将自然语言转换为cron表达式。这个工具包不仅可以帮助对话机器人实现定时任务功能,还可以在日常开发中用于识别和生成cron表达式。通过Nlp2cron,用户可以简单快捷地输入...

    FMM-java.zip_自然语言处理

    在本项目"**FMM-java.zip_自然语言处理**"中,作者采用Java语言实现了一个简单的自然语言初级处理工具。这个压缩包包含两个主要部分:`strong`和`Test`。 `strong`很可能代表一个Java源代码包,包含了核心的自然...

    中文近义词:聊天机器人,智能问答系统,自然语言处理工具包

    标题中的“聊天机器人”、“智能问答系统”以及“自然语言处理工具包”是本文要讨论的核心概念,它们都是人工智能领域中的重要组成部分,特别是在中文信息处理方面。这些技术的发展极大地推动了人机交互的进步,使得...

    hanlp-python_spiderpbl_ch11/11.5.py_自然语言处理入门_

    自然语言处理(Natural Language Processing, NLP)是计算机科学领域的一个重要分支,它涉及人工智能、计算机科学、语言学等多个学科,旨在使计算机能够理解和生成人类自然语言。在本项目"hanlp-python_spiderpbl_ch...

    自然语言处理java开发环境配置.docx

    自然语言处理中,java 开发环境配置是一个重要的基础准备步骤。java 开发环境配置主要包括 JDK 的安装、Eclipse 开发工具的安装、MySQL 数据库的安装等。 一、JDK 安装 在配置 java 开发环境时,首先需要安装 ...

    基于Java自然语言处理技术的SQL转换器设计源码

    本项目为基于Java自然语言处理技术的SQL转换器设计源码,包含27个文件,涵盖20个Java源文件、1个Git忽略文件、1个JAR包文件、1个属性文件、1个Maven构建文件、1个XML配置文件、1个YAML文件以及1个批处理命令文件。...

    百度自然语言处理的API接口PDF文档

    百度自然语言处理(NLP)API接口文档提供了丰富的技术细节,涵盖了从基础语言处理技术到应用层面的多种功能,旨在帮助开发者快速入门并应用百度在中文自然语言处理方面的技术成果。本知识点将详细介绍百度NLP的各个...

    awesome-nlp, 专门用于自然语言处理的资源列表( 自然语言处理).zip

    自然语言处理(NLP)是计算机科学领域的一个重要分支,主要研究如何让计算机理解、生成和处理人类自然语言。在当今大数据和人工智能时代,NLP技术广泛应用在语音识别、机器翻译、情感分析、问答系统、文本挖掘等多个...

    基于Purebasic和Java的NLP2Cron:自然语言转换为cron表达式的工具包设计源码

    该工具包名为NLP2Cron,采用Purebasic和Java混合编程语言开发,包含22个文件,其中包括10个Java源文件、2个Markdown文档、2个JSON配置文件、2个Purebasic源文件、1个Git忽略文件、1个许可证文件、1个XML文件、1个...

    Android-HanLP是由一系列用于自然语言处理模型与算法组成的Java工具包

    HanLP,作为一款由Java编写的高效自然语言处理工具包,为Android开发者提供了丰富的NLP模型和算法,使其能够在移动设备上轻松实现复杂文本处理任务。 HanLP的主要特点: 1. 功能完善:HanLP涵盖了词性标注、分词、...

Global site tag (gtag.js) - Google Analytics