Earley Parser Earley Parser

Earley Parser Earley Parser

NLP Introduction to NLP Earley Parser Earley parser • Problems with left recursion in top-down parsing – VP à VP PP • Background – Developed by Jay Earley in 1970 – No need to convert the grammar to CNF – Left to right • Complexity – Faster than O(n3) in many cases Earley Parser • Looks for both full and partial constituents • When reading word k, it has already identified all hypotheses that are consistent with words 1 to k- 1 • Example: – S [i,j] à Aux . NP VP – NP [j,k] à N – S [i,k] à Aux NP . VP Earley Parser • It uses a dynamic programming table, just like CKY • Example entry in column 1 – [0:1] VP -> VP . PP – Created when processing word 1 – Corresponds to words 0 to 1 (these words correspond to the VP part of the RHS of the rule) – The dot separates the completed (known) part from the incomplete (and possibly unattainable) part Earley Parser • Three types of entries – ‘scan’ – for words – ‘predict’ – for non-terminals – ‘complete’ – otherwise Earley Parser Algorithm Figure from Jurafsky and Martin Earley Parser Algorithm Figure from Jurafsky and Martin S -> NP VP Det -> 'the' S -> Aux NP VP Det -> 'a' S -> VP Det -> 'this' NP -> PRON PRON -> 'he' NP -> Det Nom PRON -> 'she' Nom -> N N -> 'book' Nom -> Nom N N -> 'boys' Nom -> Nom PP N -> 'girl' PP -> PRP NP PRP -> 'with' VP -> V PRP -> 'in' VP -> V NP V -> 'takes' VP -> VP PP V -> 'take' |. take . this . book .| |[-----------] . .| [0:1] 'take' |. [-----------] .| [1:2] 'this' |. [-----------]| [2:3] 'book’ Example created using NLTK |. take . this . book .| |[-----------] . .| [0:1] 'take' |. [-----------] .| [1:2] 'this' |. [-----------]| [2:3] 'book' |> . .| [0:0] S -> * NP VP |> . .| [0:0] S -> * Aux NP VP |> . .| [0:0] S -> * VP |> . .| [0:0] VP -> * V |> . .| [0:0] VP -> * V NP |> . .| [0:0] VP -> * VP PP |> . .| [0:0] V -> * 'take' |> . .| [0:0] NP -> * PRON |> . .| [0:0] NP -> * Det Nom |. take . this . book .| |[-----------] . .| [0:1] 'take' |. [-----------] .| [1:2] 'this' |. [-----------]| [2:3] 'book' |> . .| [0:0] S -> * NP VP |> . .| [0:0] S -> * Aux NP VP |> . .| [0:0] S -> * VP |> . .| [0:0] VP -> * V |> . .| [0:0] VP -> * V NP |> . .| [0:0] VP -> * VP PP |> . .| [0:0] V -> * 'take' |> . .| [0:0] NP -> * PRON |> . .| [0:0] NP -> * Det Nom |[-----------] . .| [0:1] V -> 'take' * |[-----------] . .| [0:1] VP -> V * |[-----------> . .| [0:1] VP -> V * NP |. > . .| [1:1] NP -> * PRON |. > . .| [1:1] NP -> * Det Nom |. > . .| [1:1] Det -> * 'this’ |[-----------] . .| [0:1] S -> VP * |[-----------> . .| [0:1] VP -> VP * PP |. > . .| [1:1] PP -> * PRP NP |. [-----------] .| [1:2] Det -> 'this' * |. [-----------> .| [1:2] NP -> Det * Nom |. > .| [2:2] Nom -> * N |. > .| [2:2] Nom -> * Nom N |. > .| [2:2] Nom -> * Nom PP |. > .| [2:2] N -> * 'book' |. [-----------]| [2:3] N -> 'book' * |. [-----------]| [2:3] Nom -> N * |. [-----------------------]| [1:3] NP -> Det Nom * |. [----------->| [2:3] Nom -> Nom * N |. [----------->| [2:3] Nom -> Nom * PP |. >| [3:3] PP -> * PRP NP |[===================================]| [0:3] VP -> V NP * |[===================================]| [0:3] S -> VP * |[----------------------------------->| [0:3] VP -> VP * PP (S (VP (V take) (NP (Det this) (Nom (N book))))) NLTK Demo • nltk demo: import nltk nltk.parse.chart.demo(2, print_times=False, trace=1, sent='I saw a dog', numparses=1) Notes • CKY fills the table with phantom constituents – problem, especially for long sentences • Earley only keeps entries that are consistent with the input up to a given word • So far, we only have a recognizer – For parsing, we need to add backpointers • Just like with CKY, there is no disambiguation of the entire sentence • Time complexity – n iterations of size O(n2), therefore O(n3) – For unambiguous grammars, each iteration is of size O(n), therefore O(n2) NLP.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    17 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us