Ошибка при встраивании: не удалось преобразовать строку в число с плавающей точкой: 'ng' - PullRequest
0 голосов
/ 29 ноября 2018

Я работаю над предварительно обученными векторами слов, используя метод GloVe.Данные содержат векторы на данных Википедии.При встраивании данных я получаю сообщение об ошибке, которое не может преобразовать строку в число с плавающей точкой: 'ng'

Я попытался просмотреть данные, но там я не смог найти символ 'ng'

# load embedding as a dict
def load_embedding(filename):
    # load embedding into memory, skip first line
    file = open(filename,'r', errors = 'ignore')
    # create a map of words to vectors
    embedding = dict()
    for line in file:
        parts = line.split()
        # key is string word, value is numpy array for vector
        embedding[parts[0]] = np.array(parts[1:], dtype='float32')
    file.close()
    return embedding

Вот сообщение об ошибке.Пожалуйста, ведите меня дальше.

runfile('C:/Users/AKSHAY/Desktop/NLP/Pre-trained GloVe.py', wdir='C:/Users/AKSHAY/Desktop/NLP')
C:\Users\AKSHAY\AppData\Local\conda\conda\envs\py355\lib\site-packages\h5py\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
  from ._conv import register_converters as _register_converters
Using TensorFlow backend.
Traceback (most recent call last):

  File "<ipython-input-1-d91aa5ebf9f8>", line 1, in <module>
    runfile('C:/Users/AKSHAY/Desktop/NLP/Pre-trained GloVe.py', wdir='C:/Users/AKSHAY/Desktop/NLP')

  File "C:\Users\AKSHAY\AppData\Local\conda\conda\envs\py355\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
    execfile(filename, namespace)

  File "C:\Users\AKSHAY\AppData\Local\conda\conda\envs\py355\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/AKSHAY/Desktop/NLP/Pre-trained GloVe.py", line 123, in <module>
    raw_embedding = load_embedding('glove.6B.50d.txt')

  File "C:/Users/AKSHAY/Desktop/NLP/Pre-trained GloVe.py", line 67, in load_embedding
    embedding[parts[0]] = np.array(parts[1:], dtype='float32')

ValueError: could not convert string to float: 'ng'

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

ValueError: не удалось преобразовать строку в число с плавающей точкой: 'ng'

Для решения вышеуказанной проблемы добавьте encoding = 'utf8' к функции следующим образом:

file = open(filename,'r', errors = 'ignore', encoding='utf8')
0 голосов
/ 01 декабря 2018

Похоже, 'ng' - это слово (токен) в вашем файле, для которого вы пытаетесь получить вектор слов.Предварительно обученные векторы перчаток, вероятно, не имеют вектора для 'ng', который вызывает ошибку.Итак, вам нужно проверить, есть ли у слова вектор во вложениях Glove.См. Раздел «Создание матрицы весов для слов в учебных документах» в этом посте для примера того, как это сделать - Классификация текста с использованием CNN, LSTM и предварительно обученных вложенных слов в перчатки: Часть-3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...