我正在寻找一种能够有效地将搜索字符串分成已知搜索短语数组的算法。例如,如果我输入“Los Angeles pizza”,它需要知道我在寻找“洛杉矶”和“披萨”,而不是“Los”和“Angeles pizza”。
这是一个专业的搜索应用程序,假设我有一个人们将使用的所有短语的字典。
答案 0 :(得分:0)
Google N-gram Corpus可用于确定最可能的短语分割。
对于相当短的短语,您可以生成短语可分为的所有可能的n-gram集合(例如["Los", "Angeles", "pizza"]
,["Los Angeles", "pizza"]
,["Los", "Angeles pizza"]
和{{1}对于你的示例短语),在语料库中查找它们,看看哪个出现的次数最多。 (考虑到语料库的大小,您可能需要将其加载到数据库而不是内存中的哈希表。)
编辑:根据事物的外观,它不是免费提供的。也许你可以使用一些类似的东西。如果没有,网站上肯定有文字库,你可以下载并用它来创建你自己的n-gram列表。