问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

谁会用ICTCLAS这个分词程序

发布网友 发布时间:2022-05-26 11:44

我来回答

2个回答

热心网友 时间:2023-10-15 13:14

ICTCLAS分词系统是个NB的系统,这几天找到了仔细试了试,效率奇高,比自己搞字典,分词算法效率不知高了很多倍,用起来也是非常简单的,BOSS需要导出自定义词库,然后用文章训练词库,不管了,反正可以使用了。DT地用hash做了两个星期,进度很慢,分析一本《天龙八部》,统计出现的词语频率(词语只是仅仅基于频率,在并没有字典的情况下无法实现智能分词!)大概要花费十几分钟,可见效率底下,而且内存200M左右。使用ICTCLAS分词系统可以高效地实现分词。下面把过程贴出来。
使用方法,首先到网上下载ICTCLAS,因为我是windows下的C++实现, 下载ICTCLAS2011_Windows_32_c,解压,里面有很好的Demo,Doc,copy 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即可

热心网友 时间:2023-10-15 13:14

我也在用,发了邮件过去一直没有回复我
注册激活步骤
1. 在Windows下运行LicenseClient.exe,按照提示如实填写使用者信息;在Linux下运行./license -R(先将该文件利用chmod +x license将该文件变为可执行文件)
2. 按照提示,将登记之后的user.lic文件返回给中科计算技术转移中心的market@i3s.ac.cn;
3. 我们承诺在两个工作日内尽快回给您返回注册码
4. 按照注册码激活之后,即可正常试用1个月;试用期满后,按年购买正式授权,可以继续使用,否则,API失效。欢迎您联系我们。
注意:不要破坏user.lic,否则会影响正常使用。
文件包介绍
ICTCLAS3.0\PACKET
│ Configure.xml:配置管理文件
│ ICTCLAS30_Manual.htm:使用手册
│ ReadMe.txt

├—API
│ ├—C# :C#环境下的API
│ │ Example.cs: 示例程序
│ │ ICTCLAS30.dll:ICTCLAS3.0动态链接库
│ │ ICTCLAS30.h: ICTCLAS3.0头文件
│ │ ICTCLAS30.lib: ICTCLAS3.0 Library
│ │ ICTCLAS_C#_Demo.exe:示例程序生成的可执行文件
│ ├—JNI :Java下采用的API (Javac TestICTCLAS30.java编译;Java TestICTCLAS30)
│ │ ICTCLAS30.dll: ICTCLAS3.0动态链接库
│ │ TestICTCLAS30.java: 示例程序
│ │ TestICTCLAS30.class: Java编译之后产生的class文件
│ │ Test.txt: 测试源文件
│ │ Test_result.txt:测试源文件生成的结果文件
│ ├—Linux_C :Linux下采用C的API
│ │ Example.cpp: 示例程序
│ │ ICTCLAS30.h: ICTCLAS3.0头文件
│ │ libICTCLAS30.a: ICTCLAS3.0 Library
│ │ Makefile:示例程序编译用的Makefile文件
│ │ test:示例程序生成的可执行文件
│ ├—Linux_JNI :Linux下Java采用的API
│ │ TestICTCLAS30.java: 示例程序
│ │ libICTCLAS30.so: ICTCLAS3.0 Library
│ │
│ └—Win_C:Windows下采用C的API
│ Example.cpp: 示例程序
│ Example.exe:示例程序生成的可执行文件
│ ICTCLAS30.dll:ICTCLAS3.0动态链接库
│ ICTCLAS30.h: ICTCLAS3.0头文件
│ ICTCLAS30.lib: ICTCLAS3.0 Library

├—Data:ICTCLAS3.0的数据文件
│ BiWord.big
│ charset.type
│ CoreDict.pdat
│ CoreDict.pos
│ CoreDict.unig
│ ICTCLAS.map
│ ICTCLAS30.ctx
│ ICTPOS.map
│ nr.ctx
│ nr.fsa
│ nr.role

├—docs:文档集合,用户手册需要
│ ICTPOS3.0.doc:ICTCLAS采用的词性标注集的含*释

├—gif:图片,用户手册需要

└—Licenses:授权相关的文件夹
LicenseClient.exe:Windows环境下的用户注册程序
licenseClient_Linux:Linux环境下的用户注册程序
user.lic 用户License文件,表明用户身份,必不可少,不得更改。

三步傻瓜式操作就可以使用ICTCLAS3.0

1.按照二.注册激活步骤,在Licenses目录下执行相应的用户注册程序,得到授权码或者授权之后的user.lic
2.选择您需要的API形式,主要已经您的开发环境和操作系统来定,比如你选择了Linux下的C调用,则您需要选择文件夹API/Linux_C;
3.将(1)Data文件夹(2)授权之后的user.lic(3)Configure.xml 拷贝到您选择的文件夹中;编译执行即可。最后恭喜你,您可以正常使用ICTCLAS3.0了!

参考资料:ictclas3.0的文件说明

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 你好: 请问外汇的手续费是怎么收取的?是不是做不同币种收取的手续费不一样? 具体是怎么计算的?? 玩OL怎样编辑鼠标宏 迷人的保姆,高清 谢谢 FSA系统是什么 关于鼠标宏 哪中和歌!文听些歌?好有英啊文都 8健鼠标除了侧键还有两个键分别是打开浏览器和打开邮件,请问怎么把这两个健设置成其他的快捷键 单独拷贝android下拷贝linux为啥不能编译 交叉编译环境出错 求瓶邪文《心魔》txt全集 Fedruarm的音标 7.0.3微信怎么没有支付设置?APPLE的免密支付想关闭在哪找到入口? 惊天小说txt全集免费下载 求动漫名称和高清壁纸 请问这个桌面壁纸出自哪一部gal? 白色的犄角和jk衣服的动漫人物是谁? 修复海康H100电脑客户端 Aqara H100智能门锁安全性怎么样? hsem是什么手机 欧信H100 怎么下载手机QQ2009 考试每一门考试复习的重心 是否可以查询QQ里面任意一个好友最近登陆的时间,可以的话,如何查啊? 《沁园春.长沙》中“谁主沉浮?”这一句怎么理解? "问苍天大地 谁主沉浮"出自何诗 《王者荣耀》云缨燎原百斩口诀是什么? 谁主沉浮出自于哪里 三峡中描写春冬之水的句子是? 《三峡》四个季节的特点? 三峡中写春冬之水的特点的句子,急 请用自己的语言简要概括三峡盛夏之水和初冬之水分别有哪些特点 对联。赏素湍绿潭春冬之水 三峡郦道元中按先山后水的顺序来写,主要突出夏水的什么,春冬之水的什么,秋景的什么? 三峡一文先写夏水,再写春冬之水,最后写秋水这样安排有什么作用? 三峡中,作者主要描写了哪些景物,是从哪些方面描写 三峡 郦道元 作者为什么先写夏水?又为什么先写山,后写水? 郦道元《三峡》是从哪些方面描写三峡自然景观的? 三峡课文写三峡四时风光,为什么从山写起,写水为什么不按春夏秋冬的顺序来写 郦道元《三峡》的四季景色问题?为什么没有按照春夏秋冬的顺序?【要最完整的。】 三峡中,作者主要描写了哪些景物,是从哪 郦道元《三峡》的四季景色,为什么没有按照春夏秋冬的顺序