Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在大量短语列表中查找几乎匹配的字符串_Python_Database_Find - Fatal编程技术网

Python 如何在大量短语列表中查找几乎匹配的字符串

Python 如何在大量短语列表中查找几乎匹配的字符串,python,database,find,Python,Database,Find,我正在制作一个discord机器人,当你向他发送一段youtube视频的报价时,它会按照“接近度”的顺序向你发送视频中匹配的报价和时间戳列表,当你选择你想要的报价时,它会在报价的时间戳处发送视频的url 我不需要帮助解决事情不和谐的一面,我需要的是帮助构建我的数据库和找到引用的方法 目前,我已经制作了一些可以很好地处理十几个视频的东西,但是效率很低,有时不够准确 首先,我使用youtube dl下载视频的所有字幕,然后使用一些正则表达式提取每一行及其时间戳,并将其放入字典中,然后以以下格式写入.

我正在制作一个discord机器人,当你向他发送一段youtube视频的报价时,它会按照“接近度”的顺序向你发送视频中匹配的报价和时间戳列表,当你选择你想要的报价时,它会在报价的时间戳处发送视频的url

我不需要帮助解决事情不和谐的一面,我需要的是帮助构建我的数据库和找到引用的方法

目前,我已经制作了一些可以很好地处理十几个视频的东西,但是效率很低,有时不够准确

首先,我使用youtube dl下载视频的所有字幕,然后使用一些正则表达式提取每一行及其时间戳,并将其放入字典中,然后以以下格式写入.yml文件:

"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字引号。它迫使用户尝试匹配整个引用,而不是仅仅一两个单词,但我希望它能够找到正确的引用,即使给出的单词更少。我试着浏览所有的引语,试着把引语中的每一个单词和短语中的每一个单词都匹配起来,但我放弃了