当前位置:首页 » 操作系统 » linuxictclas

linuxictclas

发布时间: 2022-02-22 10:08:43

1. ictclas 怎么使用 python

以前ictclas014似乎只能在windows下被python调用。我就成功过。 不过到了linux下比较麻烦。java调用是可以的。但是python似乎有些麻烦。不过当时谷哥的code项目里有一个开源版本。 现在不用这么麻烦了。

2. 有人在linux中nlpir/ictclas2014分词系统使用python编译过的吗

直接放在最外层才行,不要放在src里面,当然你也要把data文件夹放在最外面,还有一系列的文档也要放在最外面,只有.java文件放在src下

3. 谁会用ICTCLAS这个分词程序

ICTCLAS分词系统是个NB的系统,这几天找到了仔细试了试,效率奇高,比自己搞字典,分词算法效率不知高了很多倍,用起来也是非常简单的,BOSS需要导出自定义词库,然后用文章训练词库,不管了,反正可以使用了。DT地用hash做了两个星期,进度很慢,分析一本《天龙八部》,统计出现的词语频率(词语只是仅仅基于频率,在并没有字典的情况下无法实现智能分词!)大概要花费十几分钟,可见效率底下,而且内存200M左右。使用ICTCLAS分词系统可以高效地实现分词。下面把过程贴出来。
使用方法,首先到网上下载ICTCLAS,因为我是windows下的C++实现, 下载ICTCLAS2011_Windows_32_c,解压,里面有很好的Demo,Doc, API目录下的所有文件(夹)到你所在的工程,在你的源文件加上
#include "ICTCLAS50.h"
#pragma comment(lib, "ICTCLAS50.lib") //ICTCLAS50.lib库加入到工程中
//
//your code here,可参考Demo里面的代码
//
即可。
大概的函数C++函数接口都在Doc文件下的文档中:

bool ICTCLAS_Init(const char* pszInitDir=NULL);初始化函数
返回值
如果初始化成功返回true, 否则返回false. 如初始化不成功,请查看ictclas.log文件了解详细错误原因.
参数
pszInitDir:初始化路径,应包含配置文件(Configure.xml)和词典目录(Data目录)以及授权文件(user.lic). 如果这些文件及目录在系统运行当前目录下,此参数可以为null。

bool ICTCLAS_Exit( );退出,释放内存
返回值

成功返回true;否则返回false。

unsigned int ICTCLAS_ImportUserDict(const char *sFilename,eCodeType eCT)
//导入用户自定义词典
返回值
导入成功的词的个数
参数
sFilename: 用户定义词典文件
eCT:编码格式
int ICTCLAS_ParagraphProcess(const char *sParagraph,int nPaLen,eCodeType eCt,int bPOStagged,char* sResult);//对一段文字进行分词
返回值
返回结果缓冲区的指针(sResult)以及结果的长度R
参数
sParagraph: 原始文字段
nPaLen: 文字段的长度
eCodeType: 文字段的编码格式
bPOStagged: 需不需要根据标注集做标记 0 = 做标记 ; 1 = 不标记; 默认为1.
sResult: 输出结果
t_pstRstVec ICTCLAS_ParagraphProcessA(const char *sParagraph,int PaLen,eCodeType eCodeType,int bPOStagged,int &nRstCnt);
//处理文字段
返回值
结果vector的指针,系统调用,用户无法分配以及释放

struct stResult{
int start; //start position
int length; //length
#ifdef POS_TAGGER
int iPOS; //POS
char sPOS[POS_SIZE];//word type
#endif
int word_ID; //word_ID
int word_type; //Is the word of the user's dictionary?(0-no,1-yes)
int weight;// word weight
};

参数
sParagraph: 原始文字段
nPaLen: 文字段长度
eCodeType: 编码格式
bPOStagged:

需不需要根据标注集做标记 0 = 做标记 ; 1 = 不标记; 默认为1.

nRstcnt: 处理结果的长度值。
详细用法参见Doc文件。

bool ICTCLAS_FileProcess(const char *sSrcFilename,eCodeType eCt,const char *sDsnFilename,int bPOStagged);//处理txt文件
返回值
处理文本文件成功返回true, 否则返回false
参数
sSourceFilename: 原始处理文件
eCodeType: 原始文件编码格式
sDsnFilename: 存储结果的文件名T
bPOStagged: 需不需要根据标注集做标记 0 = 做标记 ; 1 = 不标记; 默认为1.
注意事项
调用此函数之前需要调用init函数成功,输出格式可以通过ICTCLAS 配置来更改,这个需要研究下配置文件。
int ICTCLAS_SetPOSmap(int nPOSmap);//设置标注集
返回值
成功为1,其他为0
参数
nPOSmap :
ICT_POS_MAP_FIRST 计算所一级标注集
ICT_POS_MAP_SECOND 计算所二级标注集 PKU_POS_MAP_SECOND 北大二级标注集 PKU_POS_MAP_FIRST 北大一级标注集
int ICTCLAS_GetWordId(const char *sWord,int nWrdLen,eCodeType eCT);
返回值
单词的ID(我觉得是词典里面的存储位置,不清楚词典的具体结构)
参数
sWord: 目标单词
nWrdLen: 单词长度
eCodeType: 编码格式
bool ICTCLAS_ResultFree ( t_pstRstVec pRetVec)
//释放调用ICTCLAS_ParagraphProcessAW得到的vector指针
返回值
成功为1,失败为0
参数
t_pstRstVec: ICTCLAS_ParagraphProcessAW得到的vector指针
总结:这些函数都很好用,我需要使用处理文件函数ICTCLAS_FileProcess我出现的问题是:单独调用这个函数没有问题,但是在MFC界面调用两个选择打开文件路径和保存结果文件路径的CFileDialog以后就会出现ICTCLAS_Init初始化失败!郁闷了半天,查看ICTCLAS.log文件,
Default Path : E:\test_ICTCLAS\test_ICTCLAS\test_ICTCLAS
start lic check.
License succeed!Cannot open user dictionary
E:\test_ICTCLAS\test_ICTCLAS\test_ICTCLAS\Data\UserDict.pdat.
Cannot open file E:\test_ICTCLAS\test_ICTCLAS\test_ICTCLAS\Data\UserDict.map.
Cannot open user dictionary E:\test_ICTCLAS\test_ICTCLAS\test_ICTCLAS\Data\UserDict.pos.
Load dictionary down!
并没有异常,加载失败是因为并没有自定义词典。
仔细排查,发现bool ICTCLAS_Init(const char* pszInitDir=NULL)有一个默认的工作路径,在没有打开CFileDialog的时候默认的路径是exe文件执行路径,但是打开以后若不进行设置,会改变工作路径!这就是为什么点击CFileDialog路径更改,找不到路径下的文件,当然无法初始化了!( pszInitDir:初始化路径,应包含配置文件(Configure.xml)和词典目录(Data目录)以及授权文件(user.lic). 如果这些文件及目录在系统运行当前目录下,此参数可以为null)
解决方案:
方案1. 在每次调用CFileDialog打开文件后重新设置工作路径
方案2. 在程序中使用绝对路径
方案3. CFileDialog的构造函数有8个参数,平时为了省事一般只是指定第一个。其实解决这个问题,只要在第四个参数dwFlags中加上OFN_NOCHANGEDIR即可

4. 有人在linux中nlpir/ictclas2014分词系统使用python编译过的吗

用过。不过不是老版本的,用的是它的开源版本。最近张博士似乎又出了一个开源项目,更方便了。

以前ictclas014似乎只能在windows下被python调用。我就成功过。 不过到了linux下比较麻烦。java调用是可以的。但是python似乎有些麻烦。不过当时谷哥的code项目里有一个开源版本。

现在不用这么麻烦了。

5. ictclas4j既然是用java编写的,为什么在linux系统下运行还报错呢(错误类型:java.lang.NullPointerExce

这跟系统没关系,你报的是空指针异常

热点内容
电脑采用的服务器 发布:2024-12-25 12:25:59 浏览:644
php网页的验证码 发布:2024-12-25 12:25:02 浏览:648
php季度 发布:2024-12-25 12:11:55 浏览:230
编程电缆制作 发布:2024-12-25 12:09:27 浏览:726
php怎么重启 发布:2024-12-25 12:09:26 浏览:524
魔兽脚本组队 发布:2024-12-25 12:03:35 浏览:495
在线直播加密 发布:2024-12-25 11:53:12 浏览:575
深圳医保卡的初始密码是什么 发布:2024-12-25 11:35:20 浏览:385
linux内核完全剖析 发布:2024-12-25 11:19:10 浏览:13
哪个云服务器好用云服务器推荐 发布:2024-12-25 11:16:18 浏览:990