저는 NLTK와 Python을 처음 접했습니다. 예제에서 주어진 장난감 문법을 사용하여 문장 파싱을 만들었지 만 Penn Treebank의 일부에서 배운 문법을 사용할 수 있는지 알고 싶습니다. 말하자면, 직접 작성하거나 장난감을 사용하는 것과 반대되는 말입니다. 문법? (저는 Mac에서 Python 2.7을 사용하고 있습니다) 많은 감사Penn Treebank에서 Python & NLTK를 사용하여 문법 규칙 집합을 얻으려면 어떻게해야합니까?
14
A
답변
3
treebank_chunk 또는 conll2000 corpora에서 Chunker를 학습 할 수 있습니다. 문법을 알아 내지는 못하지만 구문 모음을 구문 분석 할 수있는 피클 할 수있는 개체를 얻습니다. How to Train a NLTK Chunker, Chunk Extraction with NLTK 및 NLTK Classified Based Chunker Accuracy을 참조하십시오. 당신이 정확하게 NLTK와 함께 제공되는 펜 Treebank 샘플을 캡처하는 문법을 원하는 경우에
14
, 당신은 (아래에 의견을 참조) NLTK에 대한 Treebank 데이터를 다운로드 한 가정이 작업을 수행 할 수 있습니다
import nltk
from nltk.corpus import treebank
from nltk.grammar import ContextFreeGrammar, Nonterminal
tbank_productions = set(production for sent in treebank.parsed_sents()
for production in sent.productions())
tbank_grammar = ContextFreeGrammar(Nonterminal('S'), list(tbank_productions))
이를 그러나 아마도 당신에게 유용한 것을주지는 못할 것입니다. NLTK는 모든 터미널이 지정된 문법으로 구문 분석 만 지원하므로 Treebank 샘플의 단어가 포함 된 문장 만 구문 분석 할 수 있습니다.
또한 Treebank에있는 많은 구의 편평한 구조 때문에이 문법은 교육에 포함되지 않은 문장으로 매우 일반적으로 일반화됩니다. 이것이 트리 뱅크를 분석하려고 시도한 NLP 응용 프로그램이 Treebank에서 CFG 규칙을 학습하는 방법을 사용하지 않은 이유입니다. 가장 가까운 기술은 Ren Bods Data Oriented Parsing 방식이지만 훨씬 더 정교합니다.
마지막으로 이것은 너무 느려서 쓸모가 없습니다. 내가 두 번째 코드를 실행할 수 없습니다 해요
mini_grammar = ContextFreeGrammar(Nonterminal('S'),
treebank.parsed_sents()[0].productions())
parser = nltk.parse.EarleyChartParser(mini_grammar)
print parser.parse(treebank.sents()[0])
관련 문제
- 1. C# : 영어 문법 규칙 엔진?
- 2. Python : 집합을 사용하여 중복을 감지하십시오.
- 3. 드루팔 6 규칙 및 규칙 집합을 트리거
- 4. NLTK를 사용하여 새 자료 작성
- 5. 청크/텍스트 파싱 NLTK를 사용하여
- 6. Python 2.5를 사용하여 친숙한 방식으로 운영 체제 이름을 얻으려면 어떻게해야합니까?
- 7. Python xml.sax를 사용하여 요소 속성 목록의 순서를 얻으려면 어떻게해야합니까?
- 8. Python : datetime.timedelta 객체에서 시간을 얻으려면 어떻게해야합니까?
- 9. Python 스크립트로 Perl 스크립트의 결과를 얻으려면 어떻게해야합니까?
- 10. Yacc 문법 규칙 코드를 스택화할 수 있습니까?
- 11. list2에없는 목록 1에서 문자열의 하위 집합을 얻으려면 어떻게해야합니까?
- 12. Django에서 모델에 대해 역 관계로 모든 클래스 집합을 얻으려면 어떻게해야합니까?
- 13. PHP를 사용하여 정보를 얻으려면 어떻게해야합니까?
- 14. Mathematica의 내장 전역 재 작성 규칙 목록을 얻으려면 어떻게해야합니까?
- 15. NLTK를 사용하여 영어 동사 시제를 감지하십시오.
- 16. OCaml을 사용하여 문법 파싱
- 17. 내 웹 서버에 NLTK를 설치하는 방법
- 18. 모듈에 대한 Python 명명 규칙
- 19. 숫자 집합을 비교하고 MySQL과 PHP를 사용하여 가장 관련성 높은 결과를 얻으려면 어떻게해야합니까?
- 20. 큰 배열 대신 pdo를 사용하여 데이터베이스에서 반복 가능한 결과 집합을 얻으려면 어떻게해야합니까?
- 21. 어셈블리에서 요청한 권한 집합을 얻으려면 어떻게합니까?
- 22. 결과 집합을 얻으려면 어떤 SQL 쿼리를 수행해야합니까?
- 23. 이름에서 선택자를 얻으려면 어떻게해야합니까?
- 24. NSHost를 사용하여 외부 IP 주소를 얻으려면 어떻게해야합니까?
- 25. bundler를 사용하여 git 저장소에서 gem을 얻으려면 어떻게해야합니까?
- 26. winpcap을 사용하여 HTTP 패킷의 uri를 얻으려면 어떻게해야합니까?
- 27. HTML5를 사용하여 인증 된 위치를 얻으려면 어떻게해야합니까?
- 28. jQuery SimplyScroll을 사용하여 여러 행을 얻으려면 어떻게해야합니까?
- 29. 코코아를 사용하여 현재 시간을 얻으려면 어떻게해야합니까?
- 30. -initWithContentsOfURL을 사용하여 MySQL 쿼리 결과를 얻으려면 어떻게해야합니까?
: 단일 문장에서 문법에 대한 조치에서이 방법을보고 싶다면 그냥 작동하는지 증명하기 위해서 아래 (위의 수입 후) 코드를 시도 단편. 그것은 나에게 다음과 같은 오류가 발생합니다 : 'corpora/treebank/combined'자원을 찾을 수 없습니다. –
가장 큰 원인은 NLTK를 설치할 때 Treebank 데이터를 설치하지 않았기 때문입니다. [NLTK 데이터 지침] (http://www.nltk.org/data)을 참조하십시오. 기본적으로 파이썬 인터프리터에서는'import nltk','nltk.download()'를 호출하고, "Corpora"탭을 클릭하고 "treebank"를 선택한 다음 "Download"를 클릭하고 완료되면 닫으십시오. – Constantine