spaCy からたどる最近の日本語自然言語処理ライブラリの調査
August 10, 2020
最近、spaCy が公式で日本語に対応し、話題になっている。
私自身は、NLP が専門ではないのだが、業務で自然言語を扱う機会があり、このあたりの技術を把握しておく必要があるため、ほぼゼロの知識からサーベイを行った。
spaCy
- spaCy 公式サイト
- spaCy は多言語の字句解析・固有表現抽出・品詞タグ付け・ラベル付き依存構造解析機能を提供する汎用自然言語処理フレームワーク
- 日本語に関しては 3 つのモデルが利用可能 ( doc )
- 標準日本語モデルへの依存構造解析・固有表現抽出モデル
- spaCy の日本語モデルの搭載は、Megagon Labs, Tokyo (株式会社リクルートの AI 研究所) と国立国語研究所が尽力したようである ( 論文 )
- 商用利用が可能
- “ja_core_news_lg”, “ja_core_news_md”, “ja_core_news_sm”
- 3 つのモデルはサイズが異なっている
- lg —> large
- md —> medium
- sm —> small
- core —> モデルの能力として次のタスクを行えることを示す: general-purpose model with vocabulary, syntax, entities and word vectors
- news —> ニュース記事のデータで学習されたことを示す
- 参考: モデルの命名規則
- 3 つのモデルはサイズが異なっている
- モデルの説明
- “Japanese multi-task CNN trained on UD_Japanese-GSD v2.6-NE. Assigns word2vec token vectors, POS tags, dependency parses and named entities.”
- 日本語のマルチタスク CNN
- 学習データセットは UD_Japanese-GSD v2.6-NE
- 以下の内容が含まれる
- word2vec
- chiVe を利用 (後述)
- POS tags (POS: Part-of-Speech, 品詞タグ)
- SudachiPy による形態素解析
- 係り受け解析 (依存関係ラベリング)
- 固有表現抽出 (Named Entity Recognition; NER)
- 固有表現抽出の学習に は 京都大学ウェブ文書リードコーパス を使用 (条件付きながら商用利用も可能な中規模のデータセット) ( 引用 )
- word2vec
- streamlit にて簡単可視化するためのパッケージ ( spacy-streamlit ) が提供されている
- 解析できること
- 係り受け解析 (依存関係ラベリング、Dependency Parsing) と 品詞タグ (Part-of-speech tags)
- 固有表現抽出 (Named Entity Recognition; NER)
- 形態素解析 (Morphological Analysis)
- テキスト分類 (Text Classification)
- 試してみると、ここは empty になった(判定不可能ということか?)
- ベクトル類似度 (Vectors & Similarity)
- sm モデルでは利用できなかったが、lg モデルだと利用できた
- 学習されたモデルをベースに、2 つの単語の類似度を調べることができる
- 形態素解析 (Token attributes)
- 参考記事: 日本語正式サポートされた自然言語処理ライブラリ spaCy の Streamlit 可視化が超お手軽だった - OPTiM TECH BLOG
- 解析できること
Universal Dependencies (UD)
Universal Dependencies (UD) は、多言語間で共通のアノテーション方式を用いて係り受けのツリーバンク を開発する国際プロジェクトである。
UD_Japanese-GSD v2.6-NE は、Megagon Labs, Tokyo (株式会社リクルートの AI 研究所) と国立国語研究所が整備して作成したデータセットである。
chiVe (チャイブ, Sudachi Vector)
- Source code: WorksApplications/chiVe
- 概要: “chiVe” (チャイブ, Sudachi Vector) は、大規模コーパスと複数粒度分割に基づく日本語単語ベクトルのデータセット
- 手法
- Skip-gram アルゴリズムを元に、word2vec (gensim) を使用して単語分散表現を構築
- 学習には約 1 億のウェブページ文章を含む国立国語研究所の日本語ウェブコーパス(NWJC)を採用
- 分かち書きにはワークスアプリケーションズの形態素解析器 Sudachi を使用
- その他
- WorksApplications が作成
- v1.1 mc90 a-unit-only が、自然言語処理ツール spaCy の日本語モデルに使用されている
- 豊富な語彙数が収録されており、最大で約 360 万語の語彙数を持ったモデルがある。GiNZA がデフォルトで使用しているモデルが約 12 万語のモデルなので、比較すると語彙数の多さがわかる。
Sudachi / SudachiPy
- 概要
- Sudachi は日本語形態素解析器です。形態素解析はおもに以下の 3 つの処理を おこないます。( 引用 )
- テキスト分割
- 品詞付与
- 正規化処理
- Sudachi は日本語形態素解析器です。形態素解析はおもに以下の 3 つの処理を おこないます。( 引用 )
- SudachiPy is a Python version of Sudachi, a Japanese morphological analyzer
- Source code: WorksApplications/SudachiPy
- その他
- Works Applications 徳島人工知能 NLP 研究所 が開発
- 正規化処理も行ってくれるのが便利(Mecab の場合、事前に正規化処理が必要 ( 引用 ))
GiNZA
- GiNZA - Japanese NLP Library
- 株式会社リクルートと国立国語研究所が共同で開発した自然言語処理のライブラリ
- spaCy を日本語に対応させたもの
- 特長 ( 引用 )
- MIT ライセンスでモデルを含めて商用利用可能
- BCCWJ 由来の依存構造解析モデルをフリーで利用可能
- 他の日本語 UD 解析系が使用する GSD コーパスの 5 倍以上の規模で学習
- pip 一行ですべて導入完了
- SudachiPy および 150 万語彙を備える Sudachi 辞書も一括インストール
- MeCab・CaboCha 等と比較して Docker 等での環境構築が圧倒的に楽
- spaCy の豊富な機能セットを利用できる
- 日本語以外の言語モデルへの切り替えが容易 (spaCy 公式サポートは 8 言語)
- 依存構造解析結果の視覚化
- GiNZA v3 の固有表現抽出モデルは GSK2014-A (2019) BCCWJ 版 (橋本・乾・村上(2008)) から新聞系文書を除外して学習 (引用)