4 Stimmen

Wie würden Sie vorgehen, um einen Parser ähnlich der Facebook Graph Search zu schreiben?

Ich habe ziemlich viele Artikel gelesen, die ein wenig Hintergrundinformationen darüber geben, wie Facebook ihre Graphensuche implementiert hat. Alle scheinen jedoch nur die tatsächlichen Implementierungsdetails des Parsers zu überfliegen, den sie verwenden.

Zum Beispiel https://www.facebook.com/notes/facebook-engineering/under-the-hood-building-graph-search-beta/10151240856103920

Von dieser Seite:

Wir haben verschiedene Analysetechniken kombiniert, um einen Teilstringsparser zu erstellen: Angenommen, ein Benutzer gibt beispielsweise "Freunde New York" ein und wir haben eine umfassende Liste aller potenziellen Seitentitel definiert, die unser System verarbeiten kann. Unser Parser könnte dann genau die Graphensuchtitel generieren, die die Eingabe des Benutzers enthalten, darunter Dinge wie "Freunde, die in New York leben" und "Freunde, die New York besucht haben." Wenn wir einen Weg finden könnten, diese vorgeschlagenen Titel für die Graphensuchfunktion angemessen zu bewerten, hätten wir einen guten Start.

Ich bin wirklich daran interessiert, zu erfahren, welche Methoden man verwenden würde, um dieses Problem anzugehen. Welcher Algorithmus / welche Techniken würden verwendet werden, um ein solches System zu schreiben?

Links würden auch sehr geschätzt werden.

1voto

abipc Punkte 997

Ich habe darüber nachgedacht, etwas Ähnliches umzusetzen... wollte hier auf SO eine Frage stellen und fand heraus, dass diese bereits gestellt wurde...

Hier ist, was ich mir überlegt habe, um anzufangen -

  1. Angenommen, die Facebook-Suchmaschine "weiß" über den zugrunde liegenden Datenspeicher Bescheid (einem komplexen Graphen). Die Suchmaschine versteht also Schlüsselwörter wie "Freunde", "Verwandte" und andere solche Beziehungen und behandelt sie nicht wie ein triviales Wort in der englischen Sprache.

  2. In einem solchen Fall könnte es eine gute Idee sein, die Benutzereingabe (unter Verwendung von clientseitigem JavaScript) in ein JSON zu zerlegen und an die Suchmaschine zu senden... ein paar Vorteile... die Zerlegung kann auf der Client-Seite erfolgen, Bandbreite sparen, indem keine unnötigen Daten gesendet werden, Serverseitige Handhabung für die zerlegte Eingabe als JSON ist viel besser... usw.

  3. Nennen wir dieses JSON fbJSON... denn abgesehen davon, dass es ein JSON ist... entspricht es einem bestimmten Format... Sie können eine Spezifikation für Ihr Format erstellen... so dass das an die Suchmaschine übermittelte JSON zwangsläufig einige Informationen enthält... dies kann das Leben etwas leichter machen... so wie wir GeoJSON haben usw.

  4. Verwenden Sie ein NLP-Programm, um die Benutzereingabe in fbJSON zu zerlegen [hier muss ich noch darüber nachdenken]

Dies ist ein grober Ansatz, mit dem ich beginne... der einzige Engpass ist Punkt #4... weil ich nicht viel Erfahrung mit NLPs habe...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X