ノート/テキストマイニング/NLTK+StanfordParser 訪問者数 29      最終更新 2017-07-27 (木) 10:21:05

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

参照:

インストール:

実行:

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
Last-modified: 2017-07-27 (木) 10:21:05 (58d)