python から kuromoji を実行する方法のメモ。
以前の
「python から java プログラムを実行」する方法を元にして、python から kuromoji を実行します。
まず、以下の URL から kuromoji をダウンロードします。
https://github.com/atilika/kuromoji/downloads
そして、パスの指定を簡単にするため、kuromoji の jar とpy4j の jar をカレントディレクトリにコピーします。
以前と同様に以下のプログラムをコンパイル・実行します。
import py4j.GatewayServer;
public class GwTest1 {
public static void main(String[] args) {
GwTest1 app = new GwTest1();
GatewayServer server = new GatewayServer(app);
server.start();
}
}
java -classpath .:py4j0.10.9.2.jar:kuromoji-0.7.7.jar GwTest1
python から kuromoji を実行するプログラムは以下のようになります。
import sys
from py4j.java_gateway import JavaGateway
def main():
gw = JavaGateway()
str = 'サンプルプログラムを実行します。'
tokenizer = gw.jvm.org.atilika.kuromoji.Tokenizer.builder().build()
jtkns = tokenizer.tokenize(str)
for i in range(len(jtkns)):
jtkn = jtkns[i]
tkn = {
'form': jtkn.getSurfaceForm(),
'base': jtkn.getBaseForm(),
'read': jtkn.getReading(),
'pos': jtkn.getAllFeatures(),
}
print(tkn)
return 0
if __name__ == '__main__':
res = main()
exit(res)
上記のプログラムを実行すると、以下のように形態素解析結果が出力されます。
$ python kuromoji1.py
{'form': 'サンプル', 'base': 'サンプル', 'read': 'サンプル', 'pos': '名詞,一般,*,*,*,*,サンプル,サンプル,サンプル'}
{'form': 'プログラム', 'base': 'プログラム', 'read': 'プログラム', 'pos': '名詞,サ変接続,*,*,*,*,プログラム,プログラム,プログラム'}
{'form': 'を', 'base': 'を', 'read': 'ヲ', 'pos': '助詞,格助詞,一般,*,*,*,を,ヲ,ヲ'}
{'form': '実行', 'base': '実行', 'read': 'ジッコウ', 'pos': '名詞,サ変接続,*,*,*,*,実行,ジッコウ,ジッコー'}
{'form': 'し', 'base': 'する', 'read': 'シ', 'pos': '動詞,自立,*,*,サ変・スル,連用形,する,シ,シ'}
{'form': 'ます', 'base': 'ます', 'read': 'マス', 'pos': '助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス'}
{'form': '。', 'base': '。', 'read': '。', 'pos': '記号,句点,*,*,*,*,。,。,。'}