码迷,mamicode.com
首页 > 编程语言 > 详细

Python调用中科院NLPIR(ICTCLAS2015)详解 刘超(lch614730@163.com)

时间:2015-04-08 19:51:54      阅读:1287      评论:0      收藏:0      [点我收藏+]

标签:

Python调用中科院NLPIR(ICTCLAS2015)详解

南京理工大学 计算机科学与工程学院  

RuiXia_NUSTM课题组 ChaoLiu(lch614730@163.com)

-------------------------

主要讲解内容:

1. NLPIR版本及下载

2. 代码问题

3. userdict的使用问题

-------------------------

 友情提示:如果是swig问题,自己处理。首先下载swig,swig可以帮助我们将C或者C++编写的DLL或者SO文件绑定到包括Python在内的多种语言。Windows下将安装包下载到一定目录下将该目录加入环境变量的path中即可使用swig(当然也可以输入完整的路径来使用swig)。可以打开命令行窗口,在里面输入swig,如果出现“Must specify an input file. Use -help for available options.”则表示一切顺利。

 

1.NLPIR(ICTCLAS2015)下载地址:http://ictclas.nlpir.org/downloads,目录如下:

技术分享

 

 

其中【组合包(本人临时建立文件,所需要的仅是本文件夹里面的内容)】中的内容需要:

技术分享

其中: bin文件夹(自己新建的)下包括:importuserdict文件夹下zip解压文件。Data文件夹为上级目录的Data文件夹所有内容,nlpir、__init__.py、nlpir.py为sample\pythonsample文件夹下文件。

 

2. A将【组合包】文件夹下的所有内容放入你自己的项目当中,注意修改nlpir.py代码中dll的路径,如下图红圈所示:其中32bit还是64bit是由你自己的python.exe版本决定,而不是你自己的操作系统。

技术分享

B、为了分词、词性标注、分隔符便于编程,可将nlpir.py代码中的Seg函数改写成:

------------------------------------------------------------------------------------------

‘‘‘
Chao Liu(njust NUSTM RuiXia)
‘‘‘
def NLPIR_Seg_Pos(paragraph,flag = True,echo = ‘/‘):
# NLPIR 分词 Parameters(paragraph:字符串 ,flag:是否标注词性,echo:词性分割符)
para_seg_pos = ‘‘
atoms = segment(paragraph)
for a in atoms:
if len(a.sPOS) < 1: continue
i = paragraph[a.start: a.start + a.length]#.decode(‘utf-8‘)#.encode(‘ascii‘)
#yield (i, a.sPOS)
if flag == False :
para_seg_pos = para_seg_pos + (str(i) + ‘ ‘)
else:
para_seg_pos = para_seg_pos + (str(i)+ echo + a.sPOS +‘ ‘)

return para_seg_pos.rstrip()

-----------------------------------------------------------------------------------------

 

3. userdict用户字典的导入问题,下载的zip包中,有一个文件夹importuserdict,里面有个readme.txt文件,具体操作请看:

采用附件的小工具,可以实现脱机导入用户词典;具体步骤如下:
1.与分词Data文件夹同级建立 bin目录,下面建立二级目录ICTCLAS2014;
2.将附件的内容解压缩后放在ICTCLAS2014下面;
3.编辑bin/ICTCLAS2014下面的userdic.txt,这里放置用户词典与标注;
4.执行bin/ICTCLAS2014的批处理文件。即可导入用户词典到Data目录下的field.pdat field.pos。
5.30万词条会划分更多的时间,可能需要2小时左右。

 

4.其他问题

如若py代码中调用不同文件夹下的py程序,需在各级目录中添加 __init__.py文件,里面无需存放任何代码。

只需要在py开始添加python系统path,然后在导入文件py,例如:

 

import sys

sys.path.append(‘libsvm-3.20/python‘)       //可添加绝对路径,也可以添加相对路径。

from svmutil import *

 

Python调用中科院NLPIR(ICTCLAS2015)详解 刘超(lch614730@163.com)

标签:

原文地址:http://www.cnblogs.com/levone/p/4403398.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!