TypeError: ufunc 'add' не содержит цикл с типами подписи подписи

Я создаю сумку слов, представляющую предложение. Затем, беря слова, которые существуют в предложении, сравниваются с файлом «vectors.txt», чтобы получить их векторы вложения. Получив векторы для каждого слова, которое существует в предложении, я беру среднее значение векторов слов в предложении. Это мой код:

import nltk import numpy as np from nltk import FreqDist from nltk.corpus import brown news = brown.words(categories='news') news_sents = brown.sents(categories='news') fdist = FreqDist(w.lower() for w in news) vocabulary = [word for word, _ in fdist.most_common(10)] num_sents = len(news_sents) def averageEmbeddings(sentenceTokens, embeddingLookupTable): listOfEmb=[] for token in sentenceTokens: embedding = embeddingLookupTable[token] listOfEmb.append(embedding) return sum(np.asarray(listOfEmb)) / float(len(listOfEmb)) embeddingVectors = {} with open("D:\\Embedding\\vectors.txt") as file: for line in file: (key, *val) = line.split() embeddingVectors[key] = val for i in range(num_sents): features = {} for word in vocabulary: features[word] = int(word in news_sents[i]) print(features) print(list(features.values())) sentenceTokens = [] for key, value in features.items(): if value == 1: sentenceTokens.append(key) sentenceTokens.remove(".") print(sentenceTokens) print(averageEmbeddings(sentenceTokens, embeddingVectors)) print(features.keys()) 

Не знаю, почему, но я получаю эту ошибку:

 TypeError Traceback (most recent call last) <ipython-input-4-643ccd012438> in <module>() 39 sentenceTokens.remove(".") 40 print(sentenceTokens) ---> 41 print(averageEmbeddings(sentenceTokens, embeddingVectors)) 42 43 print(features.keys()) <ipython-input-4-643ccd012438> in averageEmbeddings(sentenceTokens, embeddingLookupTable) 18 listOfEmb.append(embedding) 19 ---> 20 return sum(np.asarray(listOfEmb)) / float(len(listOfEmb)) 21 22 embeddingVectors = {} TypeError: ufunc 'add' did not contain a loop with signature matching types dtype('<U9') dtype('<U9') dtype('<U9') 

Вектор вставки PS выглядит так:

 the 0.011384 0.010512 -0.008450 -0.007628 0.000360 -0.010121 0.004674 -0.000076 of 0.002954 0.004546 0.005513 -0.004026 0.002296 -0.016979 -0.011469 -0.009159 and 0.004691 -0.012989 -0.003122 0.004786 -0.002907 0.000526 -0.006146 -0.003058 one 0.014722 -0.000810 0.003737 -0.001110 -0.011229 0.001577 -0.007403 -0.005355 in -0.001046 -0.008302 0.010973 0.009608 0.009494 -0.008253 0.001744 0.003263 

После использования np.sum я получаю эту ошибку:

 TypeError Traceback (most recent call last) <ipython-input-13-8a7edbb9d946> in <module>() 40 sentenceTokens.remove(".") 41 print(sentenceTokens) ---> 42 print(averageEmbeddings(sentenceTokens, embeddingVectors)) 43 44 print(features.keys()) <ipython-input-13-8a7edbb9d946> in averageEmbeddings(sentenceTokens, embeddingLookupTable) 18 listOfEmb.append(embedding) 19 ---> 20 return np.sum(np.asarray(listOfEmb)) / float(len(listOfEmb)) 21 22 embeddingVectors = {} C:\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py in sum(a, axis, dtype, out, keepdims) 1829 else: 1830 return _methods._sum(a, axis=axis, dtype=dtype, -> 1831 out=out, keepdims=keepdims) 1832 1833 C:\Anaconda3\lib\site-packages\numpy\core\_methods.py in _sum(a, axis, dtype, out, keepdims) 30 31 def _sum(a, axis=None, dtype=None, out=None, keepdims=False): ---> 32 return umr_sum(a, axis, dtype, out, keepdims) 33 34 def _prod(a, axis=None, dtype=None, out=None, keepdims=False): TypeError: cannot perform reduce with flexible type 

  • Что такое переменные аннотации в Python 3.6?
  • Нет модуля с именем «Queue»
  • Получение таких же деталей процесса, как диспетчер задач в Windows
  • sys.stdin.readline () и input (): какой из них быстрее при чтении строк ввода и почему?
  • numpy.getbuffer вызывает AttributeError: объект 'module' не имеет атрибута 'getbuffer'
  • Ошибка синтаксиса при следующем руководстве Pygame / Python на youtube
  • Улучшить текущую реализацию setInterval python
  • Почему мои кнопки изображения не отображаются?
  • One Solution collect form web for “TypeError: ufunc 'add' не содержит цикл с типами подписи подписи”

    У вас есть множество массивов строк, а не плавающих. Это то, что понимается под dtype('<U9') – строка с кодировкой в ​​кодировке little endic с длиной до 9 символов.

    пытаться:

     return sum(np.asarray(listOfEmb, dtype=float)) / float(len(listOfEmb)) 

    Тем не менее, вам здесь не нужно ничего. Вы действительно можете просто сделать:

     return sum(float(embedding) for embedding in listOfEmb) / len(listOfEmb) 

    Или, если вы действительно настроены на использование numpy.

     return np.asarray(listOfEmb, dtype=float).mean() 
    Interesting Posts

    Django, как увидеть сгенерированный SQL-запрос?

    График графика графика и график времени на разных осях с использованием панд

    Python: можно вызвать статический метод из класса без указания имени

    numpy векторизация двойного питона для цикла

    Python subprocess.call и subprocess.Popen stdout

    django.core.exceptions.ImproperlyConfigured: Ошибка при загрузке модуля MySQLdb:

    Pandas merge дает ошибку «Буфер имеет неправильное количество измерений (ожидается 1, получено 2)»

    Перерыв или выход из заявления «с»?

    Как реализовать __delitem__ для обработки всех возможных сценариев среза?

    Проверить на изменчивость в Python?

    Как анализировать / извлекать данные из статьи с размеченной медиавиками через python

    Скомпилировать интерпретатор Python статически?

    Вход в сервер аутентификации SAML / Shibboleth с использованием python

    Применение другой цветовой карты для маскировки

    Как правильно создавать и запускать параллельные задачи с помощью асинхронного модуля python?

    Python - лучший язык программирования в мире.