我有一个场景,用户可以通过表单字段发布大量的回复或短语。我希望能够做出回应并确定他们要求的内容。例如,如果用户输入汽车,火车,自行车,喷气式飞机......我可以假设他们正在谈论车辆,并做出相应的响应。我知道我可以使用switch语句或者也可以使用regexp,但是可能的响应数越多,计算效率就越低。我想知道是否有一种有效的算法来比较字符串和一组字符串。任何信息都会很棒。
答案 0 :(得分:3)
如果您有大量“魔术”字样,我建议将查询拆分为单词,并使用基于散列的查找来检查单词是否被识别。
答案 1 :(得分:2)
您可能需要查看 Aho-Corasick algorithm 。如果你有一个你想要搜索的字符串集合,你可以花费线性时间对这些字符串进行预处理,从那时起,可以在O(n)时间内检查文本语料库中这些字符串的所有可能匹配长度n。换句话说,只需很少的预处理时间来设置算法一次,您就可以非常有效地一次又一次地扫描多个输入,然后再搜索这些关键字。
有趣的是,该算法专门用于构建快速索引(即在大量文本中查找大量不同的关键字),据称其表现优于其他方法十倍。我认为它在你的应用程序中会很有用。
希望这有帮助!
答案 2 :(得分:0)
您可以查看Trie结构。我认为是解决问题的最佳解决方案之一。