Earley 算法由 Earley 于 1970 年提出。该算法类似于自顶向下的语句解析。它可以处理左
递归问题,并且不需要 CNF(乔姆斯基范式)转化。Earley 算法以从左到右的方式填充线图。
考虑一个展示了用 Earley 线图解析器来进行语法解析的示例:
>>> import nltk
>>> nltk.parse.earleychart.demo(print_times=False, trace=1,sent='I saw
a dog', numparses=2)
考虑一个使用 NLTK 中的线图解析器来进行语法解析的示例:
>>> import nltk
>>> nltk.parse.chart.demo(2, print_times=False, trace=1,sent='John saw
a dog', numparses=1)
考虑一个使用了 NLTK 中的 Stepping 线图解析器来进行语法解析的示例:
>>> import nltk
>>> nltk.parse.chart.demo(5, print_times=False, trace=1,sent='John saw
a dog', numparses=2)
让我们来看看 NLTK 中有关 Feature 线图解析的代码:
>>> import nltk
>>> nltk.parse.featurechart.demo(print_times=False,print_
grammar=True,parser=nltk.parse.featurechart.FeatureChartParser,sent='I
saw a dog')