【发布时间】:2013-09-23 04:21:48
【问题描述】:
我有两个列表:一、用户的兴趣;第二,关于一本书的关键词。我想根据用户给定的兴趣列表向用户推荐这本书。我正在使用 Python 库 difflib 的 SequenceMatcher 类来匹配“game”、“games”、“gaming”、“gamer”等类似的词。ratio 函数给了我一个介于 [0, 1] 说明 2 个字符串的相似程度。但是我遇到了一个例子,我计算了“循环”和“射击”之间的相似性。结果是0.6667。
for interest in self.interests:
for keyword in keywords:
s = SequenceMatcher(None,interest,keyword)
match_freq = s.ratio()
if match_freq >= self.limit:
#print interest, keyword, match_freq
final_score += 1
break
有没有其他方法可以在 Python 中执行这种匹配?
【问题讨论】:
-
Heelo。您的意思是 0.6667 小于 self.limit 因此循环和射击被声明为不匹配,而您希望得到这两个词之间匹配的结果?还是相反?
-
@eyquem 他们在循环和射击之间没有相似之处,但是比例函数给出了很高的匹配度......这就是问题
-
提升self.limit的值你怎么看?
-
@eyquem ratio() 调用“游戏”并且“游戏”给出“0.6”作为结果,同时“循环”和“射击”给出“0.66667”作为调用比率的结果(),因此增加 self.limit 将无济于事
标签: python python-2.7 nlp nltk