2011-10-03 25 views
8

Tôi đang cố gắng thực hiện mô hình chủ đề LDA với Mallet 2.0.7. Tôi có thể đào tạo một mô hình LDA và nhận được kết quả tốt, đánh giá bởi đầu ra từ phiên đào tạo. Ngoài ra, tôi có thể sử dụng inferencer được xây dựng trong quá trình đó và nhận được kết quả tương tự khi xử lý lại tệp đào tạo của tôi. Tuy nhiên, nếu tôi lấy một tập tin cá nhân từ tập huấn luyện lớn hơn, và xử lý nó với inferencer tôi nhận được kết quả rất khác, điều đó không tốt.Tại sao nhận kết quả khác nhau với suy luận chủ đề MALLET cho một và nhiều tài liệu?

Hiểu biết của tôi là người trợ giúp nên sử dụng mô hình cố định và chỉ có tính năng cục bộ cho tài liệu đó, vì vậy tôi không hiểu tại sao tôi nhận được bất kỳ kết quả nào khác trong khi xử lý 1 tệp hoặc 1k từ tập huấn luyện của tôi. Tôi không cắt giảm tần số mà dường như là một hoạt động toàn cầu có thể có loại hiệu ứng này. Bạn có thể thấy các thông số khác mà tôi đang sử dụng trong các lệnh bên dưới, nhưng chúng hầu hết là mặc định. Thay đổi # lần lặp lại thành 0 hoặc 100 không giúp ích gì.

nhập dữ liệu:

bin/mallet import-dir \ 
    --input trainingDataDir \ 
    --output train.data \ 
    --remove-stopwords TRUE \ 
    --keep-sequence TRUE \ 
    --gram-sizes 1,2 \ 
    --keep-sequence-bigrams TRUE 

Train:

time ../bin/mallet train-topics 
    --input ../train.data \ 
    --inferencer-filename lda-inferencer-model.mallet \ 
    --num-top-words 50 \ 
    --num-topics 100 \ 
    --num-threads 3 \ 
    --num-iterations 100 \ 
    --doc-topics-threshold 0.1 \ 
    --output-topic-keys topic-keys.txt \ 
    --output-doc-topics doc-topics.txt 

chủ đề giao trong đào tạo thành một tập tin đặc biệt, # 14 là về rượu vang đó là chính xác:

998 file:/.../29708933509685249 14 0.31684981684981683 
> grep "^14\t" topic-keys.txt 
14 0.5 wine spray cooking car climate top wines place live honey sticking ice prevent collection market hole climate_change winery tasting california moldova vegas horses converted paper key weather farmers_market farmers displayed wd freezing winter trouble mexico morning spring earth round mici torrey_pines barbara kinda nonstick grass slide tree exciting lots 

Run suy luận về toàn bộ lô tàu:

../bin/mallet infer-topics \ 
    --input ../train.data \ 
    --inferencer lda-inferencer-model.mallet \ 
    --output-doc-topics inf-train.1 \ 
    --num-iterations 100 

Suy luận điểm trên tàu - rất giống nhau:

998 /.../29708933509685249 14 0.37505087505087503 

Run suy luận trên một tập tin dữ liệu huấn luyện bao gồm duy nhất mà tập 1 txt:

../bin/mallet infer-topics \ 
    --input ../one.data \ 
    --inferencer lda-inferencer-model.mallet \ 
    --output-doc-topics inf-one.2 \ 
    --num-iterations 100 

Suy luận trên một tài liệu sản xuất chủ đề 80 và 36, rất khác nhau (14 được cho gần 0 điểm):

0 /.../29708933509685249 80 0.3184778184778185 36 0.19067969067969068 
> grep "^80\t" topic-keys.txt 
80 0.5 tips dog care pet safety items read policy safe offer pay avoid stay important privacy services ebay selling terms person meeting warning poster message agree sellers animals public agree_terms follow pets payment fraud made privacy_policy send description puppy emailed clicking safety_tips read_safety safe_read stay_safe services_stay payment_services transaction_payment offer_transaction classifieds_offer 

Trả lời

10

p roblem không tương thích giữa các tệp dữ liệu đào tạo small.dataone.data đào tạo. Mặc dù tôi đã cẩn thận để sử dụng tất cả các tùy chọn tương tự, hai tập tin dữ liệu sẽ theo mặc định sử dụng bảng chữ cái khác nhau (ánh xạ giữa các từ và số nguyên). Để sửa lỗi này, hãy sử dụng tùy chọn --use-pipe-from [MALLET TRAINING FILE], và sau đó chỉ định các tùy chọn khác có vẻ là không cần thiết. Cảm ơn David Mimno.

bin/mallet import-dir \ 
    --input [trainingDataDirWithOneFile] \ 
    --output one.data \ 
    --use-pipe-from small.data