ValueError: не удалось преобразовать строку в float: '.' .Для набора данных перчатки - PullRequest
0 голосов
/ 03 августа 2020

Я не могу понять, почему я получаю эту ошибку значения, которую я пробовал с помощью encoding = 'utf8', но я все еще получаю ту же ошибку, она дает мне o / p как 50464it [00:02, 21543.68it / s] и чем дает мне ошибку значения

####################################################################
# find matches with glove 
####################################################################
GLOVE_DATASET_PATH = 'glove.840B.300d.txt'

from tqdm import tqdm
import string
embeddings_index = {}
f = open(GLOVE_DATASET_PATH)
word_counter = 0
for line in tqdm(f):
  values = line.split()
  word = values[0]
  if word in dictionary:
    coefs = np.asarray(values[1:], dtype='float32',)
    embeddings_index[word] = coefs
  word_counter += 1
f.close()

print('Found %s word vectors matching enron data set.' % len(embeddings_index))
print('Total words in GloVe data set: %s' % word_counter)

50464it [00:02, 21543.68it/s]
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-8-701f9683d32e> in <module>
     13   word = values[0]
     14   if word in dictionary:
---> 15     coefs = np.asarray(values[1:], dtype='float32',)
     16     embeddings_index[word] = coefs
     17   word_counter += 1

~/anaconda3/lib/python3.7/site-packages/numpy/core/_asarray.py in asarray(a, dtype, order)
     83 
     84     """
---> 85     return array(a, dtype, copy=False, order=order)
     86 
     87 

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

Я получаю эту ошибку значения, когда хочу узнать слова и общее количество слов в данных перчатки

Ответы [ 2 ]

0 голосов
/ 29 августа 2020

читая файл .txt, вы можете проигнорировать лишнюю строку:

поместите свой for l oop в try, а затем проигнорируйте эту строку файла, как показано ниже:

except:
    f.__next__()
0 голосов
/ 13 августа 2020

У меня такая же проблема, и я распечатываю содержимое записи для '.'. Судя по всему, для '.' Существует несколько векторных слов. Первый имеет 300 измерений, а второй - 302 измерения с двумя точками в положениях 0 и 1 (отсюда и ошибка). Я не знаю, почему существует два вектора для '.' или почему в векторе есть точки.

.   300 ['0.012001', '0.20751', ...]

.   302 ['.', '.', '-0.1573', '-0.29517', ...]
...