ictclas分词系统的使用,java调用,附带连接mysql进行读写。

来源:互联网 发布:微信点赞软件 编辑:程序博客网 时间:2024/05/06 09:53

1.进入官网下载
ictclas2013下载包,目前更新到0416版,ictclas2013-Win-32-jni或者64位的。如果系统是32位的就下载32位的,如果是64位的系统,那就要看你安装的java虚拟机是32位还是64位。若是32为jdk,还是要下载使用32位的JNI,而且Eclipse也用32位的。

2.准备文件
打开ictclas2013文件,需要的数据是:Data,Bin,Text三个文件,其中Bin文件夹里面只要:NLPIR.dll文件,里面内容不要轻易更改。打开Win-32bit_JNI-lib文件,里面有个NLPIL_JNI.dll文件。

3.创建项目
a.直接将java示例程序导入到src目录下,TestNLPIR.java和kevin同级,不要更改包名。
b.创建file文件夹,跟src同级目录,将Data文件夹放入里面。把测试文本Test放入到项目里面,也跟src是同级目录。
c.导入dll文件,将NLPIR.dll和NLPIL_JNI.dll文件同时导入到项目中,使用右键点击项目,import方法,从文件中导入,选择这两个文件。

4.引入相关jar包。需要2个包添加进去。
jna-4.0.0.jar
mysql-connector-java-5.1.14-bin.jar

5、修改代码样例中的文件路径。从上到下,需要修改的地方有:

CLibrary Instance = (CLibrary) Native.loadLibrary(                "F:\\test\\分词\\汉语分词20140928\\lib\\win64\\NLPIR", CLibrary.class);

上面这个位置是你解压缩后文件中NLPIR路径。

public static void main(String[] args) throws Exception     {        String argu = "F:\\test\\JnaTest_NLPIR";

上面这个位置是,你把java样例JnaTest_NLPIR单独拿出来放的位置。

完整代码:

package code;import java.io.UnsupportedEncodingException;import java.sql.*;import utils.SystemParas;import com.sun.jna.Library;import com.sun.jna.Native;public class NlpirTest {    // 定义接口CLibrary,继承自com.sun.jna.Library    public interface CLibrary extends Library {        // 定义并初始化接口的静态变量        CLibrary Instance = (CLibrary) Native.loadLibrary("F:\\test\\分词\\汉语分词20140928\\lib\\win64\\NLPIR", CLibrary.class);        public int NLPIR_Init(String sDataPath, int encoding,                String sLicenceCode);        public String NLPIR_ParagraphProcess(String sSrc, int bPOSTagged);        public String NLPIR_GetKeyWords(String sLine, int nMaxKeyLimit,                boolean bWeightOut);        public String NLPIR_GetFileKeyWords(String sLine, int nMaxKeyLimit,                boolean bWeightOut);        public int NLPIR_AddUserWord(String sWord);//add by qp 2008.11.10        public int NLPIR_DelUsrWord(String sWord);//add by qp 2008.11.10        public String NLPIR_GetLastErrorMsg();        public void NLPIR_Exit();    }    public static String transString(String aidString, String ori_encoding,            String new_encoding) {        try {            return new String(aidString.getBytes(ori_encoding), new_encoding);        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        }        return null;    }    public static void main(String[] args) throws Exception     {        String argu = "F:\\test\\JnaTest_NLPIR";        // String system_charset = "GBK";//GBK----0        String system_charset = "UTF-8";        int charset_type = 1;        int init_flag = CLibrary.Instance.NLPIR_Init(argu, charset_type, "0");        String nativeBytes = null;        if (0 == init_flag)         {            nativeBytes = CLibrary.Instance.NLPIR_GetLastErrorMsg();            System.err.println("初始化失败!fail reason is "+nativeBytes);            return;             }        String driver="com.mysql.jdbc.Driver";        String url="jdbc:mysql://127.0.0.1:3306/数据库名称?useUnicode=true&characterEncoding=utf-8"; //设置编码格式可以解决乱码问题。        Class.forName(driver);        Connection connecter=DriverManager.getConnection(url,"root","数据库密码");  if(!connecter.isClosed()) System.out.println("success in getConnetion"); Statement statement=connecter.createStatement(); Statement stmt; ResultSet rs=statement.executeQuery("select * from p_user1_pt_gl");   while(rs.next())   {                  String sInput=rs.getString("content");        String suid=rs.getString("uid");      String smid=rs.getString("mid");       String stime=rs.getString("time");     // String nativeBytes = null;       try {            nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1); System.out.println("分词结果为:\n " + nativeBytes);                     //                      CLibrary.Instance.NLPIR_AddUserWord("cool n");//                      CLibrary.Instance.NLPIR_AddUserWord("高富帅 n");//                      nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1);//                      System.out.println("增加用户词典后分词结果为: " + nativeBytes);     //                      CLibrary.Instance.NLPIR_DelUsrWord("cool");//                      nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1);//                      System.out.println("删除用户词典后分词结果为: " + nativeBytes);                                             int nCountKey = 0;                        String nativeByte = CLibrary.Instance.NLPIR_GetKeyWords(sInput, 10,false);//设置最大关键词的数量                        System.out.print("关键词提取结果是:\n" + nativeByte);                                               stmt = connecter.createStatement();                          stmt.execute("insert into p_user1_pt_keywords (uid,mid,time,content) values('" + suid + "','" + smid + "','" + stime + "','" + nativeByte + "')");                      // nativeByte = CLibrary.Instance.NLPIR_GetFileKeyWords("D:\\NLPIR\\feedback\\huawei\\5341\\5341\\产经广场  \\2012\\5\\16766.txt", 10,false);           // System.out.print("关键词提取结果是:" + nativeByte);                                              }  catch (Exception e)    {// TODO Auto-generated catch block   e.printStackTrace();         }        }CLibrary.Instance.NLPIR_Exit();rs.close();    }}
1 0
原创粉丝点击