【发布时间】:2020-04-25 23:32:04
【问题描述】:
我想比较两个列表中的项目(请参见下文)。我正在寻找有关这些项目的相似性。比如我有这个来自b_list的物品:
http://www.ilcorrieredellanotte.it
类似于g_list 中的Corriere della Sera。预期的输出是:
(ilcorrieredellanotte, corrieredellasera) = (score of similarity)
另外:https://www.ilmattoquotidiano.it, http://www.ilfattoquotidaino.it 和来自b_list 的https://ilquotidaino.wordpress.com 类似于来自g_list 的il fatto quotidiano。输出示例如下:
(ilmattoquotidiano, ilfattoquotidiano) = 90(它们应该只对'c'有所不同)
(ilfattoquotidaino, ilfattoquotidiano) = 95(它们仅在元音上有所不同,与另一个切换)
(ilquotidaino, ilfattoquotidiano) =60(缺少'fatto')
(90、95、60分仅作为示例)
我正在考虑使用
Ratios = [process.extract(x,g_list) for x in b_list]
result = list()
for ratio in Ratios:
for match in ratio:
if match[1] !=100:
result.append(match)
break
但是输出给了我一些不同的东西(例如,它不包括在列表中的"Il fatto quotidiano")。我认为这是因为我将 url 列表与以空格分隔的单词进行比较,并且区分大小写。
任何建议将不胜感激。谢谢
列表:
b_list =["http://notiziepericolose.blogspot.com","http://www.ilcorrieredellanotte.it","https://www.ilmattoquotidiano.it","http://ioco.altervista.org/blog/","http://www.ilmessaggio.it","http://www.ilcorriere.cloud","http://www.ilfattoquotidaino.it","https://ilquotidaino.wordpress.com","http://www.liberogiornale.com", ]
b_list=[re.sub(r"https?://(www\.)?", r'', a) for a in black_list]
g_list=["Corriere della Sera","la Repubblica","La Gazzetta dello Sport","Corriere dello Sport-Stadio","Italia Oggi","il Giornale","Tuttosport","il Fatto Quotidiano","Il Mattino","Libero","Leggo"]
g_list =[x.lower() for x in g_list]
【问题讨论】:
-
看看difflib
标签: python similarity fuzzywuzzy