NLPIR 汉语分词系统 (PyNLPIR) 学习手札
来源:互联网 发布:java websocket客户端 编辑:程序博客网 时间:2024/05/22 03:17
1 关于NLPIR
最近在做一些NLP相关的任务,其中一个关键的子任务就是如何对汉语进行分词?关于分词的方式,有很多很多,也是很多学习者的练手任务(比如我们当时的期末作业就有这个)。但是,轮子还是要搬来用,自己写的分词只能说是去了解这个方式(了解某个算法),做出来的都是能看不能用,毕竟模型、算法、语料库等一座座大山等着我们攻克。
所以,我找了一些资料,看到一个不错的教程,他用了NLPIR,所以我也跟着使用NLPIR,并且在这里留下手札,方便自己后续查阅,也希望能够再帮助其他人理解。
在这篇手札当中,我选择的是Python的版本,也就是PyNLPIR
NLPIR的官网是:http://ictclas.nlpir.org/
其Python版本文档(英文)地址:http://pynlpir.readthedocs.io/en/latest/
本篇手札的首要参考博客:http://www.shareditor.com/blogshow/?blogId=74
关于NLPIR 其官网的介绍是:
NLPIR汉语分词系统(又名ICTCLAS2013),主要功能包括中文分词;词性标注;命名实体识别;用户词典功能;支持GBK编码、UTF8编码、BIG5编码。新增微博分词、新词发现与关键词提取;张华平博士先后倾力打造十余年,内核升级10次。
全球用户突破20万,先后获得了2010年钱伟长中文信息处理科学技术奖一等奖,2003年国际SIGHAN分词大赛综合第一名,2002年国内973评测综合第一名。
2 PyNLPIR 安装
PyNLPIR的安装很简单,首先你要保证你安装了PIP,这个工具在我的博客的各个手札当中出现过很多次,没有安装的可以看看之前的博客。
使用PIP我们可以非常快速的安装完成,终端执行如下的指令,等待安装完成即可(如果权限不够,请在前面加sudo):
$ pip install pynlpir
安装完成后,我们验证一下是否成功了,启动Python解释器,敲入如下的代码,引入pynlpir,如果回车后没有问题,就证明安装成功
import pynlpir
3 分词与词性标注
首先我们试验一下分词,这里贴出了源代码,安装完成PyNLPIR后,大家自己运行一下这个代码就可以。
需要注意的是,使用pynlpir的时候,首先要初始化,也就是需要先open(pynlpir.open()),当执行完成后需要对应的关闭(pynlpir.close())
# coding:utf-8import sysreload(sys)sys.setdefaultencoding( "utf-8" )import pynlpirpynlpir.open()s = '因为我比较懒,所以我就只是修改了这句话,代码还是原博客的'segments = pynlpir.segment(s)for segment in segments: print segment[0], '\t', segment[1]pynlpir.close()
如果运行成功,那么应该会给出如下的结果
因为 preposition我 pronoun比较 adverb懒 adjective, punctuation mark所以 conjunction我 pronoun就 adverb只 adverb是 verb修改 verb了 particle这 pronoun句 classifier话 noun, punctuation mark代码 noun还 adverb是 verb原 distinguishing word博客 noun的 particleProcess finished with exit code 0
NLPIR还可以更加详细的输出词性信息,做如下修改:
segments = pynlpir.segment(s)改为:segments = pynlpir.segment(s,pos_names='all')你可以在segment时同时配置如下参数,调整结果,请自行选择:pos_names='all' / 'child' / 'parent' #默认是parent, 表示获取该词性的最顶级词性,child表示获取该词性的最具体的信息,all表示获取该词性相关的所有词性信息,相当于从其顶级词性到该词性的一条路径pos_english=False # 词性标注结果以中文的形式显示pos_tagging=False # 只做分词,而不显示词性
运行后可以得到更加详细的结果:
因为 preposition我 pronoun:personal pronoun比较 adverb懒 adjective, punctuation mark:comma所以 conjunction我 pronoun:personal pronoun就 adverb只 adverb是 verb:verb 是修改 verb了 particle:particle 了/喽这 pronoun:demonstrative pronoun:predicate demonstrative pronoun句 classifier话 noun, punctuation mark:comma代码 noun还 adverb是 verb:verb 是原 distinguishing word博客 noun:other proper noun的 particle:particle 的/底
4 关键词提取
在如上的代码基础上,略微的修改代码
# coding:utf-8import sysreload(sys)sys.setdefaultencoding( "utf-8" )import pynlpirpynlpir.open()s = '因为我比较懒,所以我就只是修改了这句话,代码还是原博客的'print '关键词测试:\n'key_words = pynlpir.get_key_words(s, weighted=True)for key_word in key_words: print key_word[0], '\t', key_word[1]pynlpir.close()
运行后提取出来的关键词应该是:
关键词测试:
关键词测试:修改 2.0代码 2.0博客 2.0Process finished with exit code 0
附录 NLPIR 词性分类信息
POS_MAP = { 'n': ('名词', 'noun', { 'nr': ('人名', 'personal name', { 'nr1': ('汉语姓氏', 'Chinese surname'), 'nr2': ('汉语名字', 'Chinese given name'), 'nrj': ('日语人名', 'Japanese personal name'), 'nrf': ('音译人名', 'transcribed personal name') }), 'ns': ('地名', 'toponym', { 'nsf': ('音译地名', 'transcribed toponym'), }), 'nt': ('机构团体名', 'organization/group name'), 'nz': ('其它专名', 'other proper noun'), 'nl': ('名词性惯用语', 'noun phrase'), 'ng': ('名词性语素', 'noun morpheme'), }), 't': ('时间词', 'time word', { 'tg': ('时间词性语素', 'time morpheme'), }), 's': ('处所词', 'locative word'), 'f': ('方位词', 'noun of locality'), 'v': ('动词', 'verb', { 'vd': ('副动词', 'auxiliary verb'), 'vn': ('名动词', 'noun-verb'), 'vshi': ('动词"是"', 'verb 是'), 'vyou': ('动词"有"', 'verb 有'), 'vf': ('趋向动词', 'directional verb'), 'vx': ('行事动词', 'performative verb'), 'vi': ('不及物动词', 'intransitive verb'), 'vl': ('动词性惯用语', 'verb phrase'), 'vg': ('动词性语素', 'verb morpheme'), }), 'a': ('形容词', 'adjective', { 'ad': ('副形词', 'auxiliary adjective'), 'an': ('名形词', 'noun-adjective'), 'ag': ('形容词性语素', 'adjective morpheme'), 'al': ('形容词性惯用语', 'adjective phrase'), }), 'b': ('区别词', 'distinguishing word', { 'bl': ('区别词性惯用语', 'distinguishing phrase'), }), 'z': ('状态词', 'status word'), 'r': ('代词', 'pronoun', { 'rr': ('人称代词', 'personal pronoun'), 'rz': ('指示代词', 'demonstrative pronoun', { 'rzt': ('时间指示代词', 'temporal demonstrative pronoun'), 'rzs': ('处所指示代词', 'locative demonstrative pronoun'), 'rzv': ('谓词性指示代词', 'predicate demonstrative pronoun'), }), 'ry': ('疑问代词', 'interrogative pronoun', { 'ryt': ('时间疑问代词', 'temporal interrogative pronoun'), 'rys': ('处所疑问代词', 'locative interrogative pronoun'), 'ryv': ('谓词性疑问代词', 'predicate interrogative pronoun'), }), 'rg': ('代词性语素', 'pronoun morpheme'), }), 'm': ('数词', 'numeral', { 'mq': ('数量词', 'numeral-plus-classifier compound'), }), 'q': ('量词', 'classifier', { 'qv': ('动量词', 'verbal classifier'), 'qt': ('时量词', 'temporal classifier'), }), 'd': ('副词', 'adverb'), 'p': ('介词', 'preposition', { 'pba': ('介词“把”', 'preposition 把'), 'pbei': ('介词“被”', 'preposition 被'), }), 'c': ('连词', 'conjunction', { 'cc': ('并列连词', 'coordinating conjunction'), }), 'u': ('助词', 'particle', { 'uzhe': ('着', 'particle 着'), 'ule': ('了/喽', 'particle 了/喽'), 'uguo': ('过', 'particle 过'), 'ude1': ('的/底', 'particle 的/底'), 'ude2': ('地', 'particle 地'), 'ude3': ('得', 'particle 得'), 'usuo': ('所', 'particle 所'), 'udeng': ('等/等等/云云', 'particle 等/等等/云云'), 'uyy': ('一样/一般/似的/般', 'particle 一样/一般/似的/般'), 'udh': ('的话', 'particle 的话'), 'uls': ('来讲/来说/而言/说来', 'particle 来讲/来说/而言/说来'), 'uzhi': ('之', 'particle 之'), 'ulian': ('连', 'particle 连'), }), 'e': ('叹词', 'interjection'), 'y': ('语气词', 'modal particle'), 'o': ('拟声词', 'onomatopoeia'), 'h': ('前缀', 'prefix'), 'k': ('后缀' 'suffix'), 'x': ('字符串', 'string', { 'xe': ('Email字符串', 'email address'), 'xs': ('微博会话分隔符', 'hashtag'), 'xm': ('表情符合', 'emoticon'), 'xu': ('网址URL', 'URL'), 'xx': ('非语素字', 'non-morpheme character'), }), 'w': ('标点符号', 'punctuation mark', { 'wkz': ('左括号', 'left parenthesis/bracket'), 'wky': ('右括号', 'right parenthesis/bracket'), 'wyz': ('左引号', 'left quotation mark'), 'wyy': ('右引号', 'right quotation mark'), 'wj': ('句号', 'period'), 'ww': ('问号', 'question mark'), 'wt': ('叹号', 'exclamation mark'), 'wd': ('逗号', 'comma'), 'wf': ('分号', 'semicolon'), 'wn': ('顿号', 'enumeration comma'), 'wm': ('冒号', 'colon'), 'ws': ('省略号', 'ellipsis'), 'wp': ('破折号', 'dash'), 'wb': ('百分号千分号', 'percent/per mille sign'), 'wh': ('单位符号', 'unit of measure sign'), }), }
- NLPIR 汉语分词系统 (PyNLPIR) 学习手札
- 使用NLPIR汉语分词系统进行分词
- NLPIR/ICTCLAS汉语分词系统2015配置
- ICTCLAS2013(NLPIR汉语分词系统) Java版本的使用方法
- NLPIR汉语分词系统在VS中使用
- 简单明了的 NLPIR汉语分词系统 搭建流程
- nlpir分词系统
- Python NLPIR(中科院汉语分词系统)的使用 十五分钟快速入门与完全掌握
- 使用NLPIR汉语分词工具进行中文分词(java语言)
- 使用NLPIR-ICTCLAS2014分词系统
- 针对中科院汉语分词系统nlpir中的中文分词部分在java环境的部署(Linux和windows)(获取关键词)
- 关于使用NLPIR-ICTCLAS分词系统
- NLPIR ICTCLAS2015分词系统的使用
- 中科院分词系统(NLPIR)JAVA简易教程
- NLPIR中科院分词系统初始化失败
- NLPIR/ICTCLAS 2015 分词系统使用
- NLPIR/ICTCLAS2016分词系统的文件结构
- NLPIR/ICTCLAS2016分词系统 使用心得
- Android Studio查看android源码
- Python学习笔记1
- Laravel 5.2 教程 - 队列
- HDu 5855
- ZZULI OJ 1914: 天火好帅(搞不懂的水题)
- NLPIR 汉语分词系统 (PyNLPIR) 学习手札
- jzoj 4709. 【NOIP2016提高A组模拟8.17】Matrix 组合数+乘法逆元
- C# asp.net页面通过URL参数传值中文乱码问题解决办法
- Linux下find指令
- Android Webview中解决H5的音视频不能自动播放的问题
- 网易视频云 php接口
- 酷狗krc歌词转换为lrc格式
- 测试设计员的职责
- 几种破解MySQL root密码的几种方法: