Python - 最佳匹配搜索

3
我有一个 SiriServerCore 的设置,我正在编程以自动化我的媒体中心的功能。这个媒体中心有电影、电视节目和音乐。基本上,语音转文字会接收到类似于“播放 Asking Alexandria 的最后一集”的内容。在一个包含所有我的音乐文件位置的 Python 列表中,有一个名为“Asking Alexandria-2-The Final Episode(Let's Change Channel).mp3”的文件。我该如何让文本语音与列表中的项目“最佳匹配”?任何帮助都将不胜感激!

1
这更多是一个通用的算法问题,而不是Python。在你的收藏中,你可能想要构建所有标题/字幕中单词的索引,然后使用某种全文搜索引擎(互联网上有大量这样的引擎)。 - J0HN
2个回答

2

假设您的语音输入将被转换为字符串,您可以简单地遍历歌曲列表,查看歌曲标题的前两个或三个单词,将每个标题与输入字符串进行比较,如果歌曲标题的一些或大多数单词出现在代表您的语音的字符串中,您就可以决定正确的歌曲。这会像这样:

>>> a = "Play The Final Episode by Asking Alexandria" # voice input
>>> songList = ["Asking Alexandria - 2 - The Final Episode (Let's Change Channel).mp3",      "Angie", "Yesterday.mp3"]
>>> for songTitle in SongsList:
        songTitleWords = songTitle.split(" ")
        if " ".join(songTitleWords[:2]) in voiceInput: 
            # play the song

但这只是我的猜测,而不是完美的解决方案。我认为歌曲标题的前几个单词通常最重要。同时,最好从歌曲标题开始,并将歌曲标题与语音输入进行匹配,而不是反过来,因为语音输入可能包含不必要的元素,语音输入的前三个单词可能是“请播放标题为XXX的歌曲”。歌曲标题的前几个单词通常是信息性的。


1

我怀疑这个库会产生好的结果。Play The Final Episode by Asking AlexandriaAsking Alexandria - 2 - The Final Episode之间有很大的Levenshtein距离,但实际上它们是完全匹配的。 - J0HN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接