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