2014-12-26 18 views
5

Tôi đang cố gắng thực hiện như sau kaggle assignmnet. Tôi đang sử dụng gói gensim để sử dụng word2vec. Tôi có thể tạo mô hình và lưu nó vào đĩa. Nhưng khi tôi đang cố tải lại tệp, tôi nhận được lỗi bên dưới.Lỗi: codec 'utf8' không thể giải mã byte 0x80 ở vị trí 0: byte bắt đầu không hợp lệ

-HP-dx2280-MT-GR541AV:~$ python prog_w2v.py 
Traceback (most recent call last): 
    File "prog_w2v.py", line 7, in <module> 
    models = gensim.models.Word2Vec.load_word2vec_format('300features_40minwords_10context.txt', binary=True) 
    File "/usr/local/lib/python2.7/dist-packages/gensim/models/word2vec.py", line 579, in load_word2vec_format 
    header = utils.to_unicode(fin.readline()) 
    File "/usr/local/lib/python2.7/dist-packages/gensim/utils.py", line 190, in any2unicode 
    return unicode(text, encoding, errors=errors) 
    File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode 
    return codecs.utf_8_decode(input, errors, True) 
UnicodeDecodeError: 'utf8' codec can't decode byte 0x80 in position 0: invalid start byte 

Tôi tìm thấy câu hỏi tương tự. Nhưng tôi không thể giải quyết vấn đề. Prog_w2v.py của tôi như sau.

import gensim 
import time 
start = time.time()  
models = gensim.models.Word2Vec.load_word2vec_format('300features_40minwords_10context.txt', binary=True) 
end = time.time() 
print end-start," seconds" 

Tôi đang cố tạo mô hình bằng cách sử dụng code here. Chương trình mất khoảng nửa giờ để tạo mô hình. Do đó tôi không thể chạy nó nhiều lần để gỡ lỗi nó.

Trả lời

3

Nếu bạn đã lưu mô hình của bạn với tiết kiệm(), bạn phải sử dụng tải()

load_word2vec_format là dành cho mô hình được tạo ra bởi google, không cho mô hình được tạo ra bởi gensim

9

You are not load file đúng. Bạn nên sử dụng load() thay vì load_word2vec_format(). Sau này được sử dụng khi bạn đào tạo một mô hình bằng cách sử dụng mã C và lưu mô hình ở định dạng nhị phân. Tuy nhiên bạn không lưu mô hình ở định dạng nhị phân và đang đào tạo nó bằng python. Vì vậy, bạn chỉ có thể sử dụng đoạn mã sau và nó cũng làm việc:

models = gensim.models.Word2Vec.load('300features_40minwords_10context.txt') 
3

Nếu bạn lưu mô hình của bạn với:

model.wv.save(OUTPUT_FILE_PATH + 'word2vec.bin') 

Sau đó tải word2vec với load_word2vec_format phương pháp sẽ gây ra vấn đề này. Để làm cho nó làm việc bạn nên sử dụng:

wiki_model = KeyedVectors.load(OUTPUT_FILE_PATH + 'word2vec.bin') 

Điều tương tự cũng xảy ra khi bạn lưu mô hình với:

model.wv.save_word2vec_format(OUTPUT_FILE_PATH + 'word2vec.txt', binary=False) 

Và sau đó, muốn tải với KeyedVectors.load phương pháp. Trong trường hợp này, hãy sử dụng:

wiki_model = KeyedVectors.load_word2vec_format(OUTPUT_FILE_PATH + 'word2vec.bin', binary=False) 
Các vấn đề liên quan