当前位置:   article > 正文

java实现NLPIR(ICTCLAS)分词_ictclas java

ictclas java

1、NLPIR简介

        NLPIR汉语分词系统(又名ICTCLAS2013),主要功能包括中文分词;词性标注;命名实体识别;用户词典功能;支持GBK编码、UTF8编码、BIG5编码。新增微博分词、新词发现与关键词提取;张华平博士先后倾力打造十余年,内核升级10次。

    下载地址:http://ictclas.nlpir.org/downloads

 

2、目录介绍

    

     ReadMe:介绍

     Data:  系统核心词库

     doc:  文档,用法介绍

     include:系统头文件

     sample:NLPIR示例程序

     lib:   不同环境下的支撑库

     test:  测试数据

     bin:  ICTCLAS2014----------->分词系统
                           ICTCLAS-tools.exe-->分词的支撑工具,可用于测试,本处主要用来做用户词典导入
                           importuserdict.bat-->可将用户词典自动导入到系统内
                           NLPIR.dll-->Win32下的支撑动态链接库,其他环境的库,可以访问lib对应环境的库文件
                           NLPIR.lib
                           NLPIR_WinDemo.exe-->Win32下的演示程序,在Win8 32位下编译而成,部分环境可能不支持,或者显示异常

                          userdic.txt-->用户词典,用户可以自行编辑

 

 3、java代码  

       3.1  新建工程fenci导入lib库文件(sample\JnaTest_NLPIR\lib\jna-4.0.0.jar) 

       3.2  将sample\JnaTest_NLPIR\src\目录下文件复制到工程src直接使用

       

       3.3  修改代码        

       
  1. package com.code;
  2. import java.io.UnsupportedEncodingException;
  3. import utils.SystemParas;
  4. import com.sun.jna.Library;
  5. import com.sun.jna.Native;
  6. public class test1 {
  7. // 定义接口CLibrary,继承自com.sun.jna.Library
  8. public interface CLibrary extends Library {
  9. // 定义并初始化接口的静态变量 这一个语句是来加载 dll 的, 注意 dll 文件的路径
  10. //可以是绝对路径也可以是相对路径,只需要填写 dll 的文件名,不能加后缀
  11. CLibrary Instance = (CLibrary) Native.loadLibrary(
  12. "E:\\ICTCLAS2015\\bin\\ICTCLAS2015\\NLPIR", CLibrary.class);
  13. // 初始化函数声明
  14. public int NLPIR_Init(String sDataPath, int encoding,
  15. String sLicenceCode);
  16. //执行分词函数声明
  17. public String NLPIR_ParagraphProcess(String sSrc, int bPOSTagged);
  18. //提取关键词函数声明
  19. public String NLPIR_GetKeyWords(String sLine, int nMaxKeyLimit,
  20. boolean bWeightOut);
  21. public String NLPIR_GetFileKeyWords(String sLine, int nMaxKeyLimit,
  22. boolean bWeightOut);
  23. //添加用户词典声明
  24. public int NLPIR_AddUserWord(String sWord);//add by qp 2008.11.10
  25. //删除用户词典声明
  26. public int NLPIR_DelUsrWord(String sWord);//add by qp 2008.11.10
  27. public String NLPIR_GetLastErrorMsg();
  28. //退出函数声明
  29. public void NLPIR_Exit();
  30. //文件分词声明
  31. public void NLPIR_FileProcess(String utf8File, String utf8FileResult, int i);
  32. }
  33. public static String transString(String aidString, String ori_encoding,
  34. String new_encoding) {
  35. try {
  36. return new String(aidString.getBytes(ori_encoding), new_encoding);
  37. } catch (UnsupportedEncodingException e) {
  38. e.printStackTrace();
  39. }
  40. return null;
  41. }
  42. public static void main(String[] args) throws Exception {
  43. String argu = "E:\\ICTCLAS2015";
  44. //String system_charset = "GBK";//GBK----0
  45. String system_charset = "UTF-8";
  46. int charset_type = 1;
  47. //文件分词的输入和输出
  48. String utf8File = "test/屌丝,一个字头的诞生.TXT.TXT";
  49. String utf8FileResult = "test/屌丝,一个字头的诞生.TXT_result.TXT";
  50. int init_flag = CLibrary.Instance.NLPIR_Init(argu, charset_type, "0");
  51. String nativeBytes = null;
  52. if (0 == init_flag) {
  53. nativeBytes = CLibrary.Instance.NLPIR_GetLastErrorMsg();
  54. System.err.println("初始化失败!fail reason is "+nativeBytes);
  55. return;
  56. }
  57. String sInput = "去年开始,打开百度李毅吧,满屏的帖子大多含有“屌丝”二字,一般网友不仅不懂这词什么意思,更难理解这个词为什么会这么火。然而从下半年开始,“屌丝”已经覆盖网络各个角落,人人争说屌丝,人人争当屌丝。
  58. 从遭遇恶搞到群体自嘲,“屌丝”名号横空出世";
  59. //String nativeBytes = null;
  60. try {
  61. //参数0表示不带词性,参数1表示带有词性
  62. nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 0);
  63. System.out.println("分词结果为: " + nativeBytes);
  64. //增加用户词典后
  65. CLibrary.Instance.NLPIR_AddUserWord("满屏的帖子 n");
  66. CLibrary.Instance.NLPIR_AddUserWord("更难理解 n");
  67. nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1);
  68. System.out.println("增加用户词典后分词结果为: " + nativeBytes);
  69. //删除用户词典后
  70. CLibrary.Instance.NLPIR_DelUsrWord("更难理解");
  71. nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1);
  72. System.out.println("删除用户词典后分词结果为: " + nativeBytes);
  73. //
  74. //CLibrary.Instance.NLPIR_FileProcess(utf8File, utf8FileResult,0);
  75. CLibrary.Instance.NLPIR_FileProcess(utf8File, utf8FileResult,1);
  76. int nCountKey = 0;
  77. String nativeByte = CLibrary.Instance.NLPIR_GetKeyWords(sInput, 10,false);
  78. System.out.print("关键词提取结果是:" + nativeByte);
  79. nativeByte = CLibrary.Instance.NLPIR_GetFileKeyWords("test\\屌丝,一个字头的诞生.TXT.txt", 10,false);
  80. System.out.print("关键词提取结果是:" + nativeByte);
  81. CLibrary.Instance.NLPIR_Exit();
  82. } catch (Exception ex) {
  83. // TODO Auto-generated catch block
  84. ex.printStackTrace();
  85. }
  86. }
  87. }

 


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/851381
推荐阅读
相关标签
  

闽ICP备14008679号