Как использовать файл словесных вложений GloVe в коллаборации Google - PullRequest
0 голосов
/ 27 апреля 2018

Я скачал данные с помощью wget

!wget http://nlp.stanford.edu/data/glove.6B.zip
 - ‘glove.6B.zip’ saved [862182613/862182613]

Он сохраняется в формате zip, и я хотел бы использовать файл glove.6B.300d.txt из файла zip. Чего я хочу добиться:

embeddings_index = {}
with io.open('glove.6B.300d.txt', encoding='utf8') as f:
    for line in f:
        values = line.split()
        word = values[0]
        coefs = np.asarray(values[1:],dtype='float32')
        embeddings_index[word] = coefs

Конечно, у меня ошибка:

IOErrorTraceback (most recent call last)
<ipython-input-47-d07cafc85c1c> in <module>()
      1 embeddings_index = {}
----> 2 with io.open('glove.6B.300d.txt', encoding='utf8') as f:
      3     for line in f:
      4         values = line.split()
      5         word = values[0]

IOError: [Errno 2] No such file or directory: 'glove.6B.300d.txt'

Как мне разархивировать и использовать этот файл в моем коде выше в Google colab?

Ответы [ 3 ]

0 голосов
/ 03 сентября 2018

Еще один способ сделать это можно следующим образом.

1. Загрузить zip-файл

!wget http://nlp.stanford.edu/data/glove.6B.zip

после загрузки zip-файла он сохраняется в каталоге / content в Google colab.

2. Распакуйте его

!unzip glove*.zip

3. Получите точный путь, по которому извлекаются векторы внедрения, используя

!ls
!pwd

4. Индекс векторов

print('Indexing word vectors.')

embeddings_index = {}
f = open('glove.6B.100d.txt', encoding='utf-8')
for line in f:
    values = line.split()
    word = values[0]
    coefs = np.asarray(values[1:], dtype='float32')
    embeddings_index[word] = coefs
f.close()

print('Found %s word vectors.' % len(embeddings_index))

5. Предохранитель с гуглом - диск

!pip install --upgrade pip
!pip install -U -q pydrive
!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null

!apt-get -y install -qq google-drive-ocamlfuse fuse

from google.colab import auth
auth.authenticate_user()
# Generate creds for the Drive FUSE library.
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}

!mkdir -p drive
!google-drive-ocamlfuse drive

6. Сохраните проиндексированные векторы на диске Google для повторного использования

import pickle
pickle.dump({'embedding_index' : embedding_index } , open('drive/path/to/your/file/location', 'wb')

Если вы уже загрузили zip-файл в локальной системе, просто распакуйте его и загрузите нужный файл измерения на диск Google -> fuse gdrive -> укажите соответствующий путь, а затем используйте его / создайте индекс и т. Д.

также другим способом будет, если он уже загружен в локальную систему через код в colab

from google.colab import files
files.upload()

выберите файл и используйте его, как в шаге 3.

Вот как вы можете работать с встраиванием слов перчаток в коллаборацию Google. надеюсь, это поможет.

0 голосов
/ 09 ноября 2018

Если у вас есть Google Drive, вы можете:

  1. Смонтируйте Google Drive так, чтобы его можно было использовать из записной книжки Colab

    from google.colab import drive
    drive.mount('/content/gdrive')
    
  2. Загрузите glove.6B.zip и извлеките его в любое место на вашем Google Диске, например

    "My Drive/Place/Of/Your/Choice/glove.6B.300d.txt"
    
  3. Открыть файл прямо из записной книжки Colab

    with io.open('/content/gdrive/Place/Of/Your/Choice/glove.6B.300d.txt', encoding='utf8') as f:
    
0 голосов
/ 27 апреля 2018

Это просто, зацените этот старый пост от SO.

import zipfile
zip_ref = zipfile.ZipFile(path_to_zip_file, 'r')
zip_ref.extractall(directory_to_extract_to)
zip_ref.close()
...