Python 如何在大量短语列表中查找几乎匹配的字符串
我正在制作一个discord机器人,当你向他发送一段youtube视频的报价时,它会按照“接近度”的顺序向你发送视频中匹配的报价和时间戳列表,当你选择你想要的报价时,它会在报价的时间戳处发送视频的url 我不需要帮助解决事情不和谐的一面,我需要的是帮助构建我的数据库和找到引用的方法 目前,我已经制作了一些可以很好地处理十几个视频的东西,但是效率很低,有时不够准确 首先,我使用youtube dl下载视频的所有字幕,然后使用一些正则表达式提取每一行及其时间戳,并将其放入字典中,然后以以下格式写入.yml文件:Python 如何在大量短语列表中查找几乎匹配的字符串,python,database,find,Python,Database,Find,我正在制作一个discord机器人,当你向他发送一段youtube视频的报价时,它会按照“接近度”的顺序向你发送视频中匹配的报价和时间戳列表,当你选择你想要的报价时,它会在报价的时间戳处发送视频的url 我不需要帮助解决事情不和谐的一面,我需要的是帮助构建我的数据库和找到引用的方法 目前,我已经制作了一些可以很好地处理十几个视频的东西,但是效率很低,有时不够准确 首先,我使用youtube dl下载视频的所有字幕,然后使用一些正则表达式提取每一行及其时间戳,并将其放入字典中,然后以以下格式写入.
"actual quote":
url: url_of_the_video_the_quote_is_from
time : timestamp
title : "title of the video"
因此,如果仅仅因为文件的重量和在程序开始时加载文件所需的时间,那么每个视频的每个引用本身就是一个巨大的问题。但我不知道该用什么来替代我需要它做的事情
为了找到正确的报价,我主要使用的是我想要的,但可能会更好
t = []
num = 0.8
while len(t) < 2 or num == 0:
num -= 0.05
t = difflib.get_close_matches(phrase, dict, n=10, cutoff=num)
t=[]
num=0.8
当len(t)<2或num==0时:
num-=0.05
t=difflib.get\u close\u匹配(短语,dict,n=10,截止值=num)
“短语”是需要找到的引语,“dict”是所有引语的字典。“get_close_matches”返回得分高于截止值的接近匹配列表,因此我从“接近度”的上限开始,如果我没有得到足够的答案,我会降低要求,然后重新开始
除了效率低下之外,主要问题是它试图将短语与整个引用匹配起来。因此,如果短语只是一个10字的引号中的一个字,即使这个字只出现在一个引号中,get_close_matches将不会找到该引号,而是找到其他“足够接近”的1字引号。它迫使用户尝试匹配整个引用,而不是仅仅一两个单词,但我希望它能够找到正确的引用,即使给出的单词更少。我试着浏览所有的引语,试着把引语中的每一个单词和短语中的每一个单词都匹配起来,但我放弃了