Dev

Facebook explains why it used natural language to compete with Google search

Facebook’s Graph Search is the company’s big bid to compete against the likes of Google, Yelp, and LinkedIn with people-powered, connections-based search. And interestingly enough, even though its machines run on a deep understanding of nodes and edges that bind all of humanity and our habitats into an enormous web, its front end has to handle very human language.

Google has for the past decade or two been training us to search with keywords rather than natural phrases. For example, a Google web search might read “bookstore Alamogordo wifi coffee” rather than “What bookstores in Alamogordo have free Wi-Fi and serve coffee?”

But Facebook, as engineers Xiao Li and Maxime Boucher note today on the company blog, takes a different approach. [See full post embedded below.]

The Graph Search team iterated over possible query interfaces at the early stage of this project. There was consensus among the team that a keyword-based system would not be the best choice because ofthe fact that keywords, which usually consist of nouns or proper nouns, can be nebulous in their intent. For example, “friends Facebook” can mean “friends on Facebook,” “friends who work at Facebook Inc.,” or “friends who like Facebook the Page.” Keywords, in general, are good for matching objects in the graph but not for matching connections between the objects. A query built on keywords would fail in cases where a user needs to precisely express intent in terms of both nodes and edges in the graph.The team also toyed with the idea of form-filling augmented by drop-down filters. However, because of all the possible options you could search for in Facebook’s data, this would easily lead to an interface of hundreds of filters. In mid-2011, the team converged around the idea of building a natural language interface for Graph Search, which we believe to be the most natural and efficient way of querying the data in Facebook’s graph.

The post goes into further detail about parse trees, which basically conjugate a natural language query, separating it into usable data and a stack for when and where to search for which terms; the flexibility of natural language search via lexical analysis; entity detection; and semantic parsing.

It’s a hefty but satisfying read for those interested in the future and present realities of the technology behind all kinds of evolving search.

Facebook natural language engineering

0 comments