2016-03-18 14 views
5

Python'da NLTK paketini kullanmayı öğreniyorum. Özellikle, NLTK'de penn ağaç bankası veri kümesini kullanmam gerekiyor. Bildiğim kadarıyla, nltk.download('treebank')'u ararsam veri kümesinin% 5'ini alabilirim. Ancak, tar.gz dosyasında eksiksiz bir veri kümem var ve kullanmak istiyorum. python/nltk içinde tam penn treebank veri kümesini nasıl kullanabilirim

Penn Treebank, NLTK tam yüklemesine erişiminiz varsa

de onu yüklemek için yapılandırılabilir: here yılında söylenir. Ptb paketini indirin ve dizini nltk_data/corpora/ptb dizininde, Treebank kurulumunun BROWN ve WSJ dizinlerini yerleştirin (symlinks de çalışır). Sonra Treebank yerine ptb modülünü kullanın:

Yani, terminalden piton, ithal nltk açtı ve nltk.download('ptb') yazdınız. Bu komutla, ~/nltk_data dizinim altında "ptb" dizini oluşturuldu. Sonunda, şimdi ~/nltk_data/ptb dizini var. İçerde, yukarıda verdiğim bağlantıda önerildiği gibi, veri kümesi klasörümü koydum. Yani bu benim son dizin hiyerarşim. 00'dan 24'e klasörlerin tüm İçinde

$: 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 

birçok .mrg dosyalar, wsj_0001.mrg , wsj_0002.mrg olarak ve benzeri vardır.

Şimdi, sorumu geri verelim. Yine here göre: Ben şunları yazarsanız

ben dosya kimlikleri elde etmek mümkün olmalıdır: Ben print(ptb.fileids()) yazarken

Maalesef
>>> 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', ...] 

, ben boş dizi var.

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

Bana yardımcı olabilecek biri var mı? Burada DÜZENLEME

benim ptb dizinin içeriği ve olan allcats.txt dosyanın bazı:

$: 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 .. 

cevap

3

allcats.txt içeriğine göre ima olarak PTB korpus okuyucu (büyük harf dizin ve dosya adlarını ihtiyacı olduğunu sorunuza dahil ettiniz). Bu, orada Penn Treebank'ın çok sayıda dağıtımıyla çarpışıyor.

Bunun için hızlı bir düzeltme, wsj ve brown klasörlerini ve içeriklerini büyük harfe dönüştürür. Bunun için kullanabileceğiniz bir UNIX komut şöyledir:

( this question Elde Edilen)
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 

. Dizin ve dosya adlarını art arda büyük harf olarak değiştirir.

İlgili konular