设为首页 收藏本站
查看: 1188|回复: 0

[经验分享] Python调用中科院NLPIR(ICTCLAS2015)详解 刘超(lch614730@163.com)

[复制链接]

尚未签到

发表于 2015-12-3 09:46:56 | 显示全部楼层 |阅读模式
  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,目录如下:
   DSC0000.png
  
  
  其中【组合包(本人临时建立文件,所需要的仅是本文件夹里面的内容)】中的内容需要:
DSC0001.png
  其中: bin文件夹(自己新建的)下包括:importuserdict文件夹下zip解压文件。Data文件夹为上级目录的Data文件夹所有内容,nlpir、__init__.py、nlpir.py为sample\pythonsample文件夹下文件。
  
  2. A将【组合包】文件夹下的所有内容放入你自己的项目当中,注意修改nlpir.py代码中dll的路径,如下图红圈所示:其中32bit还是64bit是由你自己的python.exe版本决定,而不是你自己的操作系统。
DSC0002.png
  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 *
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-146660-1-1.html 上篇帖子: Python Twisted 学习系列3(转载stulife最棒的Twisted入门教程) 下篇帖子: python 安装 setuptools Compression requires the (missing) zlib module 的解决方案
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表