係り受けに基づく日本語単語埋め込みを用いた係り受け解析

こんにちは,LAPRAS株式会社の松野です.本記事では,係り受けに基づく日本語単語埋め込みを使って,自然言語処理の主要なタスクである係り受け解析の実験を行った結果を紹介します.

*一部記事内容に誤りがありました.実験でつかったデータセット UD_Japanese-GSD のライセンスについて 「CC BY-SA(商用利用可)」と書いていましたが,「現状では CC BY-NC-SA(商用利用不可)であり,近く商用利用可になる予定」の間違いでした.当該部分について修正しました(2019/11/11).
*GiNZAの開発者である @hmtd223 様よりデータ前処理に用いた解析器の評価の実験についてコメントをいただいたため,その内容を追記しました.(2020/08/31).

はじめに

以前,係り受けに基づく日本語単語埋め込みの記事と,その実験に用いた単語埋め込みを公開しました.

こんにちは,LAPRAS株式会社の松野です.この春に奈良先端科学技術大学院大学(NAIST)を修了し,入社しました.大学院では自然言語処理学研究室で構文解析を研究していました.はじめに以前,弊社アルゴリズムエ“ぬ”ジニアの鈴木が埋め込み手法についての記事を書き...

上の記事では,(Levy et al., 2014)の「Dependency-Based Word Embeddings」という論文を基に,単語間の依存関係に基づいた日本語の単語埋め込みを作りました.これは単語埋め込みを訓練するために用いるコンテキストとして,ある語と文法的な依存関係を持つ語を用いる手法です.この手法で得られた単語表現について質的な分析を行った結果,文法的なカテゴリなどの機能的な類似性がよく捉えられていることを確認しました.

単語埋め込みは機械学習を用いた自然言語処理のあらゆるところで使われています.もっとも単純には解きたいタスクごとに単語埋め込みをランダムに初期化し,学習を通じて訓練していく方法がよく用いられます.最近は,タスクごとに用意されたデータ以外のところで教師なし学習などを用いた訓練を行い,そこで得られた単語埋め込みを学習の初期値として用いることがよくあります(Lample et al., 2016; Ma and Hovy, 2016; Kim 2014).

本記事では,先の記事で得られた係り受けに基づく単語埋め込みを,自然言語処理の主要なタスクである係り受け解析の学習の初期値として用いる実験を行います.係り受けに基づく単語埋め込みは以下のような性質を持っているため,係り受け解析に対して好ましい影響を与えると考えられます.

  • 単語ペア間での係り受けの起きやすさを考慮した学習をしている: Levy らの手法ではある単語の表現をその単語が係り受け関係を持つ語とその文法的関係を予測させることで学習します.そのため,ある2つの語が与えられたときにその語の間の主従関係と文法的関係を予測するタスクである依存構造解析では,事前に与えられる情報として有用であることが期待できます.
  • 単語の文法的なカテゴリの情報を捉えている: 係り受けコンテキストで訓練された埋め込みは品詞や活用の情報をよく表しています.前回の記事で,係り受けコンテキストで訓練された埋め込み空間では,語幹が異なっていても品詞と活用が同じ語同士が近くに埋め込まれることを示しました.日本語の係り受け解析では伝統的に単語の素性として品詞や活用形,活用型などが与えられてきましたが,それを考えるとこういった品詞や活用の情報をよく捉えている単語埋め込みは係り受け解析のための素性として好ましい性質を持っていることが期待されます.

実験設定

今回の実験では係り受けに基づく単語埋め込みを初期値として用いて係り受け解析の実験を行い,ランダム初期化されたものと通常のSkip-Gram (Mikolov et al., 2013) で訓練されたものとの比較を行いました.

係り受け解析器

今回実験に用いたのは spaCy に含まれている構文解析モジュールです. spaCy は統一されたスキームでの多言語解析を目指すプロジェクトである Universal Dependencies に基づいて設計されたNLPフレームワークで,形態素解析,構文解析,固有表現抽出などの自然言語処理に関わる解析を行います.

spaCy is a free open-source library for Natural Language Processing in Python. It features NER, POS tagging, dependency parsing, word vectors and more.

データセットと前処理

係り受け解析器の訓練: UD_Japanese-GSD

係り受け解析器訓練のためのデータセットとして UD_Japanese-GSD を用いました.このデータセットは Universal Dependencies という多言語で一貫した構文構造や品詞体系を設計する活動の一部として作成されたもので, 以下の Universal Dependencies の Web サイトからダウンロードすることができます.

他の日本語依存構造解析の研究開発のためのデータセットには,より大規模な京大コーパスBCCWJがあります.しかし,それらを使用するためには元のテキストとメタデータを別々に入手して復元する必要があり,復元のためには契約を交わした上で使用料を払わなければなりません.それに対して UD_Japanese-GSD はテキストデータを含めて CC-BY-NC-SA ライセンスで配布されているため商用利用でない限り気軽に使うことができます.また,CC-BY-SA ライセンスで配布できるようにするための取り組みも進んでいるとのことなので,近い将来,より広い用途で使えるようになります.

単語埋め込みの訓練: 日本語Wikipedia

単語埋め込みの訓練には日本語 Wikipedia を用いました.単語埋め込み訓練のための前処理では単語分割に SudachiPy 依存構造情報の付与に GiNZA を用いました. GiNZA のバージョンは ja_ginza-nopn1.0.2 です

Python version of Sudachi, a Japanese morphological analyzer. - WorksApplications/SudachiPy

A Japanese NLP Library using spaCy as framework based on Universal Dependencies - megagonlabs/ginza

検証したい手法とベースライン

今回の実験では spaCy の単語埋め込みの初期値として以下の3種類の単語ベクトルを用意しました.

  • ランダム初期化: ベースラインの1つです. spaCy の blank なモデルを作り,単語埋め込みをランダムに初期化しました.
  • 線形コンテキスト: ベースラインの1つで,単語埋め込みの訓練に前後のウィンドウサイズ - 1 語の情報を使う手法です. SudachiPy で日本語 Wikipedia の単語分割を行い, gensim の Word2vec を用いて以下の設定で学習しました.
    Word2Vec(texts, size=200, window=5, min_count=100, workers=4, negative=15, sg=1)
  • 係り受けコンテキスト: 今回検証したい手法で,前回の記事を書くときに作成した係り受けに基づく単語埋め込みです.
    日本語 Wikipedia 全文に対して単語分割および依存構造情報の付与を行い, Levy らのスクリプトを使って訓練しました.実験に用いた単語埋め込みはこの GitHub レポジトリ にて公開しています.
    This is a repository for the AI LAB article "係り受けに基づく日本語単語埋込 (Dependency-based Japanese Word Embeddings)" ( Article URL https://ai-lab.lapras.com/nlp/japanese-word-embedding/) - lapras-in...

係り受け解析の評価方法

係り受け解析の性能は POS, UAS, LAS の3つの指標を用いて評価しました.POS,UAS,LASの予測には正解のトークンを用いています.

評価には spacy の evaluate コマンドを用いました.その仕様上,POS, UAS, LASは正解率で評価されています.

ここでは,それぞれの評価尺度について説明します.

  • POS: POS(Part of Speech) は品詞推定のスコアです.ここで使われている品詞体系は Universal Dependencies 2.0 で定められている日本語の XPOS tags (日本語に特有な粒度の高い品詞タグ)です.
  • UAS: UAS(Unlabeled Attachment Score) は全単語のうち正しい親を当てられた語の割合を表します.
  • LAS: LAS(Labeled Attachment Score) は全単語のうち正しい親をその親との意味関係 (たとえばadj(形容詞)) と共に当てられた語の割合を表します.

実験結果

spaCyは日本語において単語分割に外部のライブラリを使用しており単語分割の結果は単語埋め込みの影響を受けないため,今回は評価から外しました.

単語埋め込みごとの係り受け解析性能評価

ランダム初期化 線形コンテキスト 係り受けコンテキスト
POS 95.86 97.08 97.40
UAS 93.85 94.00 93.64
LAS 91.61 92.35 91.88

結果は上のようになりました.

品詞に関しては,期待通り,係り受けコンテキストに基づくものが最も良いスコアを示しました.これは,係り受けコンテキストで訓練された埋め込みが単語それぞれの文法的な機能をうまく捉えられていることを示唆しています.

UASについてはランダム初期化,LASについては線形コンテキストよりも低いスコアになっています.これには, GiNZAのモデル(ja_ginza_nopn-1.0.2) が訓練されたデータセットと今回の評価に使ったデータセットの違いが関わっていると考えられます. ja_ginza_nopn-1.0.2 は UD_Japanese-BCCWJ で訓練されており,今回の評価に使ったデータセットは UD_Japanese-GSD です.これらは両方とも文節係り受けからUD準拠の単語係り受けに変換することで作成されているのですが,異なるデータセットと変換ルールを用いているために一方で訓練したモデルをもう一方で評価したとき性能が低く評価されると考えられます.

各データセットの詳しい説明は以下の資料を参照してください.

データ前処理に用いた解析器の評価

今回の実験で訓練したモデルとGiNZAを UD_Japanese-GSD で評価しました.コンソールから呼び出せ, CoNLL-U 形式で出力できるなど評価実験がやりやすかったため, ja_ginza_nopn-1.0.2 の代わりに ginza-2.0.0 を使いました. Release Page を確認したところ訓練に使われているデータセットには大きな違いがなさそうだったので,このバージョンの違いは比較には大きな影響はないと考えられます. この実験では,係り受けに基づく単語埋め込みを訓練したデータセットを作るときに行った Wikipedia の解析と同じ設定にするため,単語分割も評価に含めました. 品詞推定については,品詞細分類はタグがGiNZAの出力とUDのタグで異なっているため,代わりにUPOS(Universal Part of Speech tags.多言語で共通の品詞体系で粒度が低い.)を示しています. Token の評価にはF1値を,その他には適合率を用いています.

SudachiPyの分割モードはA(短単位)に設定しました.
解析結果を CoNLL-U 形式で出力し, CoNLL 2018 Shared Task の評価スクリプトを用いて評価しました.

線形コンテキスト GiNZA
Token 91.48 91.48
UPOS 77.48 83.80
UAS 77.42 71.35
LAS 75.63 60.47

UPOS, UAS, LASの全てで先ほどの結果より大きく低いスコアになっていますが,これは単語分割に成功したトークンのみを正解として評価に用いているためです.

この実験から ja_ginza1.0.2 は UD_Japanese-GSD の解析で UAS と LAS が低く評価されることがわかりました.このことから, ja_ginza1.0.2 を用いて係り受けコンテキストに基づく埋め込みを訓練するためのデータセットを作成したため,そのことが UD_Japanese-GSD での訓練に悪影響を与えている可能性が考えられます.

今回は試していませんが, UD_Japannese-GSD で訓練されたモデルを用いて係り受けコンテキストに基づく埋め込みを訓練するためのデータセットを作成することにより,性能を向上させることができるかもしれません.

追記(2020/08/31): GiNZA 開発者の @hmtd223 様より以下のコメントをいただきました.GiNZA で UD_Japanese-GSD を解析したときにスコアが低くなるのは GiNZA の訓練に用いられている BCCWJ と品詞体系等が大きく異なることが原因であり,そこの条件を揃えた場合,LASで 87% 程度と今回の実験結果を大きく上回るスコアになるようです.

さいごに

この記事では係り受けに基づく単語埋め込みを用いて係り受け解析器を訓練し,その他の単語埋め込みを使ったモデルと比較しました.その結果,品詞タグ付けについては比較手法を上回り,単語の文法的機能をよく表現していることが品詞タグ付けにも有効であることが示されました.
また,係り受け解析についてはUASとLASの両方で比較手法よりも低いスコアとなりましたが,実験によって埋め込みを訓練するためのデータセット作成に用いられた解析器の性質が悪影響を与えている可能性が示唆されました.

参考文献

松田寛, 大村舞, 浅原正幸. 短単位品詞の用法曖昧性解決と依存関係ラベリングの同時学習, 言語処理学会 第 25 回年次大会 発表論文集, 2019.
Mikolov, T., Chen, K., Corrado, G. & Dean, J. (2013). Efficient estimation of word representations in vector space. arXiv preprint arXiv:1301.3781, .
Levy, O. & Goldberg, Y. (2014). Dependency-Based Word Embeddings. Proceedings of the 52nd Annual Meeting of the Association for Computational Linguistics (Volume 2: Short Papers) (p./pp. 302--308), June, Baltimore, Maryland: Association for Computational Linguistics.
Guillaume Lample, Miguel Ballesteros, Sandeep Subramanian, Kazuya Kawakami, and Chris Dyer. 2016. Neural architectures for named entity recognition. In HLT-NAACL.
Xuezhe Ma and Eduard Hovy. 2016. End-to-end sequence labeling via bi-directional lstm-cnns-crf. In Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). Association for Computational Linguistics, Berlin, Germany, pages 1064–1074. http: //www.aclweb.org/anthology/P16-1101.
Y. Kim. Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing, EMNLP 2014, October 25-29, 2014, Doha, Qatar, A meeting of SIGDAT, a Special Interest Group of the ACL, page 1746--1751. (2014)