我面临在两个列之间传递比较功能的问题
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]
我应用了功能
cosine_sim1('like football', 'football')
结果是: 0.5797386715376657
我面临一个小问题,无法在数据框的两列之间传递该函数来计算得分。这是数据的一小部分
d = pd.DataFrame({'A': ['my name is', 'i live in', 'i like football'], 'B': ['london is nice city', 'london city', 'football']})
我试图那样做。但是出现一些错误。
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)
错误是: TypeError :(“ cosine_sim1()缺少1个必需的位置参数:'text2'“,'发生在索引0')
答案 0 :(得分:0)
我相信应该是
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)
您正在将函数应用于DataFrame,但没有传递已定义的参数。