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ラッパーもありそれらからの利用と可能となる。

コメント

  1. […] 1.音声認識ツールCMU Sphinx(広く利用されている音声認識プログラム)Juicer(重み付き有限状態トランスデューサを利用した音声認識デコーダ)Julius(音声認識システムの開発・研究のためのオープンソースの高性能な汎用大語彙連続音声認識エンジン)2.言語モデルIRSTLM(言語モデルの学習・格納ツール)kenlm(メモリ効率とスピードを重視した言語モデル保持ツール)Kylm(重み付き有限状態トランスデューサーの出力や未知語の文字ベースモデル化などの機能が揃っている言語モデルツールキット。Javaで実装)RandLM(乱択データ構造であるBloom Filterを用いることで、膨大な言語モデルを少ないメモリで保持するツールキット)SRILM(効率的なn-gram言語モデルツールキット。様々な平滑化手法(Kneser-Neyなど)、クラス言語モデル、複数のモデルの補間等の機能が揃っている)3.言語処理ライブラリNLTK(Pythonで書かれた言語処理ライブラリ)OpenNLP(Javaで書かれた一般的な言語処理ライブラリ)Stanford CoreNLP(Stanford大学で作られたNLPツールを含めたライブラリ)4.読み推定KyTea(単語分割と読み推定の機能が揃っているテキスト解析ツールキット)mpaligner(発音推定システムを学習する時に必要となる文字・発音対応をアライメントするツール)Phonetisaurus(WFSTに基づく表記⇔発音変換ツールキット)5.句構造解析Berkeley Parser(PCFGの構文解析器。英語、アラビア語、中国語、フランス語、ドイツ語、ブルガリア語などのモデル付き)Charniak Parser(英語用のCFGパーザ)Egret(圧縮森やn-bestリストを出力できる確率的正則文法(PCFG)の構文解析器)EVALB(句構造解析結果の評価スクリプト)Stanford Parser(CFG解析と係り受け解析を同時に行う構文解析器。英語・中国語・アラビア語・フランス語・ドイツ語のモデルあり)6.形態素解析Chasen(HMMを用いた形態素解析器)JUMAN(日本語の形態素解析器。品詞等以外にも様々な意味情報を付与する)参考記事KyTea(分野適応可能で未知語にロバストな形態素解析器)MeCab(条件付き確率場(CRF)を用いた形態素解析エンジン)Sen(Javaで書かれた形態素解析システム)Sudachi(ワークスアプリケーションズによるエンジン、最近公開されたので辞書が新しく、高速化が特徴)7.有限状態モデルKyfd(重み付き有限状態トランスデューサ(WFST)で構築されたテキスト処理システムのためのデコーダ)OpenFST(重み付き有限状態トランスデューサ(WFST)の様々なアルゴリズムを実装したライブラリ。有限状態モデルを利用したシステムの構築に便利)8.機械翻訳アライメントBerkeley Aligner(教師ありと教師なしアライメントを両方実装した単語アライメントプログラム)GIZA++(IBMモデルを実装した標準的な単語アライメントツール)pialign(Inversion transduction grammar (ITG)に基づいたフレーズアライメントツール。精度を保ちながらコンパクトなモデルが学習できるのが特長)9.機械翻訳デコーダcdec(最近の木ベース・森ベース機械翻訳の研究成果を実装したデコーダ)Joshua(統語ベース翻訳のためのデコーダ)Moses(標準的な機械翻訳デコーダ。フレーズベースと木ベースの機械翻訳に対応)Travatar(統語情報を用いる翻訳のためのtree-to-stringデコーダ)10.機械翻訳評価METEOR(類義語、語幹正規化、並べ替え情報などを考慮したMETEOR評価尺度を計算するツール)multeval(複数の評価基準に基づく統計的有意性を考慮した機械翻訳の評価ツール)RIBES(機械翻訳結果の並べ換えの精度を評価するプログラム)11.機械学習AROW++(Adaptive Regularization of Weight Vectorsというノイズにロバストなオンライン学習器の実装)Classias(オンライン学習、バッチ学習に基づいた様々な分類器を実装したライブラリ。)CRF++(系列解析で用いられる条件付き確率場(CRF)のツールキット。素性テンプレートを簡単に指定できるので、さまざまな素性で実験をするのに便利)CRFsuite(高速な学習を実現している条件付き確率場(CRF)の実装)LIBLINEAR(線形SVMやロジスティック回帰などの分類器を実装したライブラリ。学習は非常に速い)LIBSVM(様々なオプションをサポートするSVM学習ツール)Mallet(自然言語処理のための機械学習ツールキット。隠れマルコフモデル(HMM)、最大エントロピーマルコフモデル(MEMM)、条件付確率場(CRF)などの機能がある。JAVAで実装)SVM-Light(効率的なSVMライブラリー)Weka(様々な学習アルゴリズムを実装した機械学習ライブラリ)12.係り受け解析CaboCha(Cascaded Chunkingに基づく日本語の係り受け解析器)KNP(日本語の係り受け解析と格解析器)参考記事MaltParser(Shift-Reduceに基づく係り受け解析器)MSTParser(最小極大木に基づく係り受け解析器) […]

  2. […] JumanとKNP 日本語形態素解析とかかり受け解析ツール […]

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