LoginSignup
1
1

More than 5 years have passed since last update.

PDIでKuromojiを使って形態素解析をする

Posted at

経緯など

Pentaho Data Integartion(PDI)上で形態素解析する必要があったので調査とメモ。

PDIがJavaで実装されているため呼び出しやすいようにJavaの形態素解析器を調べたところ、Kuromojiがあったので、そちらを利用させていただくことにしました。
ただ、Javaで書いてPDIで呼ぶのも面倒だったので、結局Jython経由で利用しています。

使用環境

PDI 7.1
Java Version 8 Update 131
Kuromoji 0.7.7
Jython 2.7.0

設定手順

PDIはこちらからダウンロードしてきたZIPファイルを適当な場所に解凍しておくだけでよい
※解凍すると"data-integration"というディレクトリができるがこの辺りは割愛
※あとJavaが必要なので事前にインストールしておく

KuromojiをGitHubからZIPファイルをダウンロードして解凍し、以下に置く。

$ pwd
~/data-integration/lib
$ ls kuromoji-0.7.7.jar
kuromoji-0.7.7.jar
$

JythonをこちらからStandaloneJarをダウンロードして、以下に置く。

$ pwd
~/data-integration/lib
$ ls jython-standalone-2.7.0.jar
jython-standalone-2.7.0.jar
$

実行

PDIを起動。

$ pwd
~/data-integration
$ ./spoon.sh

起動したら、以下のように設定する。詳細はイメージの下に記載。
pdi_kuromoji_ktr.png

「Data Grid」ステップは、適当な文章をいくつか設定しておく。今回は以下のようにした。
・テストします。
・Jythonで形態素解析します。
・Kuromojiを使っています。

「Script」ステップは、以下のように設定。また、ステップ名を「〜.python」としておく必要があるので注意する。

from org.atilika.kuromoji import Tokenizer
builder = Tokenizer.builder();

normal = builder.build();
TokensNormal = normal.tokenize(txtdata);

rslist = []
for token in TokensNormal:
  rslist.extend([token.getSurfaceForm() + "," + token.getPartOfSpeech() + "|"])

rs = ''.join(rslist)

「Script」ステップの下部の"Fields"には、最終的に返却したいフィールドを設定する。ここでは、"rs"。


ここまで設定したら、「Script」ステップ上でプレビュー実行を行うと、以下のようになります。
pdi_kuromoji_ktr_result.png

複数の文字列を連続して処理しているので、1つの文字列を形態素解析した結果は、"|"でつないでます。
形態素解析とPDIでの処理を別々でやっていて、煩わしさを感じている場合などに使えるのではないかと思います。

参考

http://d.hatena.ne.jp/knaka20blue/20151224/1450943656
https://www.atilika.com/ja/products/kuromoji.html

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1