如何编写类似于Facebook Graph Search的解析器?

4
我已经阅读了很多关于Facebook如何实现其Graph Search的背景信息的文章。但所有这些文章似乎都只是粗略地概述了他们使用的解析器的实际实现细节。
例如https://www.facebook.com/notes/facebook-engineering/under-the-hood-building-graph-search-beta/10151240856103920 从该页面中可以看到:
我们结合了各种解析技术来构建一个子字符串解析器:假设用户输入“friends New York”,并且我们已经定义了系统可以处理的所有潜在页面标题的全面集合。然后,我们的解析器可以生成包含用户输入的Graph Search标题,包括诸如“住在纽约的朋友”和“曾经访问过纽约的朋友”之类的内容。如果我们能找到一种适当的方法来为Graph Search typeahead适当地排名这些建议的标题,那么我们就有了一个良好的开端。
我真的很想了解解决此问题所需使用的方法。哪些算法/技术将用于编写这样的系统?
也非常感谢任何链接。

我也在寻找一些链接,就像你(提问)一样.. 但是没有找到太多帮助.. - abipc
1个回答

1

我在考虑实现类似的东西... 想在SO上问问Q,结果发现这个问题已经被问过了...

以下是我一开始想要尝试的内容 -

  1. 假设Facebook搜索引擎“知道”底层数据存储(一个复杂的图形)。 因此,搜索引擎理解关键词,如“朋友”,“亲戚”和其他这样的关系,并不把它们当作英语中的琐碎单词。

  2. 在这种情况下,一个好主意是使用客户端JavaScript将用户输入解析为JSON并发送到搜索引擎...有几个好处...解析可以在客户端完成,通过不发送不需要的数据来节省网络带宽,处理解析后的JSON的服务器端更好..等等

  3. 让我们称这个JSON为fbJSON...因为除了是JSON之外,它还遵循某种格式...您可以为您的格式创建规范..使得发送到搜索引擎的JSON必须包含某些信息..这可以使生活变得更加容易..就像我们有geoJSON等一样。

  4. 使用NLP程序将用户输入解析为fbJSON [我仍然需要考虑这个]

我正在采取的是一种广泛的方法..唯一的瓶颈是第四点..因为我没有太多的NLP经验..


1
喜欢这种思考方式,感觉很有道理。后来我找到了另一个问题http://stackoverflow.com/questions/14873680/facebook-graph-search-information-retrieval-algorithm?rq=1,其中有一个不错的答案也可能对我有所帮助。但你看起来比我进展得更快! - Johann du Toit

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