Как сгенерировать несколько деревьев синтаксического анализа для двусмысленного предложения в NLTK?

У меня есть следующий код в Python.

sent = [("very","ADJ"),("colourful","ADJ"),("ice","NN"),("cream","NN"),("van","NN")] patterns= r""" NP:{<ADJ>*<NN>+} """ NPChunker=nltk.RegexpParser(patterns) # create chunk parser for s in NPChunker.nbest_parse(sent): print s.draw() 

Выход:

 (S (NP very/ADJ colourful/ADJ ice/NN cream/NN van/NN)) 

Но на выходе должно быть еще 2 дерева синтаксического анализа.

 (S (NP very/ADJ colourful/ADJ ice/NN) (NP cream/NN) (NP van/NN)) (S (NP very/ADJ colourful/ADJ ice/NN cream/NN) van/NN) 

Проблема в том, что только первое регулярное выражение берется RegexpParser. Как я могу генерировать все возможные деревья разбора сразу?

One Solution collect form web for “Как сгенерировать несколько деревьев синтаксического анализа для двусмысленного предложения в NLTK?”

Это невозможно в классе RegexpParser. Он наследует метод nbest_parse из интерфейса ParserI, и, глядя на исходный код ( https://github.com/nltk/nltk/blob/master/nltk/parse/api.py ), можно видеть, что он просто по умолчанию запуская метод разбора базового класса и возвращая его как итерируемый.

Поскольку кто-то пытался объяснить в Chunking с помощью nltk , классы chunking не являются инструментом для использования для этой цели (пока!), Посмотрите на http://nltk.org/book/ch08.html , есть несколько быстрых примеров , который займет у вас только половину того, чего вы хотите достичь, что требует много предварительной обработки и умного дизайна.

  • Миграция с Python на Racket (библиотеки регулярных выражений и «Racket Way»)
  • Проверить допустимое доменное имя в строке?
  • даты соответствия с использованием регулярных выражений python
  • re.finditer () возвращает одно и то же значение для методов начала и конца
  • Regex для ссылок в html-тексте
  • Pandas Чтение CSV с разделителями строк с помощью регулярных выражений
  • Regex для разделения на последовательности символов новой строки
  • Ruby Regex vs Python Regex
  • Python - лучший язык программирования в мире.