2016-11-23 59 views
0

我有一個完整的penn treebank數據集,我想使用ptbntlk.corpus來讀取它。但在here據說:從本地目錄讀取完整的penn treebank數據集

如果你有機會獲得一個完整的安裝賓州樹庫,NLTK 可以配置爲加載它。下載ptb軟件包,並在 的目錄nltk_data/corpora/ptb中放置BRANK和WSJ 目錄的Treebank安裝(符號鏈接也可以)。然後 使用PTB模塊,而不是樹庫的:

但我想保留在本地目錄中的數據集,然後從那裏而不是從nltk_data/corpora/ptb加載它。 ptb總是在那個目錄中搜索,但是我怎樣才能給路徑ptb,以便它在給定的目錄中搜索?有什麼辦法可以做到嗎?我在網上徹底搜索並嘗試了幾種方法,但沒有辦法爲我工作!

+0

使用符號鏈接,就像文檔告訴你的一樣。 –

回答

1

您可以將您的語料庫文件保留在本地目錄中,只需將nltk_data/corpora文件夾中的符號鏈接添加到您的語料庫的位置即可,正如您引用的段落所示。但是,如果您無法修改nltk_data或只是不喜歡通過nltk_data目錄進行不必要的往返的想法,請繼續閱讀。

對象ptb僅僅是一個語料庫讀取器對象的快捷方式,該對象通過Penn Treebank語料庫的適當設置進行初始化。它被定義(在nltk/corpus/__init__.py)是這樣的:

ptb = LazyCorpusLoader(# Penn Treebank v3: WSJ and Brown portions 
    'ptb', CategorizedBracketParseCorpusReader, r'(WSJ/\d\d/WSJ_\d\d|BROWN/C[A-Z]/C[A-Z])\d\d.MRG', 
    cat_file='allcats.txt', tagset='wsj') 

可以忽略LazyCorpusLoader部分;它被使用是因爲nltk定義了很多語料庫端點,其中大多數從未加載到任何一個python程序中。相反,通過直接實例化CategorizedBracketParseCorpusReader來創建語料庫閱讀器。如果你的陰莖看起來酷似ptb語料庫,你會這樣稱呼它:

from nltk.corpus.reader import CategorizedBracketParseCorpusReader 
myreader = CategorizedBracketParseCorpusReader(r"<path to your corpus>", 
    r'(WSJ/\d\d/WSJ_\d\d|BROWN/C[A-Z]/C[A-Z])\d\d.MRG', 
    cat_file='allcats.txt', tagset='wsj') 

正如你所看到的,你提供的路徑,文件的實際位置,並留下其餘參數是相同的:他們是包含在語料庫中的文件名的正則表達式,將語料庫文件映射到類別的文件以及要使用的標記集。您創建的對象將與ptbtreebank完全相同的語料庫讀取器(除非它未被延遲創建)。

相關問題