2016-03-18 14 views
5

私はNLTKパッケージをPythonで使って学びたいと思っています。特に、NLTKでpenn tree bankデータセットを使用する必要があります。私が知る限り、nltk.download('treebank')と呼ぶと、私はデータセットの5%を得ることができます。しかし、私はtar.gzファイルに完全なデータセットを持っており、それを使いたいと思います。あなたはペンツリーバンクのフルインストールへのアクセス権を持っている場合は、NLTK は同様にそれをロードするように構成することができます私はpython/nltkの中で完全なpenn treebankデータセットを使うことができます

hereではあると言われています。 ptbパッケージをダウンロードし、 のディレクトリnltk_data/corpora/ptbに、TreebankインストールのBROWNとWSJ ディレクトリを配置します(シンボリックリンクも同様に動作します)。その後 は、ツリーバンクの代わりにPTBモジュールを使用します。

だから、私は端末からのpython、輸入NLTKを開き、nltk.download('ptb')を入力しました。このコマンドを使用すると、 "ptb"ディレクトリが私の~/nltk_dataディレクトリに作成されています。最後に、今私は~/nltk_data/ptbディレクトリがあります。そこには、私が上で与えたリンクに示唆されているように、私は自分のデータセットフォルダを入れました。これは私の最終的なディレクトリ階層です。 00から24までのすべてのフォルダ内

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

は、多くの .mrgファイルなど wsj_0001.mrg , wsj_0002.mrgなどなどがあります。

今、私の質問を返します。ここでも、hereによると:

私は、私は次のことを書いた場合、ファイルIDを取得することができるはずです:私はprint(ptb.fileids())を入力すると残念ながら

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

、私は空の配列を得ました。

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

私を助けることができる人はいますか?ここでEDIT

は私のPTBディレクトリの内容とあるallcats.txtファイルの一部:

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

答えて

3

allcats.txtの内容によって示唆したようPTBコーパスリーダーは(大文字のディレクトリとファイル名を必要としていますあなたの質問に含まれています)。これは、小文字を使用するPenn Treebankの多くのディストリビューションと衝突します。

これは、フォルダwsjbrownの名前を変更して、その内容を大文字に変更するための簡単な修正です。あなたはこのために使用できるUNIXコマンドは次のとおりです。

this questionから得た)
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 

。ディレクトリ名とファイル名は再帰的に大文字に変更されます。

関連する問題