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

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();
    }
}

你可能感兴趣的:(java,mysql,ictclas)