[[ノート/テキストマイニング/NLTK+StanfordParser]]
訪問者数 &counter();      最終更新 &lastmod();~
~

2017-07-26~
最近のNLTK(現在3.2.4 ?)はStanford Parserへのラッパーを含んでいる。

参照:
-[[NLTK マニュアル nltk.parse package:http://www.nltk.org/api/nltk.parse.html]]
-[[Source code for nltk.parse.stanford:http://www.nltk.org/_modules/nltk/parse/stanford.html]]

インストール:
-Stanford Parserのパッケージはダウンロードする必要あり。[[参照:https://nlp.stanford.edu/software/lex-parser.shtml]]
--本体: https://nlp.stanford.edu/software/stanford-parser-full-2017-06-09.zip
--英語のモデル: https://nlp.stanford.edu/software/stanford-english-corenlp-2017-06-09-models.jar
-展開: 両者を展開。~
ディレクトリ stanford-parser-full-2017-06-09 (パーサーjarファイル stanford-parser.jar を含む)と edu (この下のかなり下の方に英語のモデルファイル
 edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz を含む)~
これらのディレクトリ名が必要

実行:
 from nltk.parse.stanford import *
 p = StanfordParser( \
     path_to_jar='stanford-parser/stanford-parser.jar', \
     path_to_models_jar = 'edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz' )
 
 out = p.raw_parse('This is a pen.')
 for u in out:
     print(u)
 
 # 出力は
 # (ROOT (S (NP (DT This)) (VP (VBZ is) (NP (DT a) (NN pen))) (. .)))
 #
 dep_parser = StanfordDependencyParser( \
     path_to_jar='stanford-parser/stanford-parser.jar', \
     path_to_models_jar = 'edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz' )
 
 out = [list(parse.triples()) for parse in dep_parser.raw_parse("The quick brown fox jumps over the lazy dog.")]
 for u in out:
     print(u)
 # 出力は
 [(('jumps', 'VBZ'), 'nsubj', ('fox', 'NN')), (('fox', 'NN'), 'det', ('The', 'DT')), (('fox', 'NN'),
 'amod', ('quick', 'JJ')), (('fox', 'NN'), 'amod', ('brown', 'JJ')), (('jumps', 'VBZ'), 'nmod',
 ('dog', 'NN')), (('dog', 'NN'), 'case', ('over', 'IN')), (('dog', 'NN'), 'det', ('the', 'DT')),
 (('dog', 'NN'), 'amod', ('lazy', 'JJ'))]

このほか、StanfordParserで複数の文をパースするなら
 out = p.raw_parse_sent( 文のリスト )
もできる。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS