zoukankan      html  css  js  c++  java
  • Python调用中科院NLPIR(ICTCLAS2015)详解 刘超(lch614730@163.com)

    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为samplepythonsample文件夹下文件。

     

    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 *

  • 相关阅读:
    全球疫情可视化
    ListView(1)
    《浪潮之巅》阅读笔记02
    Intern Day12
    Intern Day11
    Intern Day10
    Intern Day10
    Intern Day10
    PTA1065
    Intern Day10
  • 原文地址:https://www.cnblogs.com/levone/p/4403398.html
Copyright © 2011-2022 走看看