自然言語処理ライブラリGiNZAの紹介

Nov 9, 2019 | Publisher: tflare | Category: Other |   | Views: 131 | Likes: 1

自然言語処理ライブラリ GiNZAの紹介 阿部 泰之 自己紹介 ・阿部 泰之 / Hiroyuki Abe ・twitter / @taki_tflare ・https://tflare.com ・機械学習を利用した新規事 業開拓プロジェクトに所属して います。 書いたもの 一から始める機械学習(機械学習概要) https://qiita.com/taki_tflare/items/ 42a40119d3d8e622edd2 機械学習で検 索すると Wikipediaの 次に出てきま す。 目次 • GiNZAの基本設計 • GiNZAの特徴 • 質疑応答 GiNZAとは 日本語自然言語処理オー プンソースライブラリで す。 GiNZAの基本設計 • フレームワークにspaCyを採用 • ToknizerにはSudachiPyを使用 • 依存構造解析学習データセットにはUD-Japanese BCCWJ を使用 • 固有表現抽出の学習には京都大学ウェブコーパスを使用 https://www.slideshare.net/MegagonLabs/ginza-cabocha- udpipe-stanford-nlp p14より抜粋 GiNZAの特徴 • MITライセンスでモデルを含めて商用利用可能 • pip一行ですべて導入完了 • spacyの豊富な機能セットを利用できる https://www.slideshare.net/MegagonLabs/ ginza-cabocha-udpipe-stanford-nlp p21より抜粋 GiNZAの基本設計 • フレームワークにspaCyを採用 • ToknizerにはSudachiPyを使用 • 依存構造解析学習データセットにはUD-Japanese BCCWJ を使用 • 固有表現抽出の学習には京都大学ウェブコーパスを使用 https://www.slideshare.net/MegagonLabs/ginza-cabocha- udpipe-stanford-nlp p14より抜粋 spaCy spaCyは、Pythonで作られた自然言語処理 (NLP)用のオープンソースライブラリです。 spaCyは、特に本番利用向けに設計されてお り、大量のテキスト処理を支援します。 spaCyの特徴 ・非破壊的な字句解析 ・固有表現抽出 ・25以上の言語の字句解析サポート ・8言語の統計モデル ・事前学習済みの単語ベクトル ・品詞タグ付け ・ラベル付き依存構文解析 ・統語ドリブンの文分割 ・テキスト分類 ・構文木および固有表現用のビルトインビジュアライザ ・ディープラーニング https://ja.wikipedia.org/wiki/SpaCy SpaCy - Wikipedia より抜粋 Google Colab https://colab.research.google.com/drive/ 1PoChY4uvo5n1FCV9hKGe_hnALUHqu4Bg 字句解析 これだけで字句解 析が終わって、品 詞などの情報がわ かる 固有表現抽出 displaCy機能を使うと以下のようにも表示可能 nlp()にわたすだけで様々な処理が終わっている。 固有表現抽出も終わっている。 単語ベクトル displaCy機能 from spacy import displacy svg = displacy.render(doc, style="dep", jupyter=False) 他にもいろいろな機能がある spaCy 101: Everything you need to know https://spacy.io/usage/spacy-101/ spaCyの利点 spaCy をベースとした自然言語処理ライブラリにつ いて、spaCy の API で日本語を処理できるように なった為、比較的小さな手直しで日本語対応させる ことが可能になった。 例えば、キーフレーズ抽出処理ライブラリである pke は、ストップワード部分の修正をすれば対応でき る。 https://www.ogis-ri.co.jp/otc/hiroba/technical/similar-document-search/part5.html はじめての自然言語処理第5回 pke によるキーフレーズ抽出 を参考に記載 GiNZAの基本設計 • フレームワークにspaCyを採用 • ToknizerにはSudachiPyを使用 • 依存構造解析学習データセットにはUD-Japanese BCCWJ を使用 • 固有表現抽出の学習には京都大学ウェブコーパスを使用 https://www.slideshare.net/MegagonLabs/ginza-cabocha- udpipe-stanford-nlp p14より抜粋 Sudachi 形態素解析器Sudachi   Sudachiの特徴 1. 豊富な語彙 UniDicをベースにNeologdから大量に固有名詞を追加することにより得た豊富な語 彙(280万語を超える登録規模) 2. 正規化表記 ・例を上げると、「空き缶,空缶,空き罐,空罐,空きカン,空きかん」などに正 規化表記として、空き缶を設定する。 ・表記ゆれについてUniDicベースに、新聞でもかき分けがされているものは、別の 語句としているなどの改善をしている。 3. 長期にわたる継続的なメンテナンス 開発方針の一つとして長期的なメンテナンスを上げており、新語の取り込み・機械 的・人的なチェックにより辞書内容の拡張をしていくとしている https://pj.ninjal.ac.jp/corpus_center/lrw/lrw2018/P-1-08.pdf 形態素解析器『Sudachi』のための大規模辞書開発 を参考に記載 Sudachiの特徴 以下開発に関わってられる方の記事に「今後10年は継続して更新していく予定」とある Elasticsearchのための新しい形態素解析器 「Sudachi」 https://qiita.com/sorami/items/99604ef105f13d2d472b 4. 複数の分割単位での出力を追加 一般に形態素解析器はひとつの単位でしか出力できませんが、 SudachiではA,B,Cの3単位での出力が可能です。これはSudachiのシステム辞書に分割情報 を付与することで実現しています。 例えば「医療品安全管理責任者」という入力のときには以下3種類の出力が可能です。 A: 医療 / 品 / 安全 / 管理 / 責任 / 者 B: 医療品 / 安全 / 管理 / 責任者 C: 医療品安全管理責任者 https://qiita.com/sorami/items/99604ef105f13d2d472b Elasticsearchのための新しい形態素解析器 「Sudachi」 より抜粋 Sudachiの辞書 商用利用される形態素解析器としては,OSS として公開されている MeCab2, kuromoji3が大半を占めており,これらで利用可能な辞書として は,IPAdic,NAIST Japanese Dictionary,UniDic,NEologd などがある。 上記辞書には問題がある。 Sudachi辞書は、汎用的な辞書として使用できる大規模かつ高品質の辞書デー タの構築を目指している。 https://pj.ninjal.ac.jp/corpus_center/lrw/lrw2018/P-1-08.pdf 形態素解析器『Sudachi』のための大規模辞書開発を元に記載 辞書の問題点 https://pj.ninjal.ac.jp/corpus_center/lrw/lrw2018/P-1-08.pdf 辞書 問題点 IPAdic 長年メンテナンスされていないため辞書内容が最 新でない。 NAIST Japanese Dictionary UniDic 言語の形態論的側面に着目して規定された短単位 で見出し登録されている。 そのため,たとえば語義を取り扱いたい場合や語 彙調査をする場合には そのままでは不足が生じる。 NEologd 複数の短単位から成る固有表現が一塊で登録され ているため,そのまま検索システムで利用すると 再現率が低くなる 形態素解析器『Sudachi』のための大規模辞書開発を元に記載 他の辞書と比べると https://speakerdeck.com/sorami/sudachi-elasticsearch?slide=36 IPAdic UniDic NEologd Sudachi 複数の分割表現 × × × ○ 固有表現 △ △ ○ ○ 表記の正規化 ○ ○ × ○ 継続的なメンテナン ス × △ ○ ○ 人手による精査 ○ ○ × ○ Sudachi ❤ Elasticsearch GiNZAの基本設計 • フレームワークにspaCyを採用 • ToknizerにはSudachiPyを使用 • 依存構造解析学習データセットにはUD-Japanese BCCWJ を使用 • 固有表現抽出の学習には京都大学ウェブコーパスを使用 https://www.slideshare.net/MegagonLabs/ginza-cabocha- udpipe-stanford-nlp p14より抜粋 UD-Japanese BCCWJ • UD Japanese-BCCWJ は現代日本語書き言葉均衡コーパス (BCCWJ) に付随する係り受け情報などを組み合わせて、UD へと変換、構築した BCCWJ の Universal Dependencie で ある。これは日本語の UD の中でも1980 文章、57,256 文、 約 126 万単語を含む最大規模また複数のレジスターを内包 したデータセットである。 https://pj.ninjal.ac.jp/corpus_center/lrw/lrw2018/P-2-01-E.pdf より抜粋 UD Japanese-BCCWJ の構築と分析 Universal Dependencies Universal Dependencies (UD)は、構文解析の後 段の処理の共通化や、他の言語のコーパスを用 いた言語横断的な学習、言語間の定量的な比較 などを可能にするための土台を目指して、多言 語で一貫した構文構造とタグセットを定義する という活動である。 https://www.anlp.jp/proceedings/annual_meeting/2015/pdf_dir/E3-4.pdf 日本語 Universal Dependencies の試案 Chris ManningがあげるUDの6つ の理念 1. 個々の言語の言語学的分析ができるものでなくてはならない 2. 言語ごとの比較をするのに適しているべき 3. 人間が早く一貫性を保ってアノテーションできる構造であるべき 4. コンピュータにとって高精度で解析できるものであるべき 5. 言語の学習者やエンジニアを含めて誰にとっても直感的な構造であるべき 6. 関係抽出・機械翻訳など、後段の処理で使えるものであるべき https://pj.ninjal.ac.jp/corpus_center/pdf/2018-06-16-masayu-a-2.pdf Universal Dependencyの概要 均衡コーパス 言語を分析するための基礎資料として,書き言葉や話し言葉の資料を体系的 に収集し,研究用の情報を付与したものをコーパスと呼びます。 https://www.ninjal.ac.jp/database/type/corpora/ ある言語の使用実態をなるべく忠実に反映するようにバランス 良く設計・抽出されたコーパスは均衡コーパスと呼ばれます。 「自然言語処理の基本と技術」 コーパスと辞書  UD-Japanese BCCWJ • 約126万単語、57256文と世界で3番目ぐらいの規 模 新聞、雑誌、書籍、ヤフー知恵袋(Q&A)、 ヤフーブログ、白書といったジャンルにまたがっ て 提供している https://pj.ninjal.ac.jp/corpus_center/pdf/2018-06-16-mai-om.pdf p31より抜粋 UD Japanese-BCCWJ:『現代日本語書き言葉均衡コーパス』のUniversal Dependencies GiNZAの特徴 • MITライセンスでモデルを含めて商用利用可能 • pip一行ですべて導入完了 • spacyの豊富な機能セットを利用できる https://www.slideshare.net/MegagonLabs/ ginza-cabocha-udpipe-stanford-nlp p21より抜粋 Google Colob https://colab.research.google.com/drive/ 1PoChY4uvo5n1FCV9hKGe_hnALUHqu4Bg#scrollTo=o8Lu5Cis6tpv Google Colobでのインストール !pip install "https://github.com/megagonlabs/ginza/releases/download/ latest/ginza-latest.tar.gz" import pkg_resources, imp imp.reload(pkg_resources) macでのインストール方法 $ python3 -V Python 3.7.3 $ sudo pip3 install “https://github.com/megagonlabs/ginza/releases/download/latest/ginza-latest.tar.gz" $ sudo ginza # text = 銀座八丁目はお洒落だ 1 銀座 銀座 PROPN 名詞-固有名詞-地名-一般 _ 3 compound _ BunsetuBILabel=B|BunsetuPositionType=CONT| SpaceAfter=No|NP_B|NE=LOC_B 2 八 8 NUM 名詞-数詞 NumType=Card 3 nummod _ BunsetuBILabel=I|BunsetuPositionType=CONT| SpaceAfter=No|NE=LOC_I 3 丁目 丁目 NOUN 名詞-普通名詞-助数詞可能 _ 5 nsubj _ BunsetuBILabel=I|BunsetuPositionType=SEM_HEAD| SpaceAfter=No|NP_B|NE=LOC_I 4 は は ADP 助詞-係助詞 _ 3 case _ BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No 5 お洒落 御洒落 ADJ 名詞-普通名詞-サ変形状詞可能 _ 0 root _ BunsetuBILabel=B|BunsetuPositionType=ROOT| SpaceAfter=No 6 だ だ AUX 助動詞 _ 5 cop _ BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No GiNZAの今後 spacy公式言語モデルの提供  ・GiNZAの機能のサブセットをspaCyのmasterブ ランチに統合予定 参考文献 • GiNZAで始める日本語依存構造解析 ~CaboCha, UDPipe, Stanford NLPとの比較~ https://www.slideshare.net/MegagonLabs/ginza- cabocha-udpipe-stanford-nlp Universal Dependencies 公開研究会 https://pj.ninjal.ac.jp/corpus_center/20180616.html

×

Modal Header

Modal body