Gitter는 개발자를위한 대화방입니다.
nlpnet --- 신경망을 통한 자연어 처리 nlpnet 은 신경망을 기반으로하는 자연어 처리 작업을위한 파이썬 라이브러리입니다. 현재는 부품 태그, 시맨틱 역할 라벨링 및 종속성 구문 분석을 수행합니다. 대부분의 아키텍처는 언어 독립적이지만 일부 기능은 포르투갈어와 협력하기 위해 특별히 조정되었습니다. 이 시스템은 Senna에서 영감을 받았습니다.
중요 : 포르투갈 NLP에 훈련 된 모델을 사용하려면 http://nilc.icmc.usp.br/nlpnet/models.html에서 데이터를 다운로드해야합니다.
nlpnet NLTK와 NUMPTY가 필요합니다. 또한 NLTK에서 일부 데이터를 다운로드해야합니다. 설치 한 후 전화하십시오
>>> nltk.download()
모델 탭으로 이동하여 Punkt Tokenizer를 선택하십시오. 텍스트를 문장으로 나누기 위해 사용됩니다.
Cython은 C 확장을 생성하고 더 빨리 실행하는 데 사용됩니다. 생성 된 .c 파일에는 이미 NLPNet이 제공되므로 C 컴파일러가 필요하기 때문에 필요하지 않을 것입니다. Linux 및 Mac 시스템에서는 문제가되지 않아야하지만 Setuptools에는 기본적으로 Microsoft C 컴파일러가 필요하기 때문에 Windows에있을 수 있습니다. 아직 아직 없다면 대신 mingw를 설치하고 여기에서 지침을 따르는 것이 더 쉽습니다.
nlpnet 파이썬 라이브러리 또는 독립형 스크립트로 사용할 수 있습니다. 두 사용법 모두 아래에 설명되어 있습니다.
nlpnet 다음과 같이 파이썬 코드의 라이브러리로 사용할 수 있습니다.
> >> import nlpnet
> >> tagger = nlpnet . POSTagger ( '/path/to/pos-model/' , language = 'pt' )
> >> tagger . tag ( 'O rato roeu a roupa do rei de Roma.' )
[[( u'O' , u'ART' ), ( u'rato' , u'N' ), ( u'roeu' , u'V' ), ( u'a' , u'ART' ), ( u'roupa' , u'N' ), ( u'do' , u'PREP+ART' ), ( u'rei' , u'N' ), ( u'de' , u'PREP' ), ( u'Roma' , u'NPROP' ), ( u'.' , 'PU' )]] 위의 예에서, POSTagger 생성자는 훈련 된 모델이있는 디렉토리를 첫 번째 인수로 수신합니다. 두 번째 주장은 두 글자 언어 코드입니다 (현재, Onle pt 및 en 지원됩니다). 이것은 토큰 화에만 영향을 미칩니다.
주석 도구를 호출하는 것은 매우 간단합니다. 제공된 것은 POSTagger , SRLTagger 및 DependencyParser 이며, 모두 태그가 붙을 텍스트가있는 문자열을 수신하는 메소드 tag 있습니다 ( DependencyParser 경우 방법 parse 에 별명이 있습니다. Tagger는 텍스트를 문장으로 나눈 다음 각각을 토큰 화합니다 (따라서 후그의 반환은 목록 목록입니다).
srltagger의 출력은 약간 더 복잡합니다.
>>> tagger = nlpnet.SRLTagger() >>> tagger.tag( u ' O rato roeu a roupa do rei de Roma. ' ) [<nlpnet.taggers.SRLAnnotatedSentence at 0x84020f0>]
튜플 목록 대신 문장은 SRLAnnotatedSentence 의 사례로 표시됩니다. 이 클래스는 기본적으로 데이터 홀더로 사용되며 두 가지 속성이 있습니다.
>>> sent = tagger.tag( u ' O rato roeu a roupa do rei de Roma. ' )[ 0 ] >>> sent.tokens [u'O', u'rato', u'roeu', u'a', u'roupa', u'do', u'rei', u'de', u'Roma', u'.'] >>> sent.arg_structures [(u'roeu', {u'A0': [u'O', u'rato'], u'A1': [u'a', u'roupa', u'do', u'rei', u'de', u'Roma'], u'V': [u'roeu']})]
arg_structures 는 문장의 모든 술어 관절 구조를 포함하는 목록입니다. 이 예에서 유일한 것은 동사 Roeu입니다. 그것은 술어와 사전 매핑 시맨틱 역할 라벨을 사용하여 논쟁을 구성하는 토큰으로 표현됩니다.
동사는 튜플의 첫 번째 멤버로 나타나고 또한 'V'라벨 (동사를 나타냄)의 내용으로 나타납니다. 일부 홍보는 멀티 워드이기 때문입니다. 이 경우, "메인"술어 단어 (일반적으로 동사 자체)는 arg_structures[0] 에 나타나고 모든 단어는 키 'V'아래에 나타납니다.
다음은 종속 혈관의 예입니다.
>>> parser = nlpnet.DependencyParser( ' dependency ' , language = ' en ' ) >>> parsed_text = parser.parse( ' The book is on the table. ' ) >>> parsed_text [<nlpnet.taggers.ParsedSentence at 0x10e067f0>] >>> sent = parsed_text[ 0 ] >>> print (sent.to_conll()) 1 The _ DT DT _ 2 NMOD 2 book _ NN NN _ 3 SBJ 3 is _ VBZ VBZ _ 0 ROOT 4 on _ IN IN _ 3 LOC-PRD 5 the _ DT DT _ 6 NMOD 6 table _ NN NN _ 4 PMOD 7 . _ . . _ 3 P
ParsedSentence 객체의 to_conll() 메소드는 Conll 표기법에 인쇄합니다. 토큰, 레이블 및 헤드 지수는 멤버 변수를 통해 액세스 할 수 있습니다.
>>> sent.tokens [u'The', u'book', u'is', u'on', u'the', u'table', u'.'] >>> sent.heads array([ 1, 2, -1, 2, 5, 3, 2]) >>> sent.labels [u'NMOD', u'SBJ', u'ROOT', u'LOC-PRD', u'NMOD', u'PMOD', u'P']
heads 멤버 변수는 멍청한 배열입니다. 배열의 I-TH 위치에는 -1 인 루트 토큰을 제외하고 I-th 토큰의 헤드 색인이 포함되어 있습니다. 이러한 지수는 0 기반이고 to_conll() 함수에 표시된 지수는 1 기반입니다.
nlpnet 또한 텍스트 태그, 새로운 모델 교육 및 테스트를위한 스크립트를 제공합니다. 시스템 경로 변수에 포함될 수있는 파이썬 설치의 스크립트 서브 디렉토리에 복사됩니다. 명령 줄에서 호출하여 텍스트 입력을 제공 할 수 있습니다.
$ nlpnet-tag.py pos --data /path/to/nlpnet-data/ --lang pt
O rato roeu a roupa do rei de Roma.
O_ART rato_N roeu_V a_ART roupa_N do_PREP+ART rei_N de_PREP Roma_NPROP ._PU --data 제공되지 않으면 스크립트는 현재 디렉토리에서 훈련 된 모델을 검색합니다. --lang 기본값은 en . 텍스트가 이미 토큰 화 된 경우 -t 옵션을 사용할 수 있습니다. 토큰이 공백으로 분리된다고 가정합니다.
의미 론적 역할 라벨링 :
$ nlpnet-tag.py srl /path/to/nlpnet-data/
O rato roeu a roupa do rei de Roma.
O rato roeu a roupa do rei de Roma .
roeu
A1: a roupa do rei de Roma
A0: O rato
V: roeu첫 번째 줄은 사용자가 입력했으며 두 번째 줄은 토큰 화의 결과입니다.
의존성 구문 분석 :
$ nlpnet-tag.py dependency --data dependency --lang en
The book is on the table.
1 The _ DT DT _ 2 NMOD
2 book _ NN NN _ 3 SBJ
3 is _ VBZ VBZ _ 0 ROOT
4 on _ IN IN _ 3 LOC-PRD
5 the _ DT DT _ 6 NMOD
6 table _ NN NN _ 4 PMOD
7 . _ . . _ 3 P새로운 모델 및 기타 기능 교육 및 테스트에 대한 자세한 내용은 http://nilc.icmc.usp.br/nlpnet 문서를 참조하십시오.
다음 참조는 NLPNET의 설계와 실험을 설명합니다. 이 강령의 일부 개선은 출판 이후 구현되었습니다.