为了账号安全,请及时绑定邮箱和手机立即绑定

你需要知道的几个好用的中文词法分析工具

1、Stanford CoreNLP

Stanford CoreNLP是斯坦福大学自然语言处理小组开发的自然语言分析工具集,包含分句,分词,词性标注,命名实体识别,句法分析,指代消解,情感分析等功能,这些工具采用流式(pipeline)集成方式,各功能模块之间相互解耦,提供单独的包下载,高度灵活且可扩展性强。Stanford CoreNLP支持英文、中文、法文、德文以及西班牙文等。

Stanford CoreNLP工具采用Java语言开发,支持Java 8+。提供jar包下载,便于集成到Java代码中,同时也支持C#,Node.js,PHP,Python等语言调用。

Stanford CoreNLP的分词和命名实体识别工具是基于条件随机场模型实现的,而词性标注则是基于双向依存网络模型。

官网介绍地址:https://stanfordnlp.github.io/CoreNLP/index.html

论文地址:https://nlp.stanford.edu/pubs/StanfordCoreNlp2014.pdf

中文文本处理工具下载地址:http://nlp.stanford.edu/software/stanford-chinese-corenlp-2018-02-27-models.jar

2、语言技术平台(Language Technology Platfor,LTP)

LTP是哈尔滨大学社会计算与信息检索研究中心发布的一套中文自然语言处理工具集,包含分句,分词,词性标注,命名实体识别,依存句法分析,语义角色标注,语义依存分析(树、图结构)等工具。LTP同样采用流式集成方式,支持各功能模块单独调用。其中分词和词性标注等功能是基于1998年人民日报和微博语料进行训练,命名实体标注则是基于1998年人民日报语料进行训练。

LTP采用C++语言开发,提供静态、动态库,可方便集成在C,C++和Java程序中。

LTP的分词、词性标注以及命名实体识别工具是基于结构化感知器实现的。

LTP的使用非常简单,只需要根据 API 参数构造 HTTP 请求即可在线获得分析结果,而无需下载 SDK ,同时支持跨平台、跨语言编程等。如果你需要使用LTP,则先在LTP上注册一个帐号,相关信息审核通过后,系统会给你发送API_KEY,并告知每个月的流量额度,初始是每月20G的流量。

语言云服务的API参数集如图1所示:

图片描述

图 1 语言云服务的API参数集

Python调用demo

# -*- coding:utf8 -*-
if __name__ == '__main__':
    url_get_base = "http://api.ltp-cloud.com/analysis/"
    args = { 
        'api_key' : 'YourApiKey',
        'text' : '我是中国人。',
        'pattern' : 'dp',
        'format' : 'plain'
    }
    result = urllib.urlopen(url_get_base, urllib.urlencode(args)) # POST method
    content = result.read().strip()
    print content

官网介绍地址:http://www.ltp-cloud.com/intro/

3、清华大学词法分析器(THU Lexical Analyzer for Chinese,THULAC)

THULAC由清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包,具有中文分词和词性标注功能。THULAC工具包随包附带的分词模型Model_1以及分词和词性标注模型Model_2是由人民日报语料库训练得到的,所以支持单独调用分词接口,但不能单独调用词性标注接口。语料库包含已标注的字数约为五千八百万字,你可以填写申请表来得到全部语料库。

THULAC完全开源,公布了算法源代码、算法模型甚至语料库。在Python中,可通过 import thulac 来引用,同时还提供C++接口使用和按照命令格式运行可执行jar包完成分词和词性标注。

C++版

./thulac [-t2s] [-seg_only] [-deli delimeter] [-user userword.txt] 从命令行输入输出
./thulac [-t2s] [-seg_only] [-deli delimeter] [-user userword.txt] outputfile 利用重定向从文本文件输入输出(注意均为UTF8文本)

java版

java -jar THULAC_lite_java_run.jar [-t2s] [-seg_only] [-deli delimeter] [-user userword.txt] 从命令行输入输出
java -jar THULAC_lite_java_run.jar [-t2s] [-seg_only] [-deli delimeter] [-user userword.txt] -input input_file -output output_file 从文本文件输入输出(注意均为UTF8文本)

python版(兼容python2.x和python3.x)

通过python程序import thulac,新建thulac.thulac(args)类,其中args为程序的参数。之后可以通过调用thulac.cut()进行单句分词。

官网介绍地址:http://thulac.thunlp.org/

相关论文地址:https://dl.acm.org/citation.cfm?id=1667988.1667992

4、FudanNLP

FudanNLP是复旦大学自然语言处理实验室开发的中文自然语言处理工具包,包含信息检索: 文本分类、新闻聚类;中文处理: 中文分词、词性标注、实体名识别、关键词抽取、依存句法分析、时间短语识别;结构化学习: 在线学习、层次分类、聚类。FNLP也是开源的,其中包含了实现这些功能的机器学习算法和数据集。

FNLP采用Java语言开发,可通过命令行方式调用,也可公布了jar包以便集成到各个Java项目中。

命令行方式调用分词功能

java -Xmx1024m -Dfile.encoding=UTF-8 -classpath "fnlp-core/target/fnlp-core-2.1-SNAPSHOT.jar:libs/trove4j-3.0.3.jar:libs/commons-cli-1.2.jar" org.fnlp.nlp.cn.tag.CWSTagger -s models/seg.m "自然语言是人类交流和思维的主要工具,是人类智慧的结晶。"

参数“-Xmx1024m”设置Java虚拟机的可用内存为1024M。FNLP载入语言模型所需内存较大,因此可以利用此参数修改可用内存量。

结果:

自然 语言 是 人类 交流 和 思维 的 主要 工具 , 是 人类 智慧 的 结晶 。

命令行方式调用中文词性标注功能

java -Xmx1024m -Dfile.encoding=UTF-8 -classpath "fnlp-core/target/fnlp-core-2.1-SNAPSHOT.jar:libs/trove4j-3.0.3.jar:libs/commons-cli-1.2.jar" org.fnlp.nlp.cn.tag.POSTagger -s models/seg.m models/pos.m "小明出生于北京,生日为79年1月18日,他曾经的绯闻女友是小红。"

结果:

小明/人名 出生/动词 于/介词 北京/地名 ,/标点 生日/名词 为/介词 79年/时间短语 1月/时间短语 18日/时间短语 ,/标点
他/人称代词 曾经/副词 的/结构助词 绯闻/名词 女友/名词 是/动词 小红/人名 。/标点

命令行方式调用实体名识别功能

java -Xmx1024m -Dfile.encoding=UTF-8 -classpath "fnlp-core/target/fnlp-core-2.1-SNAPSHOT.jar:libs/trove4j-3.0.3.jar:libs/commons-cli-1.2.jar" org.fnlp.nlp.cn.tag.NERTagger -s models/seg.m models/pos.m "詹姆斯·默多克和丽贝卡·布鲁克斯 鲁珀特·默多克旗下的美国小报《纽约邮报》的职员被公司律师告知,保存任何也许与犯罪有关的文件。"

结果:

{詹姆斯·默多克=人名, 鲁珀特·默多克旗=人名, 丽贝卡·布鲁克斯=人名, 纽约=地名, 美国=地名}

FudanNLP gitbub地址(包含wiki):https://github.com/FudanNLP/fnlp

点击查看更多内容
6人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消