我正在尝试学习在 python 中使用NLTK包。特别是,我需要在 NLTK 中使用 penn 树库数据集。据我所知,如果我打电话,nltk.download('treebank')
我可以获得 5% 的数据集。但是,我在 tar.gz 文件中有一个完整的数据集,我想使用它。在 这里据说:
如果您可以访问 Penn Treebank 的完整安装,也可以将 NLTK 配置为加载它。下载 ptb 包,并在目录 nltk_data/corpora/ptb 中放置 Treebank 安装的 BROWN 和 WSJ 目录(符号链接也可以)。然后使用 ptb 模块代替 treebank:
所以,我从终端打开了 python,导入了 nltk 并输入了nltk.download('ptb')
. 使用此命令,已在我的目录下创建了“ptb”~/nltk_data
目录。最后,现在我有了~/nltk_data/ptb
目录。在那里,正如我在上面给出的链接中所建议的那样,我已经放置了我的数据集文件夹。所以这是我的最终目录层次结构。
$: 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
在从00到24的所有文件夹中,有很多 .mrg
文件wsj_0001.mrg , wsj_0002.mrg
,诸如此类。
现在,让我们回到我的问题。同样,根据这里:
如果我编写以下内容,我应该能够获取文件 ID:
>>> 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())
我得到了空数组。
>>> print(ptb.fileids())
[]
有没有人可以帮助我?
编辑 这里是我的 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 ..