4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

StanfordNLPを触ってみる

Posted at

StanfordNLPが公開されました。形態素解析だけでなく、係り受け解析や照応解析までできるやつです。
なんと日本語モデルもあります。これはうれしいです。

It contains packages for running our latest fully neural pipeline from the CoNLL 2018 Shared Task and for accessing the Java Stanford CoreNLP server
https://stanfordnlp.github.io/stanfordnlp/

というわけで早速触ってみます。

インストール

PyTorchを入れます。
https://pytorch.org/get-started/locally/

stanfordnlpを入れます。

pip install stanfordnlp

初回は言語ごとのモデル(2GBくらいあります)をダウンロードすることが必要なので以下を実行しておきます。ダウンロードが終わるまで気長に待ちましょう。
言語はjaだけでも大丈夫のようです。

>>> import stanfordnlp
>>> stanfordnlp.download('ja')
>>> nlp = stanfordnlp.Pipeline(lang='ja')
>>> doc = nlp('望遠鏡で泳いでいる少女を見た')
>>> doc.sentences[0].print_dependencies()

使ってみる

一度モデルファイルをダウンロードしておけば、あとは以下を実行するだけでロードできるようです。
ロードには少し時間がかかります。

nlp = stanfordnlp.Pipeline(lang='ja')

有名なKNPの例文を実行してみます。

>>> doc = nlp('クロールで泳いでいる少女を見た')
>>> doc.sentences[0].print_dependencies()
('クロール', '3', 'obl')
('で', '1', 'case')
('泳い', '6', 'acl')
('で', '3', 'mark')
('いる', '3', 'aux')
('少女', '8', 'obj')
('を', '6', 'case')
('見', '0', 'root')
('た', '8', 'aux')
>>> doc = nlp('望遠鏡で泳いでいる少女を見た')
>>> doc.sentences[0].print_dependencies()
('望遠鏡', '3', 'obl')
('で', '1', 'case')
('泳い', '6', 'acl')
('で', '3', 'mark')
('いる', '3', 'aux')
('少女', '8', 'obj')
('を', '6', 'case')
('見', '0', 'root')
('た', '8', 'aux')
>>> doc = nlp('機内の楽しみって「おやつ」と「機内食」しかなく〜今まで満足したことなかったけど、フィリピンエアライン〜良 かったよ!')
>>> doc.sentences[0].print_dependencies()
('機内', '3', 'nmod')
('の', '1', 'case')
('楽しみ', '4', 'obl')
('っ', '15', 'advcl')
('て', '4', 'mark')
('「', '7', 'punct')
('おやつ', '12', 'nmod')
('」', '7', 'punct')
('と', '7', 'case')
('「', '12', 'punct')
('機内', '12', 'compound')
('食', '15', 'obl')
('」', '12', 'punct')
('しか', '12', 'case')
('なく', '23', 'advcl')
('〜', '17', 'compound')
('今', '19', 'obl')
('まで', '17', 'case')
('満足', '22', 'acl')
('し', '19', 'aux')
('た', '19', 'aux')
('こと', '23', 'obl')
('なかっ', '29', 'advcl')
('た', '23', 'aux')
('けど', '23', 'mark')
('、', '23', 'punct')
('フィリピンエアライン', '28', 'compound')
('〜', '29', 'obl')
('良かっ', '0', 'root')
('た', '29', 'aux')
('よ!', '29', 'punct')
>>>

StanfordNLPは、やっぱり望遠鏡問題を解決できていませんが、pip(と長いダウンロード時間)だけでセットアップできる手軽さはいいですね。
これで係り受け解析なども手軽に組み込めるようになりそうです。

ちなみに、以下はKNPの係り受け解析結果です。KNPもpipだけでセットアップできるようになるといいですね。
http://nlp.ist.i.kyoto-u.ac.jp/?KNP

% juman < test.txt | knp
クロールで──┐         
        泳いでいる──┐     
                    少女を──┐ 
                              見た
EOS
      望遠──┐     
              鏡で──┐ 
泳いでいる──┐   │ 
            少女を──┤ 
                      見た
EOS

         機内の──┐             
             楽しみって──┐         
  「おやつ」と<P>─┐   │         
「機内食」しか<P>─PARA──┤         
                         なく〜──┐     
                         今まで──┤     
             満足したことなかったけど、──┐ 
                     フィリピン──┐   │ 
                           エアライン〜──┤ 
                                   良かったよ!
EOS

おしまい。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?