PeterM: *Intelligentes* Natural Language Processing fuer Termine

Taeglich investiere ich viele Minuten um die ganzen Mails & Info-Schnipsel in denen sich versteckt Ankuendigen, Termine etc. verbergen, in meinen Kalender einzutragen.

Bin ich wirklich der einzige und erste den das nervt? Ich habe eine umfangreiche Suche hinter mir aber nicht wirklich brauchbares dazu gefunden.

Ultimativ wuerde ich daher nach einer Library suchen, die aus Text Termine extrahieren kann. Das Stichwort ist dabei *intelligent*: Es soll nicht ueber irgendwelche billigen Parser Datum und Uhrzeit extrahiert werden sondern ueber maschinelle Lernalgorithmen kontextbezogen die wahrscheinlichsten Elemente fuer Titel, Ort, Uhrzeit und Dauer extrahiert werden.

Gibt es wirklich keine Library in diese Richtung oder bin ich zu blind?
Am besten waer natuerlich JavaScript, aber notfalls nimm' ich alles (C++, Java, ...) und im aeussersten Notfall wuerd ich sogar auf eine Online API zurueckgreifen ...

Technisch gesehen kann das heutzutage kein Thema mehr sein ...

  1. Es soll nicht ueber irgendwelche billigen Parser Datum und Uhrzeit extrahiert werden sondern ueber maschinelle Lernalgorithmen kontextbezogen die wahrscheinlichsten Elemente fuer Titel, Ort, Uhrzeit und Dauer extrahiert werden.

    <sarkasmus>Das wird sich ökonomisch (oekonomisch) nicht rechnen, weil dank Peter Hartz dem IV.  Arbeitskräfte (Arbeitskraefte) jetzt endlich so billig sind wie in den letzten 50 Jahren nicht mehr!</sarkasmus>

    Dein Problem ist so komplex wie die Sprache und damit komplexer als ein (1) menschliches Gehirn. Weil Eigenarten von mehreren Sendern berücksichtigt werden müssen. Vermutlich entsteht als mehr Korrektur- und Kontrollbedarf als Du jetzt denkst:

    Bedenke bitte, dass es in der menschlichen Sprache auch "Zeitangaben" gibt wie „Nach dem Krieg um sechs im Kelch!" die man durchaus unterschiedlich auffassen kann. Das kann ein Termin sein, das können mehrere sein, das können mehrerer mögliche sein. Auch Deine eigene Unsitte hinsichtlich der Umlaute führt z.B,. wenn man diese mit weiteren kombiniert, zu Problemen: 'nächster Mittwoch', 'naechster Mittwoch', 'na"chster Mittwoch', 'nachster Mittwoch', 'n. Mittw.' und alle Kombinationen müssten erkannt werden. Die Zuverlässigkeit eine solchen Programms dürfte sehr gering sein und in mit der Komplexität des Programms und dem Rechenaufwand negativ korrelieren. Was rauskommt bleibt immer nur eine Vermutung und es stellt sich die Frage nach dem Preis des Irrtums oder einer unterlassenen Korrektur.

    Selbst bei "teilweise strukturierten" Text, wird es Probleme geben. Schau mal in den Mails nach, wie oft z.B. das Subjekt einer Terminbenachrichtigung nichts mit der Veranstaltung gemeinsam hat.

    Eine denkbare Lösung könnte sein, den Text z.B. mit Copy & Paste in einer Oberfläche anzuzeigen, und mittels eines Kontextmenüs für eine Auswahl dessen Funktion (Titel, Ort, Beginn,...) wählbar zu machen und dann zu übernehmen. Das dürfte die angemessenste Lösung sein. Der von Dir erwähnte, nicht-intelligente "Parser" könnte dabei einige Items und auch die "Übernahme als" gemäß eines Regelsatzes anbieten.

    Jörg Reinholz

    1. Hi Joerg,

      Ich habe einige Computational Intelligence Lectures gehabt und weiss prinzipiell wie ich sowas bauen muss. Dafuer gibt es wie gesagt, neben stupiden, statischen Ersetzungsregeln (z.B. regex) viele aufwendige Algorithmen.

      Es ist mir vollstaendig klar dass das nicht immer 100% reliable ist, aber das ist nicht mein Anspruch. Ich schrieb ja: "wahrscheinlichsten Elemente". Und um das geht es bei diesen Algorithmen: Wahrscheinlichkeiten zu maximieren.

      Ich weiss prinzipiell wie ich so eine Library entwickeln wuerde. Klarerweise ist das aber eine riesen Aufgabe und je besser sie funktionieren soll, desto aufwendigere Algorithmen werden benoetigt und desto mehr Mannmonate/Jahre fliessen ein. Deswegen suche ich nach was fertigem.

      Eine denkbare Lösung könnte sein, den Text z.B. mit Copy & Paste in einer Oberfläche
      anzuzeigen, und mittels eines Kontextmenüs für eine Auswahl dessen Funktion (Titel, Ort,
      Beginn,...) wählbar zu machen und dann zu übernehmen.

      Danke, ich werde sowas in Betracht ziehen.

      Mein bisheriger Fund ist Knwl. Allerdings sind das stupide Regeln und zweitens fehlt mir am meisten den wahrscheinlichsten "Betreff" zu finden.

    2. Hi,

      führt [...] zu Problemen: 'nächster Mittwoch',

      Das ist an sich schon (abgesehen von der Schreibweise) nicht eindeutig.

      Wenn jemand am Montag sagt: "das machen wir nächsten Mittwoch", dann kommt ein Teil der Leute 2 Tage später (kein Mittwoch ist näher als der in 2 Tagen) und ein Teil 9 Tage (für die ist "nächster Mittwoch" der Mittwoch der nächsten Woche).

      Am Donnerstag ausgesprochen, kommen dann aber doch alle 6 Tage später ...

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
  2. Taeglich investiere ich viele Minuten um die ganzen Mails & Info-Schnipsel in denen sich versteckt Ankuendigen, Termine etc. verbergen, in meinen Kalender einzutragen. Bin ich wirklich der einzige und erste den das nervt?

    Bei MacOS gibt es seit Jahren die Data Detectors, die diverse Textbestandteile erkennen und oftmals praktische Popups oder andere Möglichkeiten dazu bieten. Hier z.b. ein erkanntes Event samt Popup im Mailprogramm:

    Ultimativ wuerde ich daher nach einer Library suchen, die aus Text Termine extrahieren kann. Das Stichwort ist dabei *intelligent*:

    Superintelligent ist wie Jörg sagt, halt schwierig. Man muss nicht nur den Text verstehen, sondern auch den Kontext. Wer ist „Wir“ in „Wir treffen uns“? Ist das ein Städtename oder was ganz anderes? Man weiß es nicht.

    Allerdings so aus der Praxis: Man kommt mit etwa wie obigen (NSDataDetector scheint sogar nur Regexp-basiert zu sein) sehr weit.

    Gibt es wirklich keine Library in diese Richtung oder bin ich zu blind?

    Hm. Mir kam das Thema in den letzten Jahren immer wieder durch den Feedreader, ausgelöst u.a. auch durch alternative Eingabemethoden wie Fantastical, die noch mehr als Apple selber parsen. Und ich glaube nicht, dass so etwas auf eine Platform beschränkt ist; schließlich gucken die meisten Softwarehersteller, was sich lohnt, zu raubmordkopieren. GMail z.B. hat das seit letzten Jahr auch eingebaut und ich kann mir schlecht vorstellen, dass etwas kombiniertes wie Outlook das nicht auch haben sollte.

    Am besten waer natuerlich JavaScript, aber notfalls nimm' ich alles (C++, Java, ...) und im aeussersten Notfall wuerd ich sogar auf eine Online API zurueckgreifen ...

    Ich kenne das unter dem Stichwort natural language (date) parsing und die Suche danach gibt schon auf der ersten Seite Ergebnisse in Ruby, Java, .NET und Diskussionen, in denen man vermutlich sehr viel mehr findet.