LoginSignup
11
10

More than 5 years have passed since last update.

意味役割付与システム ASA のPython client

Last updated at Posted at 2017-09-26

はじめに

ちゃお・・・†

今回は岡山大学竹内研究室のASAのPythonクライアントを作ったので紹介します。

意味役割付与システムとは

下記のように入力文に対して述語項構造解析を行い,その後,述語の語義を同定して,係り関係にある項の意味役割を付与するものです.

(入力文)
昨日彼は私に手紙を送った.
(出力)
[昨日] 場所(時)(点) => 時間(点)に変更予定 (2015.10)
[彼は] 動作主
[私に] 着点(人)
[手紙を] 対象
[送った] 状態変化あり-位置変化-位置変化(物理)(人物間)-他者への所有物の移動-提供

のように述語に対して,概念(「提供」)を付与し,述語にかかる係り元(項と呼ぶ)に意味的な関係を付与するものです.例えば「彼は」は「送った」に対して「動作主」という意味役割であることを示しています.
http://www.cl.cs.okayama-u.ac.jp/study/project/asa/

インストール

  1. ASA Scalaをダウンロードします http://www.cl.cs.okayama-u.ac.jp/study/project/asa/asa-scala/download/
  2. pip install asa でPythonクライアントをインストールします

使い方

from asa import ASA

# Initialize a ASA instance
asa = ASA(path-to-asa)

# Let's analyze a sample sentence
asa.parse('彼は村長だ')
# =>
[{'ID': 0,
  'category': '人',
  'frame': '1-copula',
  'link': 1,
  'main': '彼',
  'part': 'は',
  'tense': 'PRESENT',
  'type': 'elem',
  'wakati': ['彼\tカレ\t\t名詞,代名詞,一般\t\t\tO', 'は\t\t\t助詞,係助詞\t\t\tO']},
 {'ID': 1,
  'category': '人',
  'frame': '0-elem',
  'link': -1,
  'main': '村長',
  'mood': 'INDICATIVE',
  'part': 'だ',
  'polarity': 'AFFIRMATIVE',
  'sentelem': 'PREDICATE',
  'tense': 'PRESENT',
  'type': 'copula',
  'voice': 'ACTIVE',
  'wakati': ['村長\tソンチョウ\t村長\t名詞,一般\t\t\tO', 'だ\t\t\t助動詞\t特殊・ダ\t基本形\tO']}]

問題点: 実行が遅い -> だいぶ解消されました

echoコマンドからパイプでASAに渡すだけというシンプルな構成になっているので、毎回YAMLファイルをロードするため実行毎に1秒近くかかります。JPypeとか使えばいい感じにならないかな?

追記: Version 0.2からは、最初だけYAMLをロードしてファイルを介しながらプロンプトでやり取りするようにしたため、0.1系と比較して約36倍ほど速くなりました。 たとえば上の例だと48.5 msかかっていたのが2.75 msにまで短縮できました。

我こそは!という方はcontributions are welcomeです!
https://github.com/ikegami-yukino/asa-python

11
10
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
11
10