Semantische Ähnlichkeit zwei Spalten vergleichen in Datenrahmen sklearn mit

stimmen
-1

i stellen ein Problem, eine Funktion zu übergeben zwischen zwei Spalte zu vergleichen,

import nltk, string
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer(tokenizer=normalize, stop_words='english')

def cosine_sim1(text1, text2):
    tfidf = vectorizer.fit_transform([text1, text2])
    return ((tfidf * tfidf.T).A)[0,1]

nachdem ich die Funktion anwenden

cosine_sim1('like football', 'football')

Die Ergebnisse sind: ,5797386715376657

Ich stehe ein kleines Problem, dass die Funktion zwischen zwei Spalte in Datenrahmen passieren, die Partitur zu berechnen. Hier ist eine kleine Auswahl der Daten

 d = pd.DataFrame({'A': ['my name is', 'i live in', 'i like football'], 'B': ['london is nice city', 'london city', 'football']})

Ich habe versucht, so zu tun. Es gibt jedoch einige Fehler angezeigt.

def cosine_sim1(text1, text2):
    tfidf = vectorizer.fit_transform([text1(d['A']), text2(d['B'])])
    return ((tfidf * tfidf.T).A)[0,1]
d.apply(cosine_sim1, axis=1)   

Der Fehler ist: Typeerror: ( cosine_sim1 () 1 erforderliches Positions Argument fehlt: 'Text2', 'trat bei Index 0')

Veröffentlicht am 27/11/2018 um 17:52
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Ich glaube, es sollte sein

def cosine_sim1(text1, text2):
    tfidf = vectorizer.fit_transform([text1, text2])
    return ((tfidf * tfidf.T).A)[0,1]
d.apply(lambda x: cosine_sim1(x.A, x.B), axis=1) 

Sie bewerben Funktion Dataframe, aber Sie sind nicht vorbei, die Parameter, die Sie definiert haben.

Beantwortet am 28/11/2018 um 05:03
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more