JUMAN++を入れてサクッと形態素解析してみる
JUMAN++を使用する
形態素解析試すならMeCabでいいやと思っていましたが、前回の記事で色々調べた結果、JUMANの方が形態素解析の精度が良いことがわかりました。
今回はJUAMAN++を使ってみます。
JUMAN++とは
Juman++は言語モデルを利用した高性能な形態素解析システムです.言語モデルとして Recurrent Neural Network Language Model (RNNLM) を用いることにより,単語の並びの意味的な自然さを考慮した解析を行います.それにより JUMAN,MeCab に比べ大きく性能が向上しています.文法・辞書・出力フォーマット等は JUMAN から引き継いだものを利用しています.本システムは CREST「知識に基づく構造的言語処理の確立と知識インフラの構築」の支援により開発されました.
参考: https://nlp.ist.i.kyoto-u.ac.jp/?JUMAN%2B%2B
JUMAN++をインストールする
現在JUMAN++の最新版は2017/1/12にリリースされたver1.02です。
開発中のV2がGithubに上がっていますが、今回はver1.02を使用します。
MacOSを使っていればHomebewからインストールできます。
brew install jumanpp
MacOS以外の場合は以下の方法でダウンロードできます。
MacOS以外でJUMAN++のインストール
JUMAN++のサイトからJUMAN++Ver.x.xxをダウンロードします(2022/09/25時点ではjumanpp-1.02.tar.xzが最新版)
ダウンロードが完了したらtarで展開
tar xf jumanpp-1.02.tar.xz
展開するとjuman-1.02ディレクトリが作成されるのでjuman-1.02に移動
cd juman-1.02
configureを実行
./configure
Boostが入ってないと ./configure
実行で以下のようなエラーが発生する
checking for boostlib >= 1.57... configure: We could not detect the boost libraries (version 1.57 or higher). If you have a staged boost library (still not installed) please specify $BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation.
configure: error: "Error: cannot find available Boost library."
上記エラーが出た場合はBoostをインストール
sudo apt install libboost-dev
再度configureを実行
./configure
makeコマンドでMakefile実行
make
JUMAN++の使い方
ターミナルで簡単に使う
ターミナルでjumanppと入力するとJUMAN++が起動します。
(終了させるときはcontrol + C)
jumanpp
試しに「メロスは激怒した。」という文章を入力すると、以下のように解析結果が出力されます。
メロスは激怒した。
メロス メロス メロス 名詞 6 普通名詞 1 * 0 * 0 "自動獲得:Wikipedia Wikipedia多義"
は は は 助詞 9 副助詞 2 * 0 * 0 NIL
激怒 げきど 激怒 名詞 6 サ変名詞 2 * 0 * 0 "代表表記:激怒/げきど カテゴリ:抽象物"
した した する 動詞 2 * 0 サ変動詞 16 タ形 10 "代表表記:する/する 付属動詞候補(基本) 自他動詞:自:成る/なる"
。 。 。 特殊 1 句点 1 * 0 * 0 NIL
EOS
形態素ごとに各行に出力され、出力フォーマットは以下のようになっています。
表層形 読み 見出し語 品詞大分類 品詞大分類 ID **品詞細分類** 品詞細分類 ID 活用型 活用型 ID 活用形 活用形 ID 意味情報
テキストファイルごと解析する
テキストファイルごとに解析させる場合は以下
cat {テキストファイルのパス} | jumanpp
KNPを使用する
JUMAN++はKNPを併用することで形態素動詞の依存構造を解析できます。
KNPとは
KNPは日本語文の構文・格・照応解析を行うシステムです.形態素解析システムJUMANの解析結果(形態素列)を入力とし, 文節および基本句間の係り受け関係,格関係,照応関係を出力します. 係り受け関係,格関係および照応関係は,Webから自動構築した大規模格フレームに基づく確率的モデルにより決定します.
参考: https://nlp.ist.i.kyoto-u.ac.jp/index.php?KNP
例えば、「メロスは激怒した。」という文章を解析した場合、KNPでは以下のような結果を得られます。
メロスは──┐ <体言>
激怒した。<用言:動><格解析結果:ガ/メロス;ニ/->
EOS
「激怒した。」という形態素がメロスに係っていることがわかります。
KNPインストール
デフォルトのHomebrewリポジトリにKNPが含まれていないので、自然言語処理に関連するライブラリに特化したHomebrewリポジトリのuetchy/nlpをtapします。
brew tap uetchy/nlp
tapを終えたらKNPをインストール
brew install knp
JUMAN++とKNPの使い方
以下のコマンドでJUMAN++の解析結果をさらにKNPで解析できます。
cat < {テキストファイルのパス} | jumanpp | knp
所感
JUMAN++の解析結果は意味情報が付与されているので、形態素がどの辞書から引用されたかわかるのが良いですね。
また、KNPと併用することで係り受けなどの依存構造もわかるのが面白いです。
JUMAN++とMeCabを比べてみると、JUMAN++の方が解析時間を要するのが難点ですが、より精度の高い解析ができます。
KNPは2年に1度くらいのペースで更新されており、JUMAN++もV2の開発も進んでいるので今後のリリースが楽しみです。
参考記事
Discussion