numpy TypeError:only size-1 arrays(我正在尝试打印最相似的单词)

aij0ehis  于 2023-03-30  发布在  其他
关注(0)|答案(1)|浏览(109)

如何返回相似词?

我有这样的Python代码,这段代码应该简单地打印数组给定的类似的单词,例如,“日本”

代码:

import spacy
import numpy as np

# Load the larger pre-trained English model
nlp = spacy.load("en_core_web_md")

# Get the vector for "japan"
word_vec = nlp("japan").vector

# Reshape the word_vec array to have a second dimension of size 1
word_vec = np.reshape(word_vec, (1, -1))

# Find the 3 most similar words to "japan"
most_similar = nlp.vocab.vectors.most_similar(word_vec, n=3)

# Extract the words from the most_similar list
similar_words = [nlp.vocab.strings[similar[0]] for similar in most_similar]

print(similar_words)

错误

user@users-MacBook training % python3 main.py
Traceback (most recent call last):
  File "/user/project/training/main.py", line 17, in <module>
    similar_words = [nlp.vocab.strings[similar[0]] for similar in most_similar]
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/user/project/training/main.py", line 17, in <listcomp>
    similar_words = [nlp.vocab.strings[similar[0]] for similar in most_similar]
                     ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
  File "spacy/strings.pyx", line 156, in spacy.strings.StringStore.__getitem__
TypeError: only size-1 arrays can be converted to Python scalars

打印most_similar

(array([
   [ 6726951824429389069, 
     10815251124955538419,  
     4763767604223487472
   ]
  ],
  dtype=uint64), 
 array([
    [10959, 
     11621,
     16082]
     ], dtype=int32), array([[1.    , 0.6241, 0.575 ]], dtype=float32))

我明白了,但我不能把它转换成文字
我该怎么修呢?

mefy6pfw

mefy6pfw1#

similar[0]similar[0][0],它将被修复

相关问题