我正在开发一个允许将导入的文件本地化为其他语言的系统。
这主要是一个私人项目,用于掌握 MVC3、EntityFramework、LINQ 等。因此,我喜欢做一些疯狂的事情来为最终结果增添趣味,其中之一就是识别相似的字符串。
想象一下,您有以下字符串列表 - 从我过去使用过的游戏中借来的:
- Megabeth:Holy Roller 制服 - 包括头部、躯干和腿部
- Megabeth:神圣滚轮制服头
- Megabeth:Holy Roller 制服腿
- Megabeth:Holy Roller 制服躯干
- Megabeth:PAX East 2012 制服 - 包括头部、躯干和腿部
- Megabeth:PAX East 2012 制服主管
- Megabeth:PAX East 2012 制服腿
- Megabeth:PAX East 2012 制服躯干
如您所见,一旦用户翻译了前 4 个字符串,以下 4 个字符串有很多相似之处,在本例中:
- 梅加贝丝
- 制服
- 包括头部、躯干和腿部
- 头
- 腿
- 躯干
考虑前 4 个字符串确实已经翻译,当用户从列表中选择第 5 个字符串时,我可以使用哪种算法或技术在“类似”的子标题下向用户显示第一个字符串(以及可能的其他字符串)字符串”?
编辑 - 对 Levenshtein 距离的一点评论:我目前的目标是数据库中的 10k 个字符串。Levenshtein Distance 比较每个字符串的字符串,因此在这种情况下有 10k x (10k -1) 个可能的组合。我将如何以可行的方式解决这个问题?有没有比这个特定算法更好的解决方案?