しろかい!

アプリ開発や機械学習などの開発Tips.

n-gramを生成するNgramCreator.javaを作った

JavaでString型の文からn-gramを生成したかったのですが,いい感じのものが見つからなかったので自作しました.

f:id:shun9167:20150108214505j:plain

Gistにコードをあげたのでとりあえず貼っときます.

使い方は非常に簡単で,NgramCreator#createNgram(String text, int n)を呼び出すだけです.
第1引数textにはn-gramを生成したい文を,第2引数nには何gramを生成するかを入れます.
このメソッドの返り値はMap<String, Integer>型で,keyにはn-gramが,valueには出現回数が格納されています.

上記コードにはテスト用のmainメソッドを用意してあるので,これを実行すると以下のように出力されます.
なお,入力テキストにはn-gram - Wikipediaを利用しました.

typically are collected  1
probability, an n-gram  1
is a contiguous 1
or speech corpus.   1
items can be    1
a given sequence    1
The n-grams typically   1
are collected from  1
contiguous sequence of  1
computational linguistics and   1
(以下略)

n-gramと,その出現回数が出力されます.

また,このメソッドでは半角スペースを単語の区切りとして扱います.
そのため,必要があれば予めテキストに前処理を施しておくといいでしょう.(特に日本語の場合)

よろしければ使ってみてください^^