您的位置:首页 > 编程语言 > Java开发

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

2015-08-23 21:40 597 查看
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 ictclas mysql