2019年05月20日

日本語自然言語処理ライブラリGiNZAの使い方

このエントリーをはてなブックマークに追加
follow us in feedly


githubの例では、形態素解析しかしてない様に見えるので、有効性が分からないのですが
GiNZA開発の背景と意義は、
日本語の自然言語処理では、各種処理(形態素解析、係り受け解析)はそれぞれ個別のライブラリとして存在していたので、研究者は実際の自然言語処理の場面では各々を統合する必要がありました。
また、日本語を前提とした言語処理に依存したシステムでは、国際化対応が難しくなります。
多言語対応システムでは、辞書データを変更するだけで対応が可能なので、日本語でもそのような統一的な処理をしたかったのでした


日本語の単語依存構造解析のための長単位解析
田中貴秋 林克彦 永田昌明  NTTコミュニケーション科学基礎研究所
人工知能学会全国大会(第30回)2016
日本語の構文解析は,文節依存構造 (係り受け) 解析として行われることが多いが,
Universal Dependencies (以下UD) [Towards a Universal Grammar for Natural Language Processing, 日本語 Universal Dependencies の試案] のような言語横断的な言語アノテーションを考えると,
適用可能な言語が限定される文節単位の構造よりも,単語単位の依存構造の方が扱いやすい
上記のような理由で、単語依存構造解析では、文節単位ではなく単語単位での関係性を記述します。




pip install "https://github.com/megagonlabs/ginza/releases/download/v1.0.2/ja_ginza_nopn-1.0.2.tgz"
基本的にはこれだけでインストール出来ます。
python -m spacy.lang.ja_ginza.cli

Loading model 'ja_ginza_nopn'
mode is C
disabling sentence separator

これは、コンソールから入力して解析結果を得る方法です。
# text = これは、コンソールから入力して解析結果を得る方法です。
1 これ 此れ PRON 代名詞 _ 13 iobj _ SpaceAfter=No|NP_B
2 は は ADP 助詞-係助詞 _ 1 case _ SpaceAfter=No
3 、 、 PUNCT 補助記号-読点 _ 1 punct _ SpaceAfter=No
4 コンソール コンソール NOUN 名詞-普通名詞-一般 _ 6 nmod _ SpaceAfter=No|NP_B
5 から から ADP 助詞-格助詞 _ 4 case _ SpaceAfter=No
6 入力 入力 VERB 名詞-普通名詞-サ変可能 _ 12 advcl _ SpaceAfter=No
7 し 為る AUX 動詞-非自立可能 _ 6 aux _ SpaceAfter=No
8 て て SCONJ 助詞-接続助詞 _ 6 mark _ SpaceAfter=No
9 解析 解析 NOUN 名詞-普通名詞-サ変可能 _ 10 compound _ SpaceAfter=No|NP_B
10 結果 結果 NOUN 名詞-普通名詞-副詞可能 _ 12 obj _ SpaceAfter=No|NP_I
11 を を ADP 助詞-格助詞 _ 10 case _ SpaceAfter=No
12 得る 得る VERB 動詞-非自立可能 _ 13 acl _ SpaceAfter=No
13 方法 方法 NOUN 名詞-普通名詞-一般 _ 0 root _ SpaceAfter=No|NP_B
14 です です AUX 助動詞 _ 13 cop _ SpaceAfter=No
15 。 。 PUNCT 補助記号-句点 _ 13 punct _ SpaceAfter=No
Ginzaで得られる情報とその形式はこのようになっています。



コーディング例ですが、
nlp = spacy.load('ja_ginza_nopn')
この時
OSError: [E050] Can't find model 'ja_ginza_nopn'. It doesn't seem to be a shortcut link, a Python package or a valid path to a data directory.

こうなってしまいます。

このモデルがどこにあるのかと言うと、
tar -xzvf ja_ginza_nopn-1.0.2.tgz
ja_ginza_nopn-1.0.2.tgzの中の、
ja_ginza_nopn-1.0.2/ja_ginza_nopn ではありません。
ja_ginza_nopn-1.0.2/ja_ginza_nopn/ja_ginza_nopn-1.0.2 の方だと思います。

ディレクトリ構造を操作してないなら、このように指定すると思います。 ディレクトリ名を指定します。
nlp = spacy.load('ja_ginza_nopn-1.0.2/ja_ginza_nopn/ja_ginza_nopn-1.0.2')


単語依存構造解析に利用する設定ファイル一式は
このディレクトリ以下にあります。




tak_tak0 at 00:19コメント(1)研究  | サーバ この記事をクリップ!

コメント一覧

1. Posted by 安岡孝一   2019年05月20日 18:37
私の手元では spacy.load("ja_ginza_nopn") で、別にエラーもなく、うまくいったのですけど…。インストールにpip3使ったからかな? よければ https://srad.jp/~yasuoka/journal/630066/ もご覧ください。

コメントする

名前:
URL:
  情報を記憶: 評価:  顔   星
 
 
 
サイト内検索
にほんブログ村 科学ブログへ
にほんブログ村
adsense
Archives
amazon
blogchart
QRコード
QRコード
Recent Comments