sor anjl統合
mlcssegダウンロード:
https://github.com/mlcsdev/mlcsseg/tree/4.7
mlcsseg使用説明:
http://mlcsdev.iteye.com/blog/2037109
ANsj中国語分詞ダウンロード:
https://github.com/ansjsun/ansj_seg
参考記事:
http://www.abyssss.com/?p=62
ANsjはsorをサポートしていないので、mlcssegパッケージを使用することを選択しました。現在のmlcssegバージョンは4.7で、ansjバージョンをサポートするのは1.4です。だから、ansjの最新バージョンを使う必要があれば、自分で修正してください。
mlcssegプロジェクトは全部で4つのサブプロジェクトが含まれています。ikは使っていませんので、pomの中は取り除くことを考えられます。最後に3つのプロジェクトが残っています。
この三つの項目の中で、このように調整する必要があります。
1.mlcsseg-ansjのpom修正
2.mlcsseg-ansjプロジェクトのAnsj Tokenizer Factory.udateの方法は以下の通り修正されました。
3.mlcsseg-commonプロジェクトにおけるReloaderRegister.loadAndUpdateの方法は以下のように修正されました。
コード修正が完了したら、maven installでjarを包む:tree_split-1.4.jar,nlp-lang-02.jar,ansj_seg-2.6.6.jar、mlcsseg-common-4.6-NAPSHOT.jar、mlcsseg-filter-4.6-NAPSHOT.jar、mlcsseg-ansj-4.6-SDPSHOT.jarはあなたのソロウェブプロジェクトWEB-INF/libフォルダに入れます。
4.mlcssegプロジェクトにはtest 1とtest 2のフォルダがあります。test 1はikの配置です。使わなくてもいいです。test 2のフォルダを選択して、ansj.co nfファイルfilesの値を見つけて、辞書に変更するルート(元々は辞書の具体的なファイル名です。今はパスに変更します。)があります。自分の辞書を拡張できます。
5.test 2フォルダの中のconfフォルダ、copyを上の文章のnew_に移動します。コール中(直接カバー)
6.ansj_seg-masterプロジェクト(つまりansjプロジェクト)では、libraryフォルダのcopyを上の記事で言及したnew_に移動します。コール中
7.ansj_seg-masterプロジェクトでは、library.propertiesファイルをあなたのsour webプロジェクトWEB-INF/clasesにコピーし、同時にambigityLibraryとuserLibraryの辞書パスを修正します。
これで、配置は完了しました。リセットしてください。
ansj分詞効果
ansjの分詞効果ではありません。
特に注意してください。以上の操作は全部初動です。
テストコード:
//ansj_seg-master/src/test/java/org/ansj/test/UserDefinedAnalysisTest.java
しかし、ここには疑問があります。なぜ私は詞庫に「北京好薬師」「好薬師」という単語を追加したのですか?
https://github.com/mlcsdev/mlcsseg/tree/4.7
mlcsseg使用説明:
http://mlcsdev.iteye.com/blog/2037109
ANsj中国語分詞ダウンロード:
https://github.com/ansjsun/ansj_seg
参考記事:
http://www.abyssss.com/?p=62
ANsjはsorをサポートしていないので、mlcssegパッケージを使用することを選択しました。現在のmlcssegバージョンは4.7で、ansjバージョンをサポートするのは1.4です。だから、ansjの最新バージョンを使う必要があれば、自分で修正してください。
mlcssegプロジェクトは全部で4つのサブプロジェクトが含まれています。ikは使っていませんので、pomの中は取り除くことを考えられます。最後に3つのプロジェクトが残っています。
<module>mlcsseg-common</module>
<module>mlcsseg-filter</module>
<module>mlcsseg-ansj</module>
この三つの項目の中で、このように調整する必要があります。
1.mlcsseg-ansjのpom修正
<version>1.4</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/ansj_seg-1.4-min.jar</systemPath>
<version>2.0.6</version>
<!------------------------------------------------------------------------->
<version>1.3</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/tree_split-1.3.jar</systemPath>
<version>1.4</version>
2.mlcsseg-ansjプロジェクトのAnsj Tokenizer Factory.udateの方法は以下の通り修正されました。
UserDefineLibrary.loadLibrary(inputStreams);
UserDefineLibrary.loadLibrary(UserDefineLibrary.FOREST, path);
3.mlcsseg-commonプロジェクトにおけるReloaderRegister.loadAndUpdateの方法は以下のように修正されました。
if (!dicts.isEmpty()){
List<InputStream> insFromLoader = new ArrayList<InputStream>(dicts.size());
for(String dictName : dicts){
try{
insFromLoader.add(loader.openResource(dictName));
}catch(IOException e){
System.out.println("missing dict source : " + dictName);
}
}
reloadFactory.update(insFromLoader);
System.out.println("reload finish! " + dicts);
}
//---------------------------------------------------------------------------
//
if (!dicts.isEmpty()){
for(String dictPath : dicts){
reloadFactory.update(dictPath);
System.out.println("reload finish! " + dictPath);
}
}
コード修正が完了したら、maven installでjarを包む:tree_split-1.4.jar,nlp-lang-02.jar,ansj_seg-2.6.6.jar、mlcsseg-common-4.6-NAPSHOT.jar、mlcsseg-filter-4.6-NAPSHOT.jar、mlcsseg-ansj-4.6-SDPSHOT.jarはあなたのソロウェブプロジェクトWEB-INF/libフォルダに入れます。
4.mlcssegプロジェクトにはtest 1とtest 2のフォルダがあります。test 1はikの配置です。使わなくてもいいです。test 2のフォルダを選択して、ansj.co nfファイルfilesの値を見つけて、辞書に変更するルート(元々は辞書の具体的なファイル名です。今はパスに変更します。)があります。自分の辞書を拡張できます。
5.test 2フォルダの中のconfフォルダ、copyを上の文章のnew_に移動します。コール中(直接カバー)
6.ansj_seg-masterプロジェクト(つまりansjプロジェクト)では、libraryフォルダのcopyを上の記事で言及したnew_に移動します。コール中
7.ansj_seg-masterプロジェクトでは、library.propertiesファイルをあなたのsour webプロジェクトWEB-INF/clasesにコピーし、同時にambigityLibraryとuserLibraryの辞書パスを修正します。
これで、配置は完了しました。リセットしてください。
ansj分詞効果
ansjの分詞効果ではありません。
特に注意してください。以上の操作は全部初動です。
テストコード:
//
/*
String nature = "aaaaa";
String str = " 2012 ";
UserDefineLibrary.insertWord(" ", nature, 2000);
UserDefineLibrary.insertWord(" ", nature, 2000);
String[] paramers = new String[2];
paramers[0] = nature;
paramers[1] = String.valueOf(2000);
Value value = new Value(newWord, paramers);
Library.insertWord(UserDefineLibrary.FOREST, value);
*/
String str = " ";
//String newWord = " ";
//String nature = "111";
/*
String[] paramers = new String[2];
paramers[0] = nature;
paramers[1] = String.valueOf(2000);
Value value = new Value(newWord, paramers);
Library.insertWord(UserDefineLibrary.FOREST,value);
*/
String path = "/home/resin/data/jsp/solr.ehaoyao.com/WebRoot/cores/multicore/new_core/conf/extDic.txt";
UserDefineLibrary.loadLibrary(UserDefineLibrary.FOREST, path);
//Value value2 = new Value(" ", "222", "1000");
//Library.insertWord(UserDefineLibrary.FOREST, value2);
//Value value = new Value(" ", "111", "1000");
//Library.insertWord(UserDefineLibrary.FOREST, value);
out.println(ToAnalysis.parse(str));
//out.println("<br/>");
//out.println(UserDefineAnalysis.parse(str));
あるいは直接ansjプロジェクトのテストクラスを見ます。//ansj_seg-master/src/test/java/org/ansj/test/UserDefinedAnalysisTest.java
しかし、ここには疑問があります。なぜ私は詞庫に「北京好薬師」「好薬師」という単語を追加したのですか?