我在传递函数以比较两列时遇到问题
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)
错误为:类型错误:("cosine_sim1((缺少1个必需的位置参数:'text2'","出现在索引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,但没有传递已定义的参数。