mar*_*cgg 5 nlp spell-checking
我知道这不是一个直截了当的问题,所以如果您需要我提供有关其范围的更多信息,请告诉我。有一堆问题几乎解决了相同的问题(它们在此处链接),但从来没有完全相同的问题具有相同的范围和目标 - 至少据我所知。
语境:
我需要将 MP3 与数据库同步。意义:
系统可以找到的示例:
在数据库...
SONGS = {"This is a great song title", "This is a song title"}
ARTISTS = {"Michael Jackson"}
Run Code Online (Sandbox Code Playgroud)
输出...
"This is a grt song title" did you mean "This is a great song title" ?
"This is song title" did you mean "This is a song title" ?
"This si a song title" did you mean "This is a song title" ?
"This si song a title" did you mean "This is a song title" ?
"Jackson, Michael" did you mean "Michael Jackson" ?
"JacksonMichael" did you mean "Michael Jackson" ?
"Michael Jacksno" did you mean "Michael Jackson" ?
Run Code Online (Sandbox Code Playgroud)
等等。
我从这个/how-do-you-implement-a-did-you-mean 中阅读了一些文档,这并不是我所需要的,因为我不想检查整个字典。我也无法真正使用 Web 服务,因为它在很大程度上取决于我的数据库中已有的内容。如果可能的话,我也想避免处理距离和其他复杂的事情。
我可以使用google api(或类似的东西)来做到这一点,这意味着脚本将尝试拼写检查并使用数据库进行测试,但我觉得可能有更好的解决方案,因为我的数据库最终可能会变得非常具体歌曲和艺术家,使拼写检查无用。
我也可以尝试类似这篇文章中解释的内容,使用Soundex for c#。
使用普通的拼写检查器是行不通的,因为我不会使用单词,而是使用名称和“标题”。
所以我的问题是:有没有一种相对简单的方法来做到这一点,如果有,它是什么?
任何形式的帮助将不胜感激。
谢谢!
你想要的是相似度。本质上,您想要将您的输入(例如“Michael Jackson”)与您的预期值(“Michael Jackson”)进行比较;如果您对某个预期值的相似度值非常高,则可以询问用户。
实现此目的的一种方法是将期望值散列到完全打包的散列表中。如果你的哈希算法正确(是的,这是棘手的一点),每个输入都会哈希到最接近的期望值;一旦找到最接近的期望值,您就可以针对输入和该期望值运行相似性评估;如果超过某个阈值,请询问用户。