2010-06-02 4 views
7

Ich denke über ein Projekt nach, das ähnliche Funktionen wie "Quick Add" verwenden könnte, um die natürliche Sprache in etwas zu übersetzen, das mit einer gewissen Semantik verstanden werden kann. Ich bin daran interessiert, dies besser zu verstehen, und habe mich gefragt, was Ihre Gedanken darüber waren, wie dies umgesetzt werden könnte.Wie funktioniert die Funktion "Quick Add" in Google Kalender?


Wenn Sie nicht vertraut mit dem, was "Quick Add" ist Besuche Google's KB darüber.


6/4/10 aktualisieren
Weitere Forschung auf "Natural Language Parsing" (NLP) liefert Ergebnisse, die als viel breiter sind, was ich fühle mich tatsächlich in so etwas wie "Quick Add" implementiert ist. Angesichts der Tatsache, dass diese Funktion bestimmte Eingabearten und nicht den echten Freiformtext erwartet, denke ich, dass dies eine sehr viel engere Implementierung von NLP ist. Wenn jemand ein engeres Thema vorschlagen könnte, das ich erforschen könnte, anstatt die ganze Bandbreite von NLP, würde es sehr geschätzt werden.

Das sagte, ich habe eine schöne collection of resources about NLP einschließlich dieser großen FAQ gefunden.

+0

Sie haben einfach einen cleveren Parser geschrieben, ähnlich wie [datejs] (http://www.datejs.com/), aber offensichtlich mit mehr Funktionen. Mit dem gesagt .. danke für das Teilen, es ist ziemlich praktisch. – Matt

Antwort

0

Es scheint, dass es keine enge Annäherung an dieses Problem gibt. Ich wollte vermeiden, dass ich das gesamte NLP mitnehmen musste, um eine Lösung zu finden, aber ich habe keine Alternative gefunden. Ich werde dies aktualisieren, wenn ich später eine wirklich gute Lösung finde.

+0

jedes Update? : 0) –

2

Ich würde damit beginnen, mich für eine Standardmethode zu entscheiden, die alle Informationen darstellt, an denen ich interessiert bin: Ereignisname, Start-/Endzeit (und Datum), Gästeliste, Standort. Zum Beispiel könnte ich eine XML-Notation wie folgt verwenden:

<event> 
    <name>meet Sam</name> 
    <starttime>16:30 07/06/2010</starttime> 
    <endtime>17:30 07/06/2010</endtime> 
</event> 

Ich würde dann eine Sammlung von Tagebucheinträge über Termine kommentierten aufzubauen zielen mit ihren XML-Formulare. Wie würde ich die Daten sammeln? Nun, wenn ich Google wäre, hätte ich wahrscheinlich alle möglichen Wege. Da ich ich bin, würde ich wahrscheinlich damit beginnen, alle denkbaren Arten aufzuschreiben, um so etwas auszudrücken, und dann mit der Hand kommentieren. Wenn ich dazu noch die E-Mails meiner Freunde hinzufügen könnte, um so besser.

Jetzt habe ich einen Korpus, kann es als eine Reihe von Unit-Tests dienen. Ich muss einen Parser codieren, um die Tests zu passen. Der Parser sollte eine natürliche Zeichenfolge in die logische Form meiner Anmerkung übersetzen. Erstens sollte es die Zeichenfolge in die einzelnen Wörter aufteilen. Dies wird als Tokenisierung bezeichnet, und dafür gibt es Software von der Stange. (Siehe zum Beispiel NLTK.) Um die Wörter zu interpretieren, würde ich nach Mustern in den Daten suchen: zum Beispiel sollte Text, der auf 'at' oder 'in' folgt, als ein Ort markiert werden; "Für X Minuten" bedeutet, dass ich die Anzahl der Minuten zur Startzeit hinzufügen muss, um die Endzeit zu erhalten. Statistische Methoden wären hier vermutlich zu viel - es ist am besten, eine Reihe von handcodierten Regeln zu erstellen, die Ihre eigenen Kenntnisse darüber ausdrücken, wie man die Wörter, Sätze und Konstruktionen in diesem Bereich interpretiert.

+0

NLTK ist eine fantastische Ressource und dieser Ansatz ähnelt meinem eigenen Denken! Wären Sie sich der PHP-basierten Toolkits bewusst, die Sie empfehlen können? Ich verstehe die Einschränkungen von PHP in Bezug auf Geschwindigkeit, um solch eine komplexe Operation durchzuführen, bin aber daran interessiert, HipHop (http://developers.facebook.com/blog/post/358) zu nutzen, um diese Herausforderung zu lösen. – mikegreenberg

+0

Ich fürchte, ich weiß nichts. Der folgende Blogeintrag schlägt vor, dass Sie entweder selbst rollen müssen oder durch Reifen springen müssen, um NLTK von PHP zu verwenden. Es ist aber eineinhalb Jahre alt. http://www.akshatsinghal.com/content/natural-language-processing-php –