2016-04-09 22 views
0

NLL görevlerini gerçekleştirmek için nltk.parse.stanford adresinden Stanford Parser kullanmaya çalışıyorum. Cümle üzerinde belirli bir cümle veya cümlenin bir listesini açıkça girdikten sonra yapabileceğim bazı işlemler var. Ancak, büyük miktarda bir metni gerçekten cümlelerine nasıl ayırırım? How can I split a text into sentences using the Stanford parser?nltk.parse.stanford kitaplığını kullanarak cümleler nasıl bölünür

I: Burada java için işi yapar benzer bir şey bulduk http://www.nltk.org/api/nltk.parse.html?highlight=stanford#module-nltk.parse.stanford

: Burada belgeleri kontrol ve hiçbir şey bulunamadı

(Açıkçası, vb dönemleri ile regex iyi çalışmaz) kütüphanenin python versiyonu için bunun gibi bir şeye ihtiyacım olduğunu düşünüyorum.

cevap

3

İlk kurulum Stanford araçları ve NLTK doğru, mesela Linux: listedeki her öğe bir olan karakter dizisi listesi, içine metin tokenize cümle Kiss and Strunk (2006) kullanın

[email protected]:~$ cd 
[email protected]:~$ wget http://nlp.stanford.edu/software/stanford-parser-full-2015-12-09.zip 
[email protected]:~$ unzip stanford-parser-full-2015-12-09.zip 
[email protected]:~$ ls stanford-parser-full-2015-12-09 
bin      ejml-0.23.jar   lexparser-gui.sh    LICENSE.txt  README_dependencies.txt StanfordDependenciesManual.pdf 
build.xml     ejml-0.23-src.zip  lexparser_lang.def   Makefile   README.txt    stanford-parser-3.6.0-javadoc.jar 
conf      lexparser.bat   lexparser-lang.sh    ParserDemo2.java ShiftReduceDemo.java  stanford-parser-3.6.0-models.jar 
data      lexparser-gui.bat  lexparser-lang-train-test.sh ParserDemo.java slf4j-api.jar   stanford-parser-3.6.0-sources.jar 
DependencyParserDemo.java lexparser-gui.command lexparser.sh     pom.xml   slf4j-simple.jar   stanford-parser.jar 
[email protected]:~$ export STANFORDTOOLSDIR=$HOME 
[email protected]:~$ export CLASSPATH=$STANFORDTOOLSDIR/stanford-parser-full-2015-12-09/stanford-parser.jar:$STANFORDTOOLSDIR/stanford-parser-full-2015-12-09/stanford-parser-3.6.0-models.jar 

(daha fazla ayrıntı için https://gist.github.com/alvations/e1df0ba227e542955a8a bakın ve pencereler talimatlar için https://gist.github.com/alvations/0ed8641d7d2e1941b9f9 bakınız) Sonra

cümle.

>>> from nltk import sent_tokenize, word_tokenize 
>>> sentences = 'This is the first sentnece. This is the second. And this is the third' 
>>> sent_tokenize(sentences) 
['This is the first sentence.', 'This is the second.', 'And this is the third'] 

Sonra stanford ayrıştırıcı içine belge akışı beslemek:

>>> list(list(parsed_sent) for parsed_sent in parser.raw_parse_sents(sent_tokenze(sentences))) 
[[Tree('ROOT', [Tree('S', [Tree('NP', [Tree('DT', ['This'])]), Tree('VP', [Tree('VBZ', ['is']), Tree('NP', [Tree('DT', ['the']), Tree('JJ', ['first']), Tree('NN', ['sentence'])])]), Tree('.', ['.'])])])], [Tree('ROOT', [Tree('S', [Tree('NP', [Tree('DT', ['This'])]), Tree('VP', [Tree('VBZ', ['is']), Tree('NP', [Tree('DT', ['the']), Tree('NN', ['second'])])]), Tree('.', ['.'])])])], [Tree('ROOT', [Tree('S', [Tree('CC', ['And']), Tree('NP', [Tree('DT', ['this'])]), Tree('VP', [Tree('VBZ', ['is']), Tree('NP', [Tree('DT', ['the']), Tree('JJ', ['third'])])])])])]] 
+0

Ayrıca önceden oluşturulmuş 'sent_tokenize' kullanarak kendi punkt dizgeciklerini yerine eğitebiliriz http://stackoverflow.com bakınız/sorular/21160310/eğitim-veri-format-için-nltk-punkt – alvas

0

Bu nltk web sitesi (http://www.nltk.org/api/nltk.tokenize.html?highlight=split%20sentence) oluştururlar: Bu tokenizer cümlelerin listesini gösteren bir metin böler

, kısaltma kelimeler için bir model oluşturmak için bir denetimsiz algoritma kullanarak

Punkt Cümle Simgeleştirici, eşdizimlilik ve cümleleri başlatan kelimeler. . O * o kullanılmadan önce hedef dilde düz metin büyük bir koleksiyonu

Örnek kod eğitilmiş olması gerekir:

import nltk.data 
sent_detector = nltk.data.load('tokenizers/punkt/english.pickle') 
print('\n-----\n'.join(sent_detector.tokenize('hello there. how are you doing today, mr. bojangles?'))) 
İlgili konular