python调用NLPIR - ICTCLAS2013实现中文分词
环境:win7、VS2008、Python2.7.3
第一步:照着文档[2]将NLPIR库封装成Python的扩展;
第二步:新建一个名为“nlpir_demo”的目录,将第一步最后得到的名为“nlpirpy_ext”的文件夹拷贝到“.../nlpir_demo/”目录下;
第三步:在文档[2]尾部提供的“seg.py”基础上,在“.../nlpir_demo/nlpirpy_ext/”目录下,新建一个名为“C_NLPIR_ICTCLAS2013.py”的文件,内容如下,目的是将NLPIR进一步封装成一个Python类;
#-*- encoding: utf-8 -*-
import NLPIR
import os class C_NLPIR_ICTCLAS2013:
def __init__(self,s_code='GBK'):
dataurl = os.path.join(os.path.dirname(__file__))
isinit = 0
if s_code == 'GBK':
isinit = NLPIR.NLPIR_Init(dataurl,NLPIR.GBK_CODE)
elif s_code == 'UTF-8':
isinit = NLPIR.NLPIR_Init(dataurl,NLPIR.UTF8_CODE)
elif s_code == 'BIG5':
isinit = NLPIR.NLPIR_Init(dataurl,NLPIR.BIG5_CODE)
elif s_code == 'GBK_FANTI':
isinit = NLPIR.NLPIR_Init(dataurl,NLPIR.GBK_FANTI_CODE)
if isinit:
print 'NLPIR 初始化成功'
else:
print 'NLPIR 初始化失败' def stringSeg(self, s_string, i_bPOStagged=0):
"""
Function: Process one string;
Parameters: @s_string - The string to be analyed,
@i_bPOStagged: Judge whether need POS tagging, 0 for no tag; 1 for tagging; default:0.
Return Value: the pointer of result buffer.
"""
return NLPIR.NLPIR_ParagraphProcess(s_string, i_bPOStagged) def fileSeg(self,s_sourceFile,s_targetFile, i_bPOStagged=0):
"""
Function: Process one text file and save the result into one file;
Parameters: @s_sourceFile - The source file name to be analysized,
@s_targetFile - The result file name to store the results.
@i_bPOStagged: Judge whether need POS tagging, 0 for no tag; 1 for tagging; default:0.
Return Value: the processing speed if processing succeed. Otherwise return false.
"""
return NLPIR.NLPIR_FileProcess(s_sourceFile, s_targetFile, i_bPOStagged) def importUserDict(self,s_userDictFile):
"""
Functin: Import user-defined dictionary from a text file;
Parameters: @s_userDictFile - the filename saved user dictionary text;
Return Value: The number of lexical entry imported successfully
???: What's the writting style of the userDicFile ?
"""
return NLPIR.NLPIR_ImportUserDict(s_userDictFile) def addUserWord(self,s_word):
'''
Function: Add a word to the user dictionary;
Parameters: @s_Word - the word added.
Return Value: 1 if add succeed. Otherwise return 0.
'''
return NLPIR.NLPIR_AddUserWord(s_word) def saveTheUserDict(self):
'''
Function: Save the user dictionary to disk.
Parameters: none;
Return Value: 1 if save succeed,otherwise return 0.
???: Where's the file_direction of "disk" ?
'''
return NLPIR.NLPIR_SaveTheUsrDic() def delUserWord(self,s_word):
'''
Function: Delete a word from the user dictionary;
Parameters: @s_word - the word to be deleted;
Return Value: -1 if the word not exist in the user dictionary, otherwise the handle of the word deleted.
'''
return NLPIR.NLPIR_DelUsrWord(s_word) def exit(self):
'''
Return value: true if succeed, otherwise false.
'''
return NLPIR.NLPIR_Exit() if __name__ == '__main__': O_C_NLPIR_ICTCLAS2013 = C_NLPIR_ICTCLAS2013('UTF-8')
raw_input('\n~!')
第四步:在“.../nlpir_demo/”目录下,新建一个名为“NLPIR_demo.py”的文件,内容如下,试着调用“.../nlpir_demo/nlpirpy_ext/C_NLPIR_ICTCLAS2013.py”中定义的类C_NLPIR_ICTCLAS2013;
#-*-encoding:utf-8-*-
from nlpirpy_ext.C_NLPIR_ICTCLAS2013 import C_NLPIR_ICTCLAS2013 if __name__ == '__main__': o_C_NLPIR_ICTCLAS2013 = C_NLPIR_ICTCLAS2013('UTF-8')
raw_input('\n~!') s_test = '1989年春夏之交的政治风波1989年政治风波24小时降雪量24小时降雨量863计划ABC防护训练APEC会议BB机BP机C2系统C3I系统C3系统C4ISR系统C4I系统CCITT建议'
result = o_C_NLPIR_ICTCLAS2013.stringSeg(s_test) raw_input(result)
第五步:执行文件“.../nlpir_demo/NLPIR_demo.py”,即可~!
说明:关于文档[2]中提到的SWIG,可见文档[1]提供了另外两篇文档~!
参考文档:
[1]Python、Ruby中的SWIG使用案例, http://www.cnblogs.com/chanyin/p/3340780.html
[2]NLPIR(ICTCLAS2013) Python版, http://www.nilday.com/nlpirictclas2013-python%E7%89%88/
python调用NLPIR - ICTCLAS2013实现中文分词的更多相关文章
- Python环境下NIPIR(ICTCLAS2014)中文分词系统使用攻略
一.安装 官方链接:http://pynlpir.readthedocs.org/en/latest/installation.html 官方网页中介绍了几种安装方法,大家根据个人需要,自行参考!我采 ...
- python第三方库------jieba库(中文分词)
jieba“结巴”中文分词:做最好的 Python 中文分词组件 github:https://github.com/fxsjy/jieba 特点支持三种分词模式: 精确模式,试图将句子最精确地切开, ...
- Python第三方库jieba(中文分词)入门与进阶(官方文档)
jieba "结巴"中文分词:做最好的 Python 中文分词组件 github:https://github.com/fxsjy/jieba 特点 支持三种分词模式: 精确模式, ...
- Python学习实践------正向最大匹配中文分词
正向最大匹配分词: 1.加载词典文件到集合中,取词典文件中最大长度词的length 2.每次先在句子中按最大长度分割,然后判断分割的词是否存在字典中,存在则记录此词,调整起始点. 3.不存在则按最大长 ...
- Python大数据:jieba 中文分词,词频统计
# -*- coding: UTF-8 -*- import sys import numpy as np import pandas as pd import jieba import jieba. ...
- NLPIR(北理工张华平版中文分词系统)的SDK(C++)调用方法
一.本文内容简介 二.具体内容 1. 中文分词的基本概念 2.关于NLPIR(北理工张华平版中文分词系统)的基本情况 3.具体SDK模块(C++)的组装方式 ①准备内容: ②开始组装 三.注意事项 一 ...
- 中文分词工具简介与安装教程(jieba、nlpir、hanlp、pkuseg、foolnltk、snownlp、thulac)
2.1 jieba 2.1.1 jieba简介 Jieba中文含义结巴,jieba库是目前做的最好的python分词组件.首先它的安装十分便捷,只需要使用pip安装:其次,它不需要另外下载其它的数据包 ...
- 中文分词工具探析(一):ICTCLAS (NLPIR)
1. 前言 ICTCLAS是张华平在2000年推出的中文分词系统,于2009年更名为NLPIR.ICTCLAS是中文分词界元老级工具了,作者开放出了free版本的源代码(1.0整理版本在此). 作者在 ...
- Sphinx中文分词安装配置及API调用
这几天项目中需要重新做一个关于商品的全文搜索功能,于是想到了用Sphinx,因为需要中文分词,所以选择了Sphinx for chinese,当然你也可以选择coreseek,建议这两个中选择一个,暂 ...
随机推荐
- nodejs解决找不到express命令的问题
一般的书或者教程上的安装步骤是:(需要是-g,即全局安装) npm install -g express //全局安装 而我们应该多多关注下express的文档,github地址:https://gi ...
- perl基础:传递hash类型参数
1 如果是只有一个参数要传,且是hash,最直接想到的办法就是像传其他类型参数一样直接传, 如: subFuntion(%hash1); 2 如果有多于一个参数要传,这里假设只有一个参数的类型是h ...
- 20169212《Linux内核原理与分析》 第十周作业
云课堂回顾学习 1. 进程调度的时机 中断处理过程(包括时钟中断.I/O中断.系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule() ...
- 深入浅出Mybatis系列(十)---SQL执行流程分析(源码篇)
最近太忙了,一直没时间继续更新博客,今天忙里偷闲继续我的Mybatis学习之旅.在前九篇中,介绍了mybatis的配置以及使用, 那么本篇将走进mybatis的源码,分析mybatis 的执行流程, ...
- PHP弱类型需要特别注意的问题
下面介绍的问题都已验证, 总结:字符数据比较==不比较类型,会将字符转数据,字符转数字(转换直到遇到一个非数字的字符.即使出现无法转换的字符串,intval()不会报错而是返回0).0e,0x开头的字 ...
- 无废话SharePoint入门教程二[SharePoint发展、工具及术语]
一.前言 1.由于上一篇文章的标题命名失误,此篇标题写给百度搜索”什么是SharePoint”. 2.关于什么是SharePoint,请参见本人的第一篇文章:http://www.cnblogs.co ...
- WPF中Grid布局
WPF中Grid布局XMAl与后台更改,最普通的登录界面为例. <Grid Width="200" Height="100" > <!--定义 ...
- 160个crackme-之Afkayas.1
工具: OD 环境: windows XP 运行: 我们先运行一下这个小程序,看看它到底是干什么的.运行后发现它要我们输入Type In your Name 和Type In your Serial ...
- iOS开发_数据存储方式
对于数据持久化的问题,博主并不准备在博文内放很多的代码进行更深一步解释,只是简单的介绍一下四种数据持久化,如有时间,会另外针对各个数据持久化的方法进行更进一步的阐述. 直接进入主题: 〈1.NSUse ...
- eclipse打开文件或者目录位置
1.点击Run-->External Tools-->External Tools Configurations... 右击program,点击new 2.填写名称,Location,Ar ...