ICTCLAS20160405分词系统调试过程
一、前期准备:
1、下载最新版本的资源包:CTCLAS20160405171043_ICTCLAS2016分词系统下载包
2、下载最新版本的licence:https://github.com/NLPIR-team/NLPIR/tree/master/License
二、调试程序
1、将JnaTest_NLPIR工程工程导入到MyEclipse。
2、修改NLPIR目录
这个与操作系统有关,在\汉语分词20140928\lib\操作系统目录下。我的是win7 64bit,所以在汉语分词20140928\libwin64\目录下。写路径的时候注意特殊字符的转义,而且windows路径是反斜杠“\”,注意改成形如这样:“E://test//汉语分词20140928//lib//win64//NLPIR”,文件名不加后缀名。
3、修改Data文件夹目录
String argu = new File("").getAbsolutePath(); //Data文件夹在工程目录下
Data文件不在工程目录下,写路径要注意编码问题,我程序设置的系统编码是GBK,但是工程的编码设置的是utf-8,打印出来就能看出来路径中的中文都是乱码,当然会导致无法加载类或者是找不到配置文件。将所有设置编码的地方都设置成一样的编码,保证不会有错。工程的编码可以是utf-8,只要程序中所有地方都引用同一个系统编码就可以。
我第二次做这个实验鬼抽风般File("").getAbsolutePath();得到的是乱码(没有中文也有乱码)。还是IDE的编码设置等和其他一些编码设置问题,这个我实在是郁闷了。new File("").getAbsolutePath().getBytes("GBK")也许有效~我设置了工程的编码是GBK,但是打开工程文件.project是里面写了utf-8,我不清楚这有没有关系,实在不行,用命令行调试吧。
三、运行程序
如果你运气够好,没有出现什么幺蛾子,没有乱改程序,这时程序就可以正常运行了。
运行结果:
分词结果为: 据悉/v ,/wd 质检/vn 总局/n 已/d 将/d 最新/a 有关/vn 情况/n 再次/d 通报/v 美方/n ,/wd 要求/v 美方/n 加强/v 对/p 输/v 华/b 玉米/n 的/ude1 产地/n 来源/n 、/wn 运输/vn 及/cc 仓储/vn 等/udeng 环节/n 的/ude1 管/v 控/v 措施/n ,/wd 有效/ad 避免/v 输/v 华/b 玉米/n 被/pbei 未经/d 我国/n 农业部/nt 安全/an 评估/vn 并/cc 批准/v 的/ude1 转基因/n 品系/n 污染/vn 。/wj
关键词提取结果是:农业部#评估#仓储#污染#
如果你像我一样乱改了程序或者运气实在太差,sorry,你可能初始化失败。初始化失败的原因可能有:
1、licence过期。解决办法是下载最新的licence和修改系统时间。
2、无法找到Configure.xml。可能你有个地方乱改字符集或者字符集代码。请检查所有设置字符集的地方N遍。我在初始化ICTCLAS_Init时,将new File("").getAbsolutePath().getBytes("字符集")作为参数传递就可以正确运行了。
3、其他错误请参见错误日志的输出。
四、分析其他文件
1、字符流缓冲类输入输出文件
File file = new File("文件路径");
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String sInput = bufferedReader.readLine();
File outFile = new File("输出结果路径+输出结果.txt");
FileWriter fileWiter = new FileWriter(outFile);
BufferedWriter bufferedWriter = new BufferedWriter(fileWiter);
while((sInput = bufferedReader.readLine())!=null){
String nativeBytes = null;
try {
nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 3);
// String nativeStr = new String(nativeBytes, 0,
// nativeBytes.length,"utf-8");
//System.out.println("分词结果为: " + nativeBytes);
System.out.println("分词结果为: "+ transString(nativeBytes, system_charset, "GBK"));
bufferedWriter.write("分词结果为: "+ transString(nativeBytes, system_charset, "GBK"));
bufferedWriter.write("\r\n");
int nCountKey = 0;
String nativeByte = CLibrary.Instance.NLPIR_GetKeyWords(sInput, 10,false);
System.out.println("关键词提取结果是:" + nativeByte);
bufferedWriter.write("关键词提取结果是:" + nativeByte);
bufferedWriter.write("\r\n");
} catch (Exception ex) {
// TODO Auto-generated catch block
ex.printStackTrace();
}
}
记得关闭bufferedWriter。
2、找一篇文章存为txt格式,进行分词和关键词提取。
到此为止我终于调试好了分词系统,中英文都很有效。文件也差不多看了,只是.dll里面不知道写了什么。能做到这里我已经很开心了,下篇我将按照说明做hadoop使用分词实例。
ICTCLAS20160405分词系统调试过程的更多相关文章
- php 分词 —— PHPAnalysis无组件分词系统
分词,顾名思义就是把词语分开,从哪里分开?当然是一大堆词语里了,一大堆词语是什么?是废话或者名言.这在数据库搜索时非常有用. 官方网站 http://www.phpbone.com/phpanalys ...
- 在TensorFlow中基于lstm构建分词系统笔记
在TensorFlow中基于lstm构建分词系统笔记(一) https://www.jianshu.com/p/ccb805b9f014 前言 我打算基于lstm构建一个分词系统,通过这个例子来学习下 ...
- stm32--FatFs调试过程(SPIFlash)
移植方法参见我的另一篇博客:<stm32--FatFs移植(SPIFlash)>. 本文仅记录在初次移植完成后,遇到的问题,和解决的过程. 调试记录: 问题1:f_open返回3,即磁盘没 ...
- 分词系统简介:PHPAnalysis分词程序
分词系统简介:PHPAnalysis分词程序使用居于unicode的词库,使用反向匹配模式分词,理论上兼容编码更广泛,并且对utf-8编码尤为方便. 由于PHPAnalysis是无组件的系统,因此速度 ...
- Python环境下NIPIR(ICTCLAS2014)中文分词系统使用攻略
一.安装 官方链接:http://pynlpir.readthedocs.org/en/latest/installation.html 官方网页中介绍了几种安装方法,大家根据个人需要,自行参考!我采 ...
- 【原创】中文分词系统 ICTCLAS2015 的JAVA封装和多线程执行(附代码)
本文针对的问题是 ICTCLAS2015 的多线程分词,为了实现多线程做了简单的JAVA封装.如果有需要可以自行进一步封装其它接口. 首先ICTCLAS2015的传送门(http://ictclas. ...
- 视频: 千重浪Linux系统调试技术培训 03-01_Basic-CPU-Register
免费轻松学习Linux系统调试技术 欢迎收看本工作室放到优酷上播放的免费教学视频. 清晰! 完整! 无病毒! 请点击:http://v.youku.com/v_show/id_XNjM1OTQ3Mj ...
- 一个简单的CS系统打包过程图文版
一个简单的CS系统打包过程图文版 1. 打包内容 1.1. 此次打包的要求和特点 主工程是一个CS系统: 此CS系统运行的先决条件是要有.Net Framework 3.5: 主工程安装完成 ...
- linux系统开机过程描述
本文描述linux系统开机过程,属于个人理解范畴,如果文中表述有误请大家批评指正! 计算机开机之后,首先要加载BIOS(基本输入输出系统)信息,BIOS包含了很多重要的信息,包括CPU信息,设备启动顺 ...
随机推荐
- .NET .ashx 文件 用Session 是需要注意的问题
.ashx 文件,默认不可使用 Session ,需要使用Session 时, 需要引用 接口 IRequiresSessionState 例如: public class AddHouseInfo ...
- css3知识
一.box-sizing 属性 规定两个并排的带边框的框 二.align-items (适用于父类容器上) 设置或检索弹性盒子元素在侧轴(纵轴)方向上的对齐方式. 值: flex-start:弹性盒子 ...
- 级联两个bootstrap-table。一张表显示相关的数据,通过点击这张表的某一行,传过去对应的ID,刷新另外一张表。
二张表的代码(我用的插件,大家可以去网上直接下载http://issues.wenzhixin.net.cn/bootstrap-table/): <div class="contai ...
- C# MVC 页面静态化导致的问题
在设置页面静态化的路由,代码如 //静态路由 routes.MapRoute( name: "html", url: "{controller}/{action}.htm ...
- java关键字之final
final表示不能修改. final修饰的方法不能被重写, final修饰的类不能被继承并且类里的所有方法都是final,成员变量可以是final或者不是final. final修饰的成员变量不可以改 ...
- Go并发控制之sync.WaitGroup
WaitGroup 会将main goroutine阻塞直到所有的goroutine运行结束,从而达到并发控制的目的.使用方法非常简单,真心佩服创造Golang的大师们! type WaitGroup ...
- vulcan测试记录
感觉这个游戏很赞,是六个里面最喜欢的一个了 1.有时候挖坑对于位置要求比较大? 2.感觉难度比较大,尤其是玩到第三关很考验啊(不过从另一个方面来说也是优点?) 3.玩到现在对于怪物吃金子的原理没有很懂 ...
- python中的GIL(全局解释锁)多线程能够提升效率
预启动的时候,应用程序仍然会调用 OnLaunched 方法的,在 OnLaunched 方法调用之后,会马上发生 Suspending 事件,随后应用就会暂停. 我先基于develop主分支拉出一个 ...
- 【进展】LL谱面存储方式的改善
今天得某位高人相助,获得了一堆LL里面的标准谱面文件,是json格式的.于是折腾了一下午加一晚上,总算让SLP正确解析了json格式的谱面.
- java随笔
java与c++的几点区别 (1)Java比C++程序可靠性更高.有人曾估计每50行C++程序中至少有一个BUG.姑且不去讨论这个数字是否夸张,但是任何一个C++程序员都不得不承认C++语言在提供强大 ...