2016-11-26 3 views
1

Я загрузил предварительно подготовленную модель word2vec для своего родного языка. Это был файл «news.model.bin» и когда я расстегнула его, ожидал увидеть txt файл или pickle, но я нашел еще один .bin файл в ней с хаосом consistat, как это:Загрузка «.bin» в Theano или TensorFlow

\09\b9\.,-;sdfkf %some really strange symbols and seem to be invalid symbols% 

I даже не могу его скопировать, потому что я не могу нормально открыть файл - он тяжелый, и мой ноутбук просто умирает. Вопрос: Может ли этот примерный код быть моделью предварительного транса или нет? Если да, как я должен заниматься этим?

P.S. Ссылка, где я получил модель от (моделей находятся в нижней части страницы): http://ling.go.mail.ru/dsm/ru/about

+0

Быстрый Google превратился [это] (http://mccormickml.com/2016/04/12/googles-pretrained-word2vec- модель-в-питон /). Я думаю, что это специальный формат для word2vec. Надеюсь, поможет. – Kh40tiK

+0

Возможный дубликат [Конвертировать файл bin2 в текстовый файл] (http://stackoverflow.com/questions/27324292/convert-word2vec-bin-file-to-text) –

ответ

0

Два решение:

  1. Преобразовать .bin в .txt: Convert word2vec bin file to text
  2. сразу прочитать. как показано ниже.

https://gist.github.com/j314erre/b7c97580a660ead82022625ff7a644d8 содержит код, чтобы прочитать .bin и загрузить его в переменную TensorFlow:

# Initialize all variables 
    sess.run(tf.initialize_all_variables()) 
    # Initialize all variables 
    sess.run(tf.initialize_all_variables()) 
    if FLAGS.word2vec: 
     # initial matrix with random uniform 
     initW = np.random.uniform(-0.25,0.25,(len(vocab_processor.vocabulary_), FLAGS.embedding_dim)) 
     # load any vectors from the word2vec 
     print("Load word2vec file {}\n".format(FLAGS.word2vec)) 
     with open(FLAGS.word2vec, "rb") as f: 
      header = f.readline() 
      vocab_size, layer1_size = map(int, header.split()) 
      binary_len = np.dtype('float32').itemsize * layer1_size 
      for line in xrange(vocab_size): 
       word = [] 
       while True: 
        ch = f.read(1) 
        if ch == ' ': 
         word = ''.join(word) 
         break 
        if ch != '\n': 
         word.append(ch) 
       idx = vocab_processor.vocabulary_.get(word) 
       if idx != 0: 
        initW[idx] = np.fromstring(f.read(binary_len), dtype='float32') 
       else: 
        f.read(binary_len)  

    sess.run(cnn.W.assign(initW)) 

Вы можете использовать этот код в этом text classification example in TensorFlow.

FYI:

Смежные вопросы