2016-03-18 42 views
5

Tôi đang cố gắng tìm hiểu bằng cách sử dụng gói NLTK trong python. Đặc biệt, tôi cần sử dụng số liệu ngân hàng cây penn trong NLTK. Theo tôi biết, Nếu tôi gọi nltk.download('treebank') tôi có thể nhận được 5% của tập dữ liệu. Tuy nhiên, tôi có một tập dữ liệu hoàn chỉnh trong tập tin tar.gz và tôi muốn sử dụng nó. Trong here người ta nói rằng:làm cách nào tôi có thể sử dụng tập dữ liệu penn treebank hoàn chỉnh bên trong python/nltk

Nếu bạn có quyền truy cập vào một cài đặt đầy đủ của Penn Treebank, NLTK có thể được cấu hình để tải nó là tốt. Tải xuống gói ptb và trong thư mục nltk_data/corpora/ptb đặt các thư mục BROWN và WSJ cài đặt Treebank (các liên kết cũng hoạt động). Sau đó, sử dụng mô-đun ptb thay vì treebank:

Vì vậy, tôi đã mở con trăn từ thiết bị đầu cuối, nhập nltk và nhập nltk.download('ptb'). Với lệnh này, thư mục "ptb" đã được tạo trong thư mục ~/nltk_data của tôi. Cuối cùng, bây giờ tôi có thư mục ~/nltk_data/ptb. Bên trong đó, như được gợi ý trong liên kết tôi đưa ra ở trên, tôi đã đặt thư mục tập dữ liệu của mình. Vì vậy, đây là hệ thống phân cấp thư mục cuối cùng của tôi.

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

Bên trong tất cả các thư mục 00-24, có nhiều .mrg file như wsj_0001.mrg , wsj_0002.mrg và vân vân.

Bây giờ, hãy trả lại câu hỏi của tôi. Một lần nữa, theo here:

tôi sẽ có thể để có được những id tập tin nếu tôi viết các nội dung sau:

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

Thật không may, khi tôi gõ print(ptb.fileids()) tôi có mảng rỗng.

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

Có ai có thể giúp tôi không?

EDIT đây là nội dung của thư mục PTB của tôi và một số allcats.txt file:

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

Trả lời

3

Người đọc corpus PTB cần hoa thư mục và tên tập tin (như gợi ý bởi nội dung của allcats.txt rằng bạn đưa vào câu hỏi của bạn). Điều này xung đột với nhiều bản phân phối của Penn Treebank ngoài kia, sử dụng chữ thường.

Khắc phục nhanh cho việc này sẽ đổi tên các thư mục wsjbrown và nội dung của chúng thành chữ hoa. Lệnh UNIX bạn có thể sử dụng cho điều này là:

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 

(Thu được từ this question). Nó sẽ thay đổi tên thư mục và tập tin thành chữ hoa đệ quy.

Các vấn đề liên quan