Sémantické podobnosti porovnat dva sloupce dat rámy pomocí sklearn

hlasů
-1

i čelí problému předat funkci pro porovnání mezi dvěma sloupci

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]

poté, co jsem použít funkci

cosine_sim1('like football', 'football')

Výsledkem je: 0,5797386715376657

I čelí trochu problém se pak, že funkce mezi dvěma sloupci v datovém rámci výpočtu skóre. Zde je malý vzorek dat

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

Snažil jsem se dělat takhle. Nicméně existují některé chyby objeví.

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)   

Chyba je: TypeError: ( cosine_sim1 () chybí 1 požadovanou polohovou argument: 'Text2', 'Došlo na indexu 0')

Položena 27/11/2018 v 17:52
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
0

Domnívám se, že by mělo být

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) 

Žádáte funkci datového rámce, ale nejste předávání parametrů, které jste definovali.

Odpovězeno 28/11/2018 v 05:03
zdroj uživatelem

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