其他有名的还有lucene-gosen : http://code.google.com/p/lucene-gosen/ 以及Google・Amazon・楽天等日本大的搜索引擎使用的Rosette : http://www.basistech.jp/base-linguistics/japanese/ 。Rosette是商业版的,能够适用于很多语言,比如:中文,日文,韩文,英文等等。
http://www.atilika.org/
版本:kuromoji-0.7.7.jar
(1)2行代码即可分词
Tokenizer tokenizer = Tokenizer.builder().build(); Listtokens = tokenizer.tokenize(word);
分词后的Token:
for (Token token : tokens) { System.out.println("=================================================="); System.out.println("allFeatures : " + token.getAllFeatures()); System.out.println("partOfSpeech : " + token.getPartOfSpeech()); System.out.println("position : " + token.getPosition()); System.out.println("reading : " + token.getReading()); System.out.println("surfaceFrom : " + token.getSurfaceForm()); System.out.println("allFeaturesArray : " + Arrays.asList(token.getAllFeaturesArray())); System.out.println("辞書にある言葉? : " + token.isKnown()); System.out.println("未知語? : " + token.isUnknown()); System.out.println("ユーザ定義? : " + token.isUser()); }
(2)3中分词模式
String word = "日本経済新聞でモバゲーの記事を読んだ。"; Builder builder = Tokenizer.builder(); // Normal Tokenizer normal = builder.build(); ListtokensNormal = normal.tokenize(word); disp(tokensNormal); // Search builder.mode(Mode.SEARCH); Tokenizer search = builder.build(); List tokensSearch = search.tokenize(word); disp(tokensSearch); // Extends builder.mode(Mode.EXTENDED); Tokenizer extended = builder.build(); List tokensExtended = extended.tokenize(word); disp(tokensExtended);
引用
日本経済新聞 | で | モバゲー | の | 記事 | を | 読ん | だ | 。 |
日本 | 経済 | 新聞 | で | モバゲー | の | 記事 | を | 読ん | だ | 。 |
日本 | 経済 | 新聞 | で | モ | バ | ゲ | ー | の | 記事 | を | 読ん | だ | 。 |
日本 | 経済 | 新聞 | で | モバゲー | の | 記事 | を | 読ん | だ | 。 |
日本 | 経済 | 新聞 | で | モ | バ | ゲ | ー | の | 記事 | を | 読ん | だ | 。 |
(3)自定义词典
// 使用自定义字典 InputStream is = UserDictSample.class.getClassLoader().getResourceAsStream("resources/userdict_ja.txt"); Builder builder = Tokenizer.builder(); builder.userDictionary(is); Tokenizer userTokenizer = builder.build(); Listtokens2 = userTokenizer.tokenize(word); StringBuilder sb2 = new StringBuilder(); for (Token token : tokens2) { sb2.append(token.getSurfaceForm() + " | "); } System.out.println(sb2.toString());
引用
稀 | 勢 | の | 里 | 寛 |
稀勢の里 | 寛 |
稀勢の里 | 寛 |
resources/userdict_ja.txt:
引用
# 単語,形態素解析後の単語(単語を分ける場合は、スペースで区切る),読み,品詞
稀勢の里寛,稀勢の里 寛,キセノサト ユタカ,カスタム人名
稀勢の里寛,稀勢の里 寛,キセノサト ユタカ,カスタム人名
(4)汉字转片假名
String word = "東京特許許可局"; Builder builder = Tokenizer.builder(); builder.mode(Mode.NORMAL); Tokenizer tokenizer = builder.build(); Listtokens = tokenizer.tokenize(word); StringBuilder sb = new StringBuilder(); for (Token token : tokens) { sb.append(token.getReading() + " | "); } System.out.println(sb.toString());
引用
トウキョウ | トッキョ | キョカ | キョク |