Python环境下NIPIR(ICTCLAS2014)中文分词系统使用攻略
一、安装
官方链接:http://pynlpir.readthedocs.org/en/latest/installation.html
官方网页中介绍了几种安装方法,大家根据个人需要,自行参考!我采用的是:
Install PyNLPIR using easy_install:
$ easy_install pynlpir
二、使用NLPIR进行分词
注:此处主要使用pynlpir.nlpir模块,该模块使用ctypes为NLPIR提供面向Python的接口,因此在调用NLPIR方法时,基本与调用其C接口是一样的。
此处假设已导入模块:from pynlpir import nlpir
1)NLPIR初始化
nlpir.Init(nlpir.PACKAGE_DIR,nlpir.UTF8_CODE,None) ,其中三个参数:
nlpir.PACKAGE_DIR,Data目录父目录的绝对路径(即指明在何处可找到Data目录),也可自行指定
nlpir.UTF8_CODE,分词所使用的编码方式(NLPIR提供UTF-8,GBK,BIG5,GBK-FANTI四种编码),默认是GBK
license_code,没什么特殊应用的话就默认为None
2)设置词性标注集
nlpir.SetPOSmap(pos_map)
NLPIR官方提供四种词性标注集,具体参见官方API : http://pynlpir.readthedocs.org/en/latest/api.html
词性标注集中FIRST和SECOND的区别在于前者只采用一级标注,后者同时采用二级标注,如对于“是”,一级标注词性为/v,二
级标注词性为/vshi
3)段落分词
nlpir.ParagraphProcess(str,int)
str: 待分词段落
int: 0表示不加词性标注,1则加词性 (注意此处官方API调用参数可能有误)
return: 分词后内容
4)文档分词
nlpir.FileProcess(sFile,rFile,isPOS)
sFile:待分词文档(文档路径)
rFile:分词结果文档
isPOS: 0表示不加词性标注,1则加词性 (注意此处官方API调用参数可能有误)
5)导入用户字典
nlpir.ImportUserDict(dict_path)
dict_path: 字典路径
nlpir.AddUserWord('卡卡') ,将'卡卡'这个词加入用户字典,返回1表示成功
nlpir.SaveTheUsrDic() , 将用户字典内容输出到磁盘,返回1表示成功
nlpir.DelUsrWord('卡卡') , 删除用户字典的指定词,返回-1表示字典中没有该词,否则返回值表示该词在字典中位置
6)退出
nlpir.Exit() :释放内存资源
7)获取关键词或新词
获取关键词或者新词对段落和文档有各自的方法调用,但参数都一致,即传入待获取的内容,最多获取的词数,以及是否输出词权重信息
三、简易代码示例
from pynlpir import nlpir
class WordSegment(object):
def __init__(self):
'''初始化nlpir资源'''
if not nlpir.Init(nlpir.PACKAGE_DIR,nlpir.UTF8_CODE,None):
print 'Initialize NLPIR failed'
exit(-11111)
def fileProcess(self,sFile,rFile,isPOS):
'''
对文档分词:sFile,待分词文档路径
rFile,分词结果文档路径
isPOS,是否标注词性(1 是,0 否)
'''
nlpir.SetPOSmap(nlpir.ICT_POS_MAP_SECOND)
if nlpir.FileProcess(sFile,rFile,isPOS)==0:
print 'FileProcess failed.Traceback to module:word_segmentation.py,function:fileProcess()'
exit(-111111)
def import_userdict(self,dict_path):
nlpir.ImportUserDict(dict_path)
def finalizeR(self):
'''释放nlpir资源'''
nlpir.Exit()
NLPIR中文分词简单示例
四、pynlpir模块方法
1)pynlpir._get_pos_name(code, name='parent', english=True)
获取某个词性相关信息
code: 词性
name:分为'parent'(获取该词性的最顶级词性,默认为'parent'),'child'(获取该词性最具体的信息),'all'(获取该词性相关的所有词性
信息,相当于从其顶级词性到该词性的一条路径)
english:默认为True,表示是否以英文输出信息
以'nsf'词性为例,
print pynlpir._get_pos_name('nsf',name='parent',english=True) # noun
print pynlpir._get_pos_name('nsf',name='child',english=True) # transcribed toponym
print pynlpir._get_pos_name('nsf',name='all',english=False) # 名词:地名:音译地名
2) pynlpir.open(data_dir=nlpir.PACKAGE_DIR, encoding=ENCODING, license_code=None)
相当于pynlpir.nlpir.Init()方法
3) pynlpir.close()
相当于pynlpir.nlpir.Exit()方法
4) pynlpir.segment(s, pos_tagging=True, pos_names='parent', pos_english=True)
r_list= pynlpir.segment('Python环境下NLPIR中文分词系统使用攻略', pos_tagging=True, pos_names='child', pos_english=True)
for w in r_list:
print w[0].encode('gbk'),'\t',w[1]
'''
Python other proper noun
环境 noun
下 noun of locality
NLPIR noun
中文 other proper noun
分词 verb
系统 noun
使用 verb
攻 verb
略 adverb
'''
segment示例
5)pynlpir.get_key_words(s, max_words=50, weighted=False)
print pynlpir.get_key_words('Python环境下NLPIR中文分词系统使用攻略',2,True)
# [(u'NLPIR', 3.75), (u'Python', 3.0)]
Python环境下NIPIR(ICTCLAS2014)中文分词系统使用攻略的更多相关文章
- CentOS 7.4 下安装部署Nagios监控系统详细攻略(三)
Nagios是一个流行的电脑系统和网络监控程序,它检测主机和服务,当异常发生和解除时能提醒用户.它是基于GPLv2开发的开源软件,可免费获得及使用. nagios工作原理 nagios的功能是监控服务 ...
- $ npm install opencv ? 你试试?! 在windows环境下,使用node.js调用opencv攻略
博主之前写过一篇文章<html5与EmguCV前后端实现——人脸识别篇>,叙述的是opencv和C#的故事.最近在公司服务器上更新了一套nodejs环境,早就听闻npm上有opencv模块 ...
- win7下安装Linux实现双系统全攻略
http://jingyan.baidu.com/article/c275f6bacc3326e33c756743.html
- linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg)
linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg) 2013-11-10 16:51:14 分类: 系统运维 为什么要写这篇文章? 答:通过常规的三大步(./confi ...
- python环境下实现OrangePi Zero寄存器访问及GPIO控制
最近入手OrangePi Zero一块,程序上需要使用板子上自带的LED灯,在网上一查,不得不说OPi的支持跟树莓派无法相比.自己摸索了一下,实现简单的GPIO控制方法,作者的Zero安装的是Armb ...
- NLPIR(北理工张华平版中文分词系统)的SDK(C++)调用方法
一.本文内容简介 二.具体内容 1. 中文分词的基本概念 2.关于NLPIR(北理工张华平版中文分词系统)的基本情况 3.具体SDK模块(C++)的组装方式 ①准备内容: ②开始组装 三.注意事项 一 ...
- dedecms 在php5.4以上环境下 无法保存中文
dedecms gbk版本在php5.4以上环境下 无法保存中文 原因在于5.4.0对这个函数的变化:htmlspecialchars5.4.0 The default value for the ...
- Azure REST API (4) 在Python环境下,使用Azure REST API
<Windows Azure Platform 系列文章目录> 之前遇到的项目中,客户需要在Python环境下,监控Azure VM的CPU利用率,在这里简单记录一下. 笔者的环境是Win ...
- 图像处理基本工具——Python 环境下的 Pillow( PIL )
由于笔者近期的研究课题与图像后处理有关,需要通过图像处理工具对图像进行变换和处理,进而生成合适的训练图像数据.该系列文章即主要记录笔者在不同的环境下进行图像处理时常用的工具和库.在 Python 环境 ...
随机推荐
- kafka2.9.2的伪分布式集群安装和demo(java api)测试
目录: 一.什么是kafka? 二.kafka的官方网站在哪里? 三.在哪里下载?需要哪些组件的支持? 四.如何安装? 五.FAQ 六.扩展阅读 一.什么是kafka? kafka是LinkedI ...
- 【redis】 redis 创建集群时,Waiting for the cluster to join.... 一直等待
redis 搭建集群时,一直join.... ./redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1: ...
- HackerRank "Angry Children 2"
Fun one! A combination of Greedy and DP. The solution sparkled in my mind - I almost lost it.. Greed ...
- [uboot]E9-i.MX6Q-uboot移植
参照:http://blog.csdn.net/girlkoo/article/details/45420977 文档参照: <i.MX BSP Porting Guide-2015/12, ...
- css3立体旋转
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- codeforces 689 E. Mike and Geometry Problem 组合数学 优先队列
给定一个函数: f([l,r]) = r - l + 1; f(空集) = 0; 即f函数表示闭区间[l,r]的整点的个数 现在给出n个闭区间,和一个数k 从n个区间里面拿出k个区间,然后对这k个区间 ...
- 1 、Linux-Rhel6终端介绍-Shell提示符
1.Linux 终端介绍 tty-控制台终端: RHEL6 tty1-tty6 tty就是图形界面 从图形界面切换到字符界面: ctrl+shift+alt +F2~F6 从字符界面切换图形或字符: ...
- python中的装饰器
一.什么是装饰器 装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能 ...
- mvc中Scripts.Render、Styles.Render
一.配置BundleConfig.cs文件 1.首先要在App_Start 里面BundleConfig.cs 文件里面 添加要包含的css文件 2.BundleConfig就是一个微软新加的 一个打 ...
- swift 常见报错及解决方案
当你初学swift,或者你从2.0转到3.0,见点红是在所难免再寻常不过的事情,其实一般也都是一些小的语法问题,度娘一般都有能力告诉你答案,但是凡事做个总结做到心中有数毕竟是比度娘靠谱的. 1.can ...