LoginSignup
6
3

More than 5 years have passed since last update.

日本語拡張モダリティ解析器 Zunda のPython client公開しました

Last updated at Posted at 2019-02-23

いつまで経っても日本語拡張モダリティ解析器ZundaのPythonモジュールが出ないので zunda-python を自分で書いてみました。

Zundaとは

Zundaは東北大学 乾・岡崎研究室で開発され、現在は、オープンソースで開発を継続している日本語拡張モダリティ解析器です。文中のイベント(動詞や形容詞など)に対して、その真偽判断(イベントが起こったかどうか)、仮想性(仮定の話かどうか)などを解析します。

zundaより

Installation

ZundaのビルドにはC++ コンパイラーの他にboostライブラリの導入が必要です。それらを入れた後に以下のコマンドでインストールします。

wget https://github.com/jmizuno/zunda/archive/2.0b4.tar.gz
tar xzf zunda-2.0b4.tar.gz
rm zunda-2.0b4.tar.gz
cd zunda-2.0b4
./configure
make
sudo make install
cd ../
rm -rf zunda-2.0b4

そしてPython clientはpipで入れます。

pip install zunda-python

解析例


>>> import zunda
>>> parser = zunda.Parser()
>>> parser.parse('花子は太郎を食事に誘った裕子が嫌いだった')

[{'assumptional': '0',
  'authenticity': '成立',
  'chunks': [{'func': 'に',
    'head': '食事',
    'link_from': [],
    'link_to': 3,
    'score': 1.883877,
    'words': [{'feature': '名詞,サ変接続,*,*,*,*,食事,ショクジ,ショクジ',
      'funcexp': 'O',
      'surface': '食事'},
     {'feature': '助詞,格助詞,一般,*,*,*,に,ニ,ニ',
      'funcexp': 'B:判断',
      'surface': 'に'}]}],
  'sentiment': '0',
  'source': '筆者',
  'tense': '非未来',
  'type': '叙述',
  'word': '食事',
  'words': '食事に'},
 {'assumptional': '0',
  'authenticity': '成立',
  'chunks': [{'func': 'を',
    'head': '太郎',
    'link_from': [],
    'link_to': 3,
    'score': 1.640671,
    'words': [{'feature': '名詞,固有名詞,地域,一般,*,*,太郎,タロウ,タロー',
      'funcexp': 'O',
      'surface': '太郎'},
     {'feature': '助詞,格助詞,一般,*,*,*,を,ヲ,ヲ', 'funcexp': 'O', 'surface': 'を'}]},
   {'func': 'に',
    'head': '食事',
    'link_from': [],
    'link_to': 3,
    'score': 1.883877,
    'words': [{'feature': '名詞,サ変接続,*,*,*,*,食事,ショクジ,ショクジ',
      'funcexp': 'O',
      'surface': '食事'},
     {'feature': '助詞,格助詞,一般,*,*,*,に,ニ,ニ', 'funcexp': 'B:判断', 'surface': 'に'}]},
   {'func': 'た',
    'head': '誘っ',
    'link_from': [1, 2],
    'link_to': 4,
    'score': 1.565227,
    'words': [{'feature': '動詞,自立,*,*,五段・ワ行促音便,連用タ接続,誘う,サソッ,サソッ',
      'funcexp': 'O',
      'surface': '誘っ'},
     {'feature': '助動詞,*,*,*,特殊・タ,基本形,た,タ,タ',
      'funcexp': 'B:完了',
      'surface': 'た'}]}],
  'sentiment': '0',
  'source': '筆者',
  'tense': '非未来',
  'type': '叙述',
  'word': '誘っ',
  'words': '太郎を食事に誘った'},
 {'assumptional': '0',
  'authenticity': '成立',
  'chunks': [{'func': 'は',
    'head': '花子',
    'link_from': [],
    'link_to': 5,
    'score': -1.81792,
    'words': [{'feature': '名詞,固有名詞,人名,名,*,*,花子,ハナコ,ハナコ',
      'funcexp': 'O',
      'surface': '花子'},
     {'feature': '助詞,係助詞,*,*,*,*,は,ハ,ワ', 'funcexp': 'O', 'surface': 'は'}]},
   {'func': 'が',
    'head': '裕子',
    'link_from': [3],
    'link_to': 5,
    'score': -1.81792,
    'words': [{'feature': '名詞,固有名詞,人名,名,*,*,裕子,ユウコ,ユーコ',
      'funcexp': 'O',
      'surface': '裕子'},
     {'feature': '助詞,格助詞,一般,*,*,*,が,ガ,ガ', 'funcexp': 'O', 'surface': 'が'}]},
   {'func': 'た',
    'head': '嫌い',
    'link_from': [0, 4],
    'link_to': -1,
    'score': 0.0,
    'words': [{'feature': '名詞,形容動詞語幹,*,*,*,*,嫌い,キライ,キライ',
      'funcexp': 'O',
      'surface': '嫌い'},
     {'feature': '助動詞,*,*,*,特殊・ダ,連用タ接続,だ,ダッ,ダッ',
      'funcexp': 'B:判断',
      'surface': 'だっ'},
     {'feature': '助動詞,*,*,*,特殊・タ,基本形,た,タ,タ',
      'funcexp': 'B:完了',
      'surface': 'た'}]}],
  'sentiment': '0',
  'source': '筆者',
  'tense': '非未来',
  'type': '叙述',
  'word': '嫌い',
  'words': '花子は裕子が嫌いだった'}]

dict形式で表現したイベントごとのリストを出力します。wordsはイベントのチャンクの単語列とそのイベントに直接係っている文節の単語列とを表現しています (ただしchunks内のwordsは形態素解析の結果と機能表現解析の結果を示しています)

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3