[TOC]
對于一門語言來說,一句話有無限可能。問題是我們只能通過有限的程序來分析結(jié)構(gòu)和含義。嘗試將“語言”理解為:僅僅是所有合乎文法的句子的大集合。在這個(gè)思路的基礎(chǔ)上,類似于 word -> word and/or/... word
就成立,這種式子叫做遞歸產(chǎn)生式。理論上,句子可以無限擴(kuò)充。
文法
自定義文法
寫法上與上一篇博文的分類規(guī)則思路基本一致,并且更簡單、更直觀,可以和之前的對比著看。
import nltkfrom nltk import CFG grammar = nltk.CFG.fromstring(""" S -> NP VP VP -> V NP | V NP PP PP -> P NP V -> "saw" | "ate" | "walked" NP -> "John" | "Mary" | "Bob" | Det N | Det N PP Det -> "a" | "an" | "the" | "my" N -> "man" | "dog" | "cat" | "telescope" | "park" P -> "in" | "on" | "by" | "with" """) sent = 'Mary saw Bob'.split() rd_parser = nltk.RecursiveDescentParser(grammar)for i in rd_parser.parse(sent): print(i)
在定義文法的時(shí)候,
延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式