code

NLTK에서 구문 분석을위한 영어 문법

codestyles 2020. 11. 25. 07:58
반응형

NLTK에서 구문 분석을위한 영어 문법


바로로드하여 NLTK에서 사용할 수있는 바로 사용할 수있는 영문법이 있습니까? NLTK로 구문 분석의 예를 검색했지만 문장을 구문 분석하기 전에 수동으로 문법을 지정해야하는 것 같습니다.

감사합니다!


NLTK 구문 분석 트리를 반환하는 간단한 파이썬 통계 파서 인 pyStatParser를 살펴볼 수 있습니다 . 공용 트리 뱅크와 함께 제공되며 Parser 개체를 처음 인스턴스화 할 때만 (약 8 초 내에) 문법 모델을 생성합니다. CKY 알고리즘을 사용하며 1 초 이내에 평균 길이 문장 (아래 문장과 같음)을 구문 분석합니다.

>>> 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 평가에서는 CoreNLP의 어떤 모델보다 1 % 이상 더 정확한 92.7 %의 점수를 받았습니다.


Pattern 이라는 라이브러리가 있습니다 . 매우 빠르고 사용하기 쉽습니다.

>>> 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는 단순한 상향식 또는 하향식 파서가 아니라 종속성 파서입니다.

http://www.maltparser.org/index.html 에서 MaltParser를 다운로드하고 다음 과 같이 NLTK를 사용하십시오.

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

I've tried NLTK, PyStatParser, Pattern. IMHO Pattern is best English parser introduced in above article. Because it supports pip install and There is a fancy document on the website (http://www.clips.ua.ac.be/pages/pattern-en). I couldn't find reasonable document for NLTK (And it gave me inaccurate result for me by its default. And I couldn't find how to tune it). pyStatParser is much slower than described above in my Environment. (About one minute for initialization and It took couple of seconds to parse long sentences. Maybe I didn't use it correctly).


Did you try POS tagging in NLTK?

text = word_tokenize("And now for something completely different")
nltk.pos_tag(text)

The answer is something like this

[('And', 'CC'), ('now', 'RB'), ('for', 'IN'), ('something', 'NN'),('completely', 'RB'), ('different', 'JJ')]

Got this example from here NLTK_chapter03

참고URL : https://stackoverflow.com/questions/6115677/english-grammar-for-parsing-in-nltk

반응형