Los siguientes códigos con for-loop solo devuelven un elemento, mientras que esperaba que pudiera devolver muchos elementos. Por ejemplo, en realidad devolvió:

0.3273

Lo que esperaba es

0.8372
0.2847
0.1837
0.3273
...

¿Debo usar .append () o alguna otra cosa? Por favor, dame un consejo de código detallado. Gracias.

def phrase_similarity(phrase):
    phrase_vec = phrase_model[phrase]
    for a_word in phrase_model.keys():
        a_val = phrase_model[a_word]
        cos_dis = cosine_similarity(phrase_vec, a_val) #it's numpy.ndarray
        cos_dis_str = str(cos_dis.tolist()).strip('[[]]')

    return cos_dis_str
2
thomas2019 9 oct. 2019 a las 16:47

3 respuestas

La mejor respuesta

Deje que cos_dis_str sea una lista vacía

cos_dis_str=[]

Entonces un simple apéndice arreglaría eso

cos_dis_str.append(str(cos_dis.tolist()).strip('[[]]'))
0
Mr.ByN 9 oct. 2019 a las 13:50

Puedes cambiar tu código de esta manera.

def phrase_similarity(phrase):

    phrase_vec = phrase_model[phrase]
    cos_dis_str = []

    for a_word, a_val in phrase_model.items():
        cos_dis = cosine_similarity(phrase_vec, a_val).tolist()).strip('[[]]') #it's numpy.ndarray
        cos_dis_str.append(str(cos_dis))

    return '\n'.join(cos_dis_str)
0
sahasrara62 9 oct. 2019 a las 14:06

Cuando se ejecuta el bucle For, cada vez que se sobrescribe os_dis_str. Así que asegúrate de crear una lista para eso y sigue agregando eso. Luego devuelve la lista. Puede acceder a cada uno de los valores individuales desde allí.

cos_dis_str.append(str(cos_dis.tolist()).strip('[[]]'))

Inicialice también cos_dis_str = [], fuera del ciclo For pero dentro de la función. Espero que esto ayude a entenderlo.

0
nithin11 9 oct. 2019 a las 13:57
58305664