GolangとJUMAN++を使ってTwitterデータを形態素解析する方法
Windows10にJUMAN++をインストールし、Golangから実行結果を受け取る方法
何を目指しているか
Twitterの呟きビックデータを取得し、感情コーパスに当てはめ感情の起伏を時系列に見ようと考えてます。
STEP1:Twitterの呟きデータをダウンロード STEP2:ダウンロードした呟きデータをプログラムから読み込み STEP3:呟きデータに対して形態素解析にかけて字句毎に分割する STEP4:字句毎の感情コーパスに当てはめ感情推定を実施します。
今回は、STEP3について書いていきます。 STEP3といっても今回は呟きデータではなく、適当なテストデータで試す所までです。 まぁ進めていきましょう。
形態素解析JUMAN++をビルドする
形態素解析を行うのであれば、NAISTのmecabが有名ですが、 京都大学のJUMAN++というのが精度が良いとのことでこちらを選びました。
Windows向けのバイナリファイルが有ればよいのですがアップロードされていないので自前でビルドする必要があります。 その手順を記載していきます。
githubからソースコードを持ってくる
git clone https://github.com/ku-nlp/jumanpp.git
cmakeをインストールする
chocolateが入っているならそちらからインストールすれば良いです。
choco install make
上のコマンドで上手く行かない場合は、インストーラからダウンロードします。 CMake
Visual Studio 2019をインストールする
https://visualstudio.microsoft.com/ja/downloads/
Cmakeとビルドの実行について
CMakeでVisula Studio向けのビルドファイル一式を作成します。
cmake -G "Visual Studio 16 2019" ..
MSBuild jumanpp.sln
MSBuildが上手く動かない場合は、jumanpp.slnをダブルクリックで開きVisual StudioからSolutionのビルドを進めます。
ビルド結果を確認する
ビルドが成功すると、jumanapp_v2.exeというファイル名で実行体ができているはずです。
.\jumanpp-master\build-jumanapp\src\jumandic\Release
動作確認を行う
ビルドしたjumanpp_v2.exeが置いてあるフォルダにパスを通します。 ファイル名もjumanapp_v2.exeからjumanpp.exeに変更するとよいです。
chcp 65001
echo 魅力がたっぷりと詰まっている|jumanpp.exe --model=C:\UserCMD\jumandic.jppmdl
このような結果が得られたらOKです。
GolangからJUMANを呼び出す方法
バインディングされたものが用意されているので大人しくPythonを使えば良いのですが、 面白みに欠けるのでGolangから使えるように試してみましょう。
pyknp: Python Module for JUMAN++/KNP pyknpというバインディングされているファイルの中身を見てみると jumanappをPythonから呼び出しているだけなので、golangからも同様に呼び出せば良さそうです。
main.go全文
package main
import (
"fmt"
"os/exec"
)
func main() {
cmdstr := "echo 魅力がたっぷり詰まっている |jumanpp.exe --model=jumandic.jppmdl"
stdout, err := exec.Command("sh", "-c", cmdstr).Output()
if err != nil {
fmt.Println(err)
}
fmt.Printf("ls result: \n%s", string(stdout))
}
やっていることはexec.Commandを使ってGolangから外部実行ファイルを動かしています。
golangを使用しWindows10を使う場合どうもパイプ使った実行が上手く行かず… sh -c で実行すれば動くので苦肉の策ではありますが、Bash on Windows(Windows Subsystem for Linux)を使用しました。
実行結果はexeファイルで得られたものと同じはずです。
まとめ
なんとも歯切れが悪いですが、とりあえず動くことが確認できたので続けていきましょう。 目的を果たせれば良いのでまずはこの環境で進めます。