Английская грамматика для разбора в NLTK

Есть ли готовая грамматика английского языка, которую я могу просто загрузить и использовать в NLTK? Я искал примеры синтаксического анализа с помощью NLTK, но мне кажется, что я должен вручную указать грамматику перед разбором предложения.

Большое спасибо!

6 Solutions collect form web for “Английская грамматика для разбора в NLTK”

Вы можете взглянуть на pyStatParser , простой статистический парсер python, который возвращает деревья синтаксического анализа NLTK. Он поставляется с публичными древовидными структурами, и он генерирует грамматическую модель только в первый раз, когда вы создаете объект Parser (примерно через 8 секунд). Он использует алгоритм CKY, и он анализирует предложения средней длины (например, ниже) за секунду.

>>> from stat_parser import Parser >>> parser = Parser() >>> print parser.parse("How can the net amount of entropy of the universe be massively decreased?") (SBARQ (WHADVP (WRB how)) (SQ (MD can) (NP (NP (DT the) (JJ net) (NN amount)) (PP (IN of) (NP (NP (NNS entropy)) (PP (IN of) (NP (DT the) (NN universe)))))) (VP (VB be) (ADJP (RB massively) (VBN decreased)))) (. ?)) 

Моя библиотека, spaCy , обеспечивает синтаксический анализатор высокой производительности.

Монтаж:

 pip install spacy python -m spacy.en.download all 

Применение:

 from spacy.en import English nlp = English() doc = nlp(u'A whole document.\nNo preprocessing require. Robust to arbitrary formating.') for sent in doc: for token in sent: if token.is_alpha: print token.orth_, token.tag_, token.head.lemma_ 

Choi et al. (2015) обнаружили, что spaCy является самым быстрым парсером зависимостей. Он обрабатывает более 13 000 предложений в секунду, в одном потоке. По стандартной оценке WSJ она составляет 92,7%, что на 1% больше, чем у моделей CoreNLP.

Существует библиотека под названием « Шаблон» . Он довольно быстрый и простой в использовании.

 >>> from pattern.en import parse >>> >>> s = 'The mobile web is more important than mobile apps.' >>> s = parse(s, relations=True, lemmata=True) >>> print s 'The/DT/B-NP/O/NP-SBJ-1/the mobile/JJ/I-NP/O/NP-SBJ-1/mobile' ... 

В дистрибутиве nltk_data имеется несколько грамматик. В интерпретаторе Python выпустите nltk.download() .

Используйте MaltParser, там у вас есть предварительно подготовленная английская грамматика, а также некоторые другие предварительно подготовленные языки. И Maltparser – анализатор зависимостей, а не некоторый простой снизу вверх или сверху вниз Parser.

Просто загрузите MaltParser с http://www.maltparser.org/index.html и используйте NLTK следующим образом:

 import nltk parser = nltk.parse.malt.MaltParser() 

Я пробовал NLTK, PyStatParser, Pattern. IMHO Pattern – лучший английский парсер, представленный в этой статье. Потому что он поддерживает установку pip, и на веб-сайте есть http://www.clips.ua.ac.be/pages/pattern-en . Я не мог найти разумный документ для NLTK (и это дало мне неточный результат для меня по умолчанию. И я не мог найти, как его настроить). pyStatParser намного медленнее, чем описано выше в моей среде. (Примерно за одну минуту для инициализации и потребовалось пару секунд для разбора длинных предложений. Возможно, я не использовал его правильно).

  • NLTK / NLP, выполняющий классификацию предметных разделов с множеством / многими метками
  • Как использовать проверку креста k-fold в scikit с наивным классификатором заливов и NLTK
  • Извлечение связей посредством chunking с использованием NLTK
  • Улучшение извлечения человеческих имен с помощью nltk
  • Разбор HTML-файлов в Python
  • nltk не добавляет $ NLTK_DATA в путь поиска?
  • Написание токенизатора в Python
  • Тексты песен для Rap Genius w / Python
  • Python - лучший язык программирования в мире.