パスワードを忘れた? アカウント作成
14291478 journal
人工知能

yasuokaの日記: 旧字旧仮名の係り受け解析ツールとしてのGiNZA v4.0.2

日記 by yasuoka

昨日の『人文科学とコンピュータ研究会』で、旧字旧仮名の係り受け解析ツールを披露したのだが、GiNZAについてはデモをおこなわなかったので、今日の日記に書いておこうと思う。まずは最新版をインストール。

$ pip3 install -U ginza unidic2ud

インストールがうまくいったら、昨日の例文「國境の長いトンネルを拔けると雪國であつた。」を、近代文語UniDic+GiNZAで、単語間係り受け解析してみよう。

$ python3
>>> import unidic2ud.spacy
>>> nlp=unidic2ud.spacy.load("kindai","ja_ginza")
>>> doc=nlp("國境の長いトンネルを拔けると雪國であつた。")
>>> import deplacy
>>> deplacy.render(doc,Japanese=True)
國境     NOUN  ═╗<══╗       nmod(体言による連体修飾語)
の       ADP   <╝   ║       case(格表示)
長い     ADJ   <══╗ ║       acl(連体修飾節)
トンネル NOUN  ═╗═╝═╝<╗     obj(目的語)
を       ADP   <╝     ║     case(格表示)
拔け     VERB  ═╗═╗═══╝<╗   ccomp(節目的語)
る       AUX   <╝ ║     ║   aux(動詞補助成分)
と       ADP   <══╝     ║   case(格表示)
雪國     NOUN  ═╗═╗═╗═══╝═╗ ROOT(親)
で       AUX   <╝ ║ ║     ║ aux(動詞補助成分)
あつ     AUX   <══╝ ║     ║ aux(動詞補助成分)
た       AUX   <════╝     ║ aux(動詞補助成分)
。       PUNCT <══════════╝ punct(句読点)

「拔け」⇐ccomp=「雪國」に関しては、ccompではなくadvcl(連用修飾節)の方が適切だと思うのだが、それ以外はほぼ読めているようだ。続いて、文節間の係り受け解析も見てみよう。

>>> import ginza
>>> bdeps=[(ginza.bunsetu_span(t),b) for b in ginza.bunsetu_spans(doc) for t in b.lefts]
>>> print(bdeps)
[(國境の, トンネルを), (長い, トンネルを), (トンネルを, 拔けると), (拔けると, 雪國であつた。)]

完璧だ、素晴らしい。旧字旧仮名がGiNZAで読めるようになると、戦前の文書など一気に応用範囲が拡がると思う。なお、旧字旧仮名のspaCy-SynChaは7月31日の日記に書いたので、そちらも較べてみてほしい。

この議論は、yasuoka (21275)によって ログインユーザだけとして作成されたが、今となっては 新たにコメントを付けることはできません。
typodupeerror

犯人はmoriwaka -- Anonymous Coward

読み込み中...