私は NLTK の本を読み進めていますが、適切な文法を構築するための自然な第一歩と思われる何かを行うことができないようです。
私の目標は、特定のテキスト コーパスの文法を構築することです。
(最初の質問: ゼロから文法を始めようとするべきですか、それとも定義済みの文法から始めるべきですか? 別の文法から始めるべきである場合、英語を始めるのに適した文法はどれですか?)
次の単純な文法があるとします。
simple_grammar = nltk.parse_cfg("""
S -> NP VP
PP -> P NP
NP -> Det N | Det N PP
VP -> V NP | VP PP
Det -> 'a' | 'A'
N -> 'car' | 'door'
V -> 'has'
P -> 'in' | 'for'
""");
この文法は、次のような非常に単純な文を解析できます。
parser = nltk.ChartParser(simple_grammar)
trees = parser.nbest_parse("A car has a door")
次に、この文法を拡張して、他の名詞や動詞を含む文を処理したいと考えています。文法で手動で定義せずに、これらの名詞と動詞を文法に追加するにはどうすればよいですか?
たとえば、「車には車輪があります」という文を解析できるようにしたいとします。提供されているトークナイザーは、どの単語が動詞/名詞などであるかを魔法のように判断できることを知っています。トークナイザーの出力を使用して、「wheels」が名詞であることを文法に伝えるにはどうすればよいですか?