Skip to content

xxmmyy/ICTCLAS_Python_Wrapper

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#ICTCLAS Python Wrapper Python wrapper for ICTCLAS 2015 (or NLPIR 2015).

NLPIR(ICTCLAS)中文分词系统Python接口。

ICTCLAS Python 接口

本项目提供了一个利用Python调用ICTCLAS(NLPIR)的便捷的接口,可以通过一个函数调用返回分词后的结果。 具体使用方法示例参见nlpir.py文件当中的main函数。

使用说明

  • 温馨提示:如果您是Python初学者请您特别留意(非初学者跳过):

    • 您的操作系统位数与Python程序的位数是否匹配(因为64bit Windows下是可以运行32bit的Python程序的),如果不匹配,请您正确安装位数匹配的Python程序。
    • 您使用的Python版本,目前Python存在2.x和3.x两类主流版本,这两个版本存在着较大的差异,如果您还不确定您要使用哪个版本,请您使用Python2.7.x,并且可以直接考虑下载安装集成了诸多科学计算包的Anaconda 2.0 (Python 2.7.6)。除非你有确切的技术理由,否则不建议为了“追新”使用Python3.x。
  • 使用之前,请在nlpir.py文件当中,通过参数“libFile”设置正确的库文件,根据操作系统(Linux/Windows)和操作系统位数(32/64 bit),配置正确的库文件(dll/so)。

  • 库文件放在项目的nlpir目录下,dll是Windows所需动态链接库,so是Linux所需的动态链接库,文件名当中的32/64表示操作系统bit数。

  • 调试时建议通过Linux调用,如果在Windows下使用,建议使用Pycharm或其他IDE,以正常输出中文。 在Windows CMD下,如果基于Python 2.x,可能会输出乱码,解决方案参见:这篇文章。 当前项目在 Windows 10(TechPreview) 64bit + Anaconda 2.2 (Python 2.7.9) + PyCharm 4.0下测试通过。

  • 目前的代码针对Python2.7.x设计,如果您要用Python 3.x进行调用,代码文件当中说明了需要修改的配置,主要的区别是返回值需要从bytes进行类型转换后再使用,细节在代码文件当中有描述,或者您也可以参照“常见问题”中关于Python3.x调用的说明部分。

##常见问题 当系统不能正常运行时,请您首先仔细耐心查看程序的错误栈或者系统的错误日志,然后参照下面的提示进行解决。下面列出的几个常见问题,涵盖了截止到目前为止作者通过邮件、微博私信等所有方式得到的使用者的反馈。请尊重他人的时间,确认下面列出的方法无法解决您的问题之后再向作者发信息提问。

###调用分词程序时系统初始化出错的问题:

  • 问题表现:在Python弄程序当中,进行初始化或分词时候,代码抛出“Initialization failed!”等异常。

  • 出错原因:本Python程序只是一个接口程序,当出现上述问题时,绝大多数情况都是由于NLPIR(ICTCLAS)组件分词出错导致的。当您看到这样的错误时,请首先到程序的Data目录下,查看是否有文件名为“YYYYMMDD.err”(YYYYMMDD为日期)的错误输出文件,该文件由NLPIR(ICTCLAS)组件生成,具体指明了错误原因。错误原因一般包括:

  • 原因一» 数据文件未正确配置的问题:如果日志文件中出现“Cannot Open Configure file”,则是因为您的Data文件未正确配置导致的。解决方案为: 请确认您再代码中调用Init函数的第一个参数(数据文件路径),与Data存放的目录相匹配,如果您传入的该参数为空字符串,则默认为当前python代码的路径。

  • 原因二» 关于证书与程序不匹配、过期、无效的问题:如果日志文件中出现“License not for system”错误,则是库文件与Data文件的证书文件不匹配;如果日志文件中出现“Not valid license or your license expired”错误,则是证书文件到期、损坏、或不存在等;关于证书问题的解决方案如下:

    • 移步至ICTCLAS网站下载最新的库文件和数据文件;
    • 将下载包当中的库文件(dll/so)更新至nlpir目录下,替换时注意您的操作系统、操作系统位数、Python程序位数(32/64bit)、程序库(dll/so)位数的匹配;
    • 将下载包当中的Data文件夹替换掉当前目录下的Data文件夹。

【证书问题特别说明】

  • 从ictclas.nlpir.org下载的ICTCLAS发布包中的sample/pythonsample目录中包含的dll和so文件为旧版本,请使用本项目中的动态链接库文件或自行进行替换。

  • 当前项目下的库文件是ICTCLAS网站2014-12-30发布的2015版程序库及数据文件,经测试,到目前仍可正常使用。 您可以自行更新到其他时间的发布包以满足您的需求。不同时间发布的程序库,在本项目代码中以“Patch_YYYYMMDD.zip”的形式命名,下载后将原来代码中的nlpir目录和Data目录替换,

  • 经测试,20131219发布的程序版本截止可用,改版本为2013年底推出的2014测试版,可以正常进行分词,但分词模型可能较旧。

  • 如果出现了其他关于证书的问题,在您尝试了更新ICTCLAS程序包后仍不能解决的,这样的证书问题不属于Python接口能解决的范畴,请联系ICTCLAS原作者解决证书问题。

###关于Python3.x调用的问题 代码文件当中说明了需要修改的配置,主要的区别是返回值需要从bytes进行类型转换后再使用,请从代码中搜索以“###”开始的行,这些用“###”注释掉的行是针对Python3.x的,而这些代码前一行或者后一行的代码是Python2.7.x调用需要的代码,如果您确认您要用Python3.x调用,修改这三四行代码就可以解决问题。

Acknowledgments

  • This is just a wrapper for the binary distribution of ICTCLAS.
  • This project is released as an open source software by Hao Bibo.
  • To know more about the author or contacts: see his CV or browse his Sina Weibo.

If you want to:

  • Report bug or contribute to project: report an issue through GitHub.

  • If you like this program, please Start it on its GitHub Page.

  • Donate to the author: the author will be grateful if you dontae through his ZhiFuBao(AliPay) or WeChat account, scan the QR code with your APP on phone.

About

Python Wrapper for ICTCLAS

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages

  • C++ 69.9%
  • Python 30.1%