import java.io.IOException; import java.util.List; import org.atilika.kuromoji.Token; import org.atilika.kuromoji.Tokenizer; import org.atilika.kuromoji.Tokenizer.Mode; import jp.ac.waseda.info.kake.system.InputMain; import jp.ac.waseda.info.kake.system.PrintIntegerMaker; public class TonixyKuromoji { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { new InputMain(args, "kuromoji 準備中...", "準備完了。文を入力してください") { Tokenizer tokenizer; @Override public void prepare() { if (args.length == 1) { Mode mode = Mode.valueOf(args[0].toUpperCase()); tokenizer = Tokenizer.builder().unknownFixMode(true).mode(mode).build(); } else if (args.length == 2) { Mode mode = Mode.valueOf(args[0].toUpperCase()); try { tokenizer = Tokenizer.builder().unknownFixMode(true).mode(mode).userDictionary(args[1]).build(); } catch (IOException e) { e.printStackTrace(); } } else { tokenizer = Tokenizer.builder().unknownFixMode(true).build(); /* * try { String userDict = "(^^),(^^),(^^),顔文字\n" + * "日本経済新聞,日本 経済 新聞,ニホン ケイザイ シンブン,カスタム名詞\n" + * "関西国際空港,関西 国際 空港,カンサイ コクサイ クウコウ,テスト名詞\n" + * "朝青龍,朝青龍,アサショウリュウ,カスタム人名"; tokenizer = * Tokenizer.builder().unknownFixMode(false * ).userDictionary(new StringReader(userDict)).build(); } * catch (IOException e) { e.printStackTrace(); } */ } }; @Override public void run(String line) { printTokens(tokenizer.tokenize(line)); } /** * デモ用。形態素解析結果を出力します。 * * @param line */ public void printTokens(List<Token> tokens) { PrintIntegerMaker pim = new PrintIntegerMaker(tokens.get(tokens.size() - 1).getPosition()); for (Token token : tokens) { System.out.println(pim.getPrintInteger(token.getPosition()) + ": " + token.getSurfaceForm() + "\t" + token.getAllFeatures()); } } }.main(); } }