2016-03-18 7 views
5

Próbuję nauczyć się przy użyciu pakietu NLTK w Pythona. W szczególności potrzebuję użyć zestawu danych banku drzewek w NLTK. O ile mi wiadomo, jeśli zadzwonię pod numer nltk.download('treebank'), mogę uzyskać 5% zestawu danych. Jednak mam pełny zestaw danych w pliku tar.gz i chcę go użyć. W here jest powiedziane, że:jak mogę użyć kompletnego zestawu danych drzewa skarbów wewnątrz python/nltk

Jeśli masz dostęp do pełnej instalacji Penn bank drzew, NLTK może być skonfigurowany tak, aby go załadować jak również. Pobierz pakiet ptb, aw katalog nltk_data/corpora/ptb umieść katalogi BROWN i WSJ instalacji Treebank (działają również dowiązania symboliczne). Następnie użyć modułu PTB zamiast bank drzew:

Więc otworzyłam Pythona z terminalu, importowane NLTK i wpisane nltk.download('ptb'). Za pomocą tego polecenia katalog "ptb" został utworzony pod moim katalogiem ~/nltk_data. Na końcu mam teraz katalog ~/nltk_data/ptb. Tam, jak sugerowałem w linku podanym powyżej, umieściłem mój folder datasetu. To jest moja ostatnia hierarchia katalogów.

$: pwd 
    $: ~/nltk_data/corpora/ptb/WSJ 
    $: ls 
    $:00 02 04 06 08 10 12 14 16 18 20 22 24 
     01 03 05 07 09 11 13 15 17 19 21 23 merge.log 

Wewnątrz wszystkie foldery z 00 do 24, istnieje wiele .mrg pliki takie jak wsj_0001.mrg , wsj_0002.mrg i tak dalej.

Teraz, zwróć moje pytanie. Ponownie, według here:

powinienem być w stanie uzyskać identyfikatory plików jeśli piszę co nastepuje:

>>> from nltk.corpus import ptb 
>>> print(ptb.fileids()) # doctest: +SKIP 
['BROWN/CF/CF01.MRG', 'BROWN/CF/CF02.MRG', 'BROWN/CF/CF03.MRG', 'BROWN/CF/CF04.MRG', ...] 

Niestety, gdy wpisuję print(ptb.fileids()) mam pustą tablicę.

>>> print(ptb.fileids()) 
[] 

Czy jest ktoś, kto mógłby mi pomóc?

EDIT tutaj jest zawartość mojego katalogu PTB i niektóre allcats.txt pliku:

$: pwd 
    $: ~/nltk_data/corpora/ptb 
    $: ls 
    $: allcats.txt WSJ 
    $: cat allcats.txt 
    $: WSJ/00/WSJ_0001.MRG news 
    WSJ/00/WSJ_0002.MRG news 
    WSJ/00/WSJ_0003.MRG news 
    WSJ/00/WSJ_0004.MRG news 
    WSJ/00/WSJ_0005.MRG news 

    and so on .. 

Odpowiedz

3

Czytelnik corpus PTB potrzebuje wielkich nazw katalogów i plików (jak zasugerował przez zawartość allcats.txt że zawarte w pytaniu). To zderzenie z wieloma dystrybucjami Penn Treebank tam, które używają małych liter.

Szybką poprawką do tego będzie zmiana nazwy folderów wsj i brown, a ich zawartość na wielkie litery. Komenda UNIX można użyć do tego jest:

find . -depth | \ 
    while read LONG 
    do 
     SHORT=$(basename "$LONG" | tr '[:lower:]' '[:upper:]') 
     DIR=$(dirname "$LONG") 
     if [ "${LONG}" != "${DIR}/${SHORT}" ] 
     then 
      mv "${LONG}" "${DIR}/${SHORT}" 
     fi 
    done 

(Otrzymane z this question). Zmieni ona katalog i nazwy plików na wielkie rekurencyjnie.

Powiązane problemy