JumanとKNP

機械学習技術 Clojure デジタルトランスフォーメーション技術 人工知能技術 確率的生成モデル サポートベクトルマシン スパースモデリング トピックモデル Python 深層学習技術 自然言語処理サマリー 本ブログのナビ

JumanとKNP

JumanとKNPは京都大学で開発された形態素解析と構文・格・照応解析を行うシステムとなる。

Juman(Juman++)は、Recurrent Neural Network Language Model(RNNLM) を用いた形態素解析システムで、文を入力すると単語の並びの意味的な自然さを考慮した解析を行って単語に分割し、それぞの単語ごとに文法・辞書等を出力する。例えば以前紹介した「波乗りの島」の一節「盛り上がった海が、僕らの方に押し寄せてくるのが見えた。」を入力とした時のJuman++の出力は以下となる。

盛り上がった もりあがった 盛り上がる 動詞 2 * 0 子音動詞ラ行 10 タ形 10 "代表表記:盛り上がる/もりあがる 自他動詞:他:盛り上げる/もりあげる"
海 かい 海 名詞 6 普通名詞 1 * 0 * 0 "代表表記:海/かい 漢字読み:音 地名末尾 カテゴリ:自然物 漢字"
@ 海 うみ 海 名詞 6 普通名詞 1 * 0 * 0 "代表表記:海/うみ 漢字読み:訓 地名末尾 カテゴリ:場所-自然 漢字"
が が が 助詞 9 格助詞 1 * 0 * 0 NIL
、 、 、 特殊 1 読点 2 * 0 * 0 "代表表記:、/、 記号 記英数カ"
僕 ぼく 僕 名詞 6 普通名詞 1 * 0 * 0 "代表表記:僕/ぼく 漢字読み:音 カテゴリ:人 漢字"
ら ら ら 接尾辞 14 名詞性名詞接尾辞 2 * 0 * 0 "代表表記:ら/ら"
の の の 助詞 9 接続助詞 3 * 0 * 0 NIL
方 ほう 方 名詞 6 副詞的名詞 9 * 0 * 0 "代表表記:方/ほう 漢字"
に に に 助詞 9 格助詞 1 * 0 * 0 NIL
押し寄せて おしよせて 押し寄せる 動詞 2 * 0 母音動詞 1 タ系連用テ形 14 "代表表記:押し寄せる/おしよせる"
くる くる くる 接尾辞 14 動詞性接尾辞 7 カ変動詞 14 基本形 2 "代表表記:くる/くる"
の の の 名詞 6 形式名詞 8 * 0 * 0 "代表表記:の/の"
が が が 助詞 9 格助詞 1 * 0 * 0 NIL
見えた みえた 見える 動詞 2 * 0 母音動詞 1 タ形 10 "代表表記:見える/みえる 自他動詞:他:見る/みる"
。 。 。 特殊 1 句点 1 * 0 * 0 "代表表記:。/。 記号 記英数カ"
EOS

KNPはこのJumanの解析結果を入力として、文節および基本句間の係り受け関係,格関係,照応関係を出力するもので、係り受け関係,格関係および照応関係は,Webから自動構築した大規模格フレームに基づく確率的モデルにより決定されている。例として先程のjumanの結果を入力としたものを以下に示す。

盛り上がった海が、僕らの方に押し寄せてくるのが見えた。
# S-ID:1 KNP:4.2-75a8fa27 DATE:2021/04/28 SCORE:-57.02445
盛り上がった──┐                          <用言:動><格解析結果:ガ/海;ニ/-;ト/-;デ/-;マデ/-;時間/->
              海が、──┐                  <体言>
      僕らの──┐      │                  <体言><Wikipediaエントリ:ぼくらの>
                方に──┤                  <体言>
              押し寄せてくる──┐          <用言:動><格解析結果:ガ/海;ニ/方;カラ/->
                                のが──┐  
                                    見えた。<用言:動><格解析結果:ガ/の;ニ/->
EOS

Juman,KNP共に最もシンプルな利用の方法は、windowsの場合は、それぞれのページより実行ファイルをダウンロードして、インストールしてターミナルで実行するものとなる。macの場合はhomebrewが対応しているのでbrew install (juman or knp)で完了する。

ターミナルでの実行は「echo “文” | juman | knp」で動作させることができる。先程の例だと以下のようになる。

% echo "盛り上がった海が、僕らの方に押し寄せてくるのが見えた。" | juman | knp

KNPは出力の形態に様々なオプションがある。それらはコマンドの最後にオプション(-tab,-simple,-tree等)を付与することで実行できる。

またClojurepythonラッパーもありそれらからの利用と可能となる。

タイトルとURLをコピーしました