Java调用NLPIR汉语分词系统

238 阅读3分钟
原文链接: click.aliyun.com

自然语言处理与信息检索共享平台:(nlpir相关的一些软件、文档、论文、语料库等资源)www.nlpir.org/

上边这个地址写的信息比较详细丰富,但是万事开头难,很多同学不知道怎么具体应该调用?下边我就把几个步骤简单介绍一下:

Step1、下载

我下载的文件:20141230101836_ICTCLAS2015.zip

Step2、解压

解压后的目录:D:\20141230101836_ICTCLAS2015

Step3、运行调用例子

NLPIR调用的例子在sample目录下,以Java调用的例子(JnaTest_NLPIR)为例:

(1)在Eclipse中导入JnaTest_NLPIR项目;

(2)打开src/code/NlpirTest.java文件,修改第16行和第44行的代码(就是dll的目录,例子中写的是错的);

()我下载的这个版本,在win7 64位机器上,win64目录下的dll无法调用,但是win32目录下的dll可以使用;

复制代码
 1 package code;
 2 
 3 import java.io.UnsupportedEncodingException;
 4 
 5 import utils.SystemParas;
 6 
 7 import com.sun.jna.Library;
 8 import com.sun.jna.Native;
 9 
10 public class NlpirTest {
11 
12     // 定义接口CLibrary,继承自com.sun.jna.Library
13     public interface CLibrary extends Library {
14         // 定义并初始化接口的静态变量
15         CLibrary Instance = (CLibrary) Native.loadLibrary(
16                 "D:\\20141230101836_ICTCLAS2015\\ICTCLAS2015\\lib\\win32\\NLPIR ", CLibrary.class);
17         
18         public int NLPIR_Init(String sDataPath, int encoding,
19                 String sLicenceCode);
20                 
21         public String NLPIR_ParagraphProcess(String sSrc, int bPOSTagged);
22 
23         public String NLPIR_GetKeyWords(String sLine, int nMaxKeyLimit,
24                 boolean bWeightOut);
25         public String NLPIR_GetFileKeyWords(String sLine, int nMaxKeyLimit,
26                 boolean bWeightOut);
27         public int NLPIR_AddUserWord(String sWord);//add by qp 2008.11.10
28         public int NLPIR_DelUsrWord(String sWord);//add by qp 2008.11.10
29         public String NLPIR_GetLastErrorMsg();
30         public void NLPIR_Exit();
31     }
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 
43     public static void main(String[] args) throws Exception {
44         String argu = "D:\\20141230101836_ICTCLAS2015\\ICTCLAS2015 ";
45         // String system_charset = "GBK ";//GBK----0
46         String system_charset = "UTF-8 ";
47         int charset_type = 1;
48         
49         int init_flag = CLibrary.Instance.NLPIR_Init(argu, charset_type, "0 ");
50         String nativeBytes = null;
51 
52         if (0 == init_flag) {
53             nativeBytes = CLibrary.Instance.NLPIR_GetLastErrorMsg();
54             System.err.println("初始化失败!fail reason is "+nativeBytes);
55             return;
56         }
57 
58         String sInput = "据悉,质检总局已将最新有关情况再次通报美方,要求美方加强对输华玉米的产地来源、运输及仓储等环节的管控措施,有效避免输华玉米被未经我国农业部安全评估并批准的转基因品系污染。 ";
59 
60         //String nativeBytes = null;
61         try {
62             nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1);
63 
64             System.out.println("分词结果为: " + nativeBytes);
65             
66             CLibrary.Instance.NLPIR_AddUserWord("要求美方加强对输 n ");
67             CLibrary.Instance.NLPIR_AddUserWord("华玉米的产地来源 n ");
68             nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1);
69             System.out.println("增加用户词典后分词结果为: " + nativeBytes);
70             
71             CLibrary.Instance.NLPIR_DelUsrWord("要求美方加强对输 ");
72             nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1);
73             System.out.println("删除用户词典后分词结果为: " + nativeBytes);
74             
75             
76             int nCountKey = 0;
77             String nativeByte = CLibrary.Instance.NLPIR_GetKeyWords(sInput, 10,false);
78 
79             System.out.print("关键词提取结果是: " + nativeByte);
80 
81             nativeByte = CLibrary.Instance.NLPIR_GetFileKeyWords("D:\\NLPIR\\feedback\\huawei\\5341\\5341\\产经广场\\2012\\5\\16766.txt
                                                            ", 10,false);
82 
83             System.out.print("关键词提取结果是: " + nativeByte);
84 
85             
86 
87             CLibrary.Instance.NLPIR_Exit();
88 
89         } catch (Exception ex) {
90             // TODO Auto-generated catch block
91             ex.printStackTrace();
92         }
93 
94     }
95 }
复制代码

Step4、其他功能和接口,可以查看doc目录下的使用手册。

 


本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/p/4585477.html,如需转载请自行联系原作者