【发布时间】:2017-05-13 00:29:56
【问题描述】:
我试图在 pandas 数据框中找到两个单词之间的最大相似度。这是我的日常
import pandas as pd
from nltk.corpus import wordnet
import itertools
df = pd.DataFrame({'word_1':['desk', 'lamp', 'read'], 'word_2':['call','game','cook']})
def max_similarity(row):
word_1 = row['word_1']
word_2 = row['word_2']
ret_val = max([(wordnet.wup_similarity(syn_1, syn_2) or 0) for
syn_1, syn_2 in itertools.product(wordnet.synsets(word_1), wordnet.synsets(word_2))])
return ret_val
df['result'] = df.apply(lambda x: max_similarity(x), axis= 1)
它工作正常,但速度太慢。我正在寻找一种方法来加快它。 wordnet 花费大部分时间有什么建议吗?赛通?我愿意使用其他软件包,例如spacy。
【问题讨论】:
-
lolz...那段代码看起来很眼熟;P
-
@alvas,是的,我从 stackoverflow.com 的其他帖子中借用了 if ;-)。我猜是你的。