2 votes

scikit learn Type error seuls les tableaux d'entiers avec un élément peuvent être convertis en index

Je reçois l'erreur suivante lors de l'appel à cosinus_similarité

numerator = sum(a*b for a,b in zip(x,y))
TypeError: only integer arrays with one element can be converted to an index

J'essaie d'obtenir une matrice de cooccurrence mot-clé-mot-clé à partir de la matrice document-mot-clé renvoyée par CountVectorizer.

Je sens qu'il y a quelque chose qui cosine_similarity n'aime pas le type de données que je lui transmets, mais je ne sais pas exactement quel est le problème. Ici, n est de type scipy.sparse.csc.csc_matrix y y est de type scipy.sparse.csr.csr_matrix

documents = (
    "The sky is blue",
    "The sun is bright",
    "The sun in the sky is bright",
    "We can see the shining sun, the bright sun"
)

countvectorizer = CountVectorizer()
y =  countvectorizer.fit_transform(documents)
n  = y.T.dot(y) 
x = n.tocsr()
x = x.toarray()
numpy.fill_diagonal(x, 0) 

result = cosine_similarity(x, "None")

1voto

ncfirth Points 3285

Utilisation de la sklearn cosine_similarity ce segment de code s'exécute et renvoie une réponse qui semble raisonnable.

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import distance_metrics

documents = (
    "The sky is blue",
    "The sun is bright",
    "The sun in the sky is bright",
    "We can see the shining sun, the bright sun"
)

countvectorizer = CountVectorizer()
y =  countvectorizer.fit_transform(documents)
n  = y.T.dot(y) 
x = n.tocsr()
x = x.toarray()
np.fill_diagonal(x, 0) 
cosine_similarity = distance_metrics()['cosine']
result = cosine_similarity(x, x)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X