-4

NLTKを使用して、特定の文が文法的であるかどうかを確認しようとしています。

元:

OK:クジラは悲しみをなめる

OKではない:私が今まで持っていた中で最高

POSタグ付けを行ってから、CFGパーサーを使用してその方法を確認できることは知っていますが、実際の単語の代わりにPOSタグを端末ブランチとして使用するCFGはまだ見つかりません。

誰もがお勧めできるCFGはありますか?私は言語学者ではなく、おそらく重要な構造を省いてしまうので、自分で作るのはばかげていると思います。

また、私のアプリケーションは、システムが理想的には多くの文を拒否し、非常に確実な文のみを承認するようなものです。

ありがとう

4

1 に答える 1

3

CFGのターミナルノードは、POSタグを含めて何でもかまいません。句動詞の規則が単語ではなくPOSを入力として認識する限り、POSで文法を宣言するのに問題はありません。

import nltk
# Define the cfg grammar.
grammar = nltk.parse_cfg("""
S -> NP VP
NP -> 'DT' 'NN'
VP -> 'VB'
VP -> 'VB' 'NN'
""")


# Make your POS sentence into a list of tokens.
sentence = "DT NN VB NN".split(" ")

# Load the grammar into the ChartParser.
cp = nltk.ChartParser(grammar)

# Generate and print the nbest_parse from the grammar given the sentence tokens.
for tree in cp.nbest_parse(sentence):
    print tree
于 2013-02-23T02:01:29.003 に答える