网上一直没有java调用c++的jieba分词,最近自己项目需求,做了一下简单的封装,经过本人实际测试可用,中间会有差别,欢迎留言,我会尽量解答。
1,编写java代码,java代码如下
import java.util.Arrays; import java.util.Map; public class JiebaForJava { /** * cut word * @param content * @param isHmm CUT WITH OR NOT HMM * @return */ public native String[] cut(String content,boolean isHmm); /** * * @param content * @return */ public native String[] cutAll(String content); /** * * @param content * @return */ public native String[] cutForSearch(String content); /** * * @param content */ public native void insertUserWord(String content); /** * * @param content * @return */ public native Map<String,String> tag(String content); /** * * @param path */ public native void loadUserDict(String path); public static void main(String[] args) { System.load("/home/spark/Desktop/cppjieba-master/test/JiebaForJava.so"); JiebaForJava demo = new JiebaForJava(); System.out.println(Arrays.toString(demo.cut("他来到了网易杭研大厦",true))); System.out.println(Arrays.toString(demo.cutAll("我来到北京清华大学"))); System.out.println(Arrays.toString(demo.cutForSearch("小明硕士毕业于中国科学院计算所,后在日本京都大学深造"))); System.out.println(Arrays.toString(demo.cut("男默女泪",true))); demo.insertUserWord("男默女泪"); System.out.println(Arrays.toString(demo.cut("男默女泪",true))); Map<String, String> tag = demo.tag("我是拖拉机学院手扶拖拉机专业的。不用多久,我就会升职加薪,当上CEO,走上人生巅峰。"); for(Map.Entry entry:tag.entrySet()){ System.out.println(entry.getKey()+":"+entry.getValue()); } demo.loadUserDict("/home/spar