L'estensione di JChronic potrebbe essere la soluzione migliore. Penso che, date le risposte a this question, è improbabile che esista una libreria pre-costruita (anche se sembra che una cosa del genere possa essere utile ... Immagino che i principali casi d'uso per analizzare le date in linguaggio naturale sarebbero essere ancora più utile se avessero la possibilità di estrarre dati aggiuntivi dalle stringhe fornite dall'utente).
Per quanto riguarda l'implementazione, probabilmente la cosa più semplice da fare è estendere JChronic, poiché supporta una parte piuttosto significativa del caso d'uso, ma più informazioni estranee su as you can see from the unit test devono essere ignorate dal framework. Fortunatamente, se si guarda allo the main class, non dovrebbe essere troppo difficile estendere/modificare/avvolgere il metodo parse() per supportare uno scanner personalizzato per un titolo di evento. (La mia preferenza sarebbe quella di avvolgere il framework piuttosto che fork e modificarlo, in quanto ciò consente di beneficiare più facilmente di eventuali miglioramenti al codice sottostante).
In definitiva, ciò che potrebbe rivelarsi il modo più diretto per farlo è generare un regex-parser che ignori la maggior parte di ciò che JChronic tenta di acquisire (e ciò significherebbe acquisire profonda familiarità con il codice sorgente di JChronic).
La chiave per implementare con successo questo, come con qualsiasi progetto di tipo NLP, è avere tanti esempi che è possibile ottenere, preferibilmente come test di unità automatizzate (in definitiva, anche se i test test duplicano la stessa funzionalità molte volte , è meglio avere più esempi che meno). Fortunatamente, dal momento che stiamo parlando di linguaggio naturale, questi casi di test dovrebbero essere particolarmente facili da ottenere, dal momento che anche gli amici non programmatori, i familiari, ecc. Dovrebbero essere in grado di fornirti "descrizioni degli eventi" (o qualsiasi altra cosa tu voglia chiamare loro). Dovrai anche concentrarti sui casi limite in cui il bit di parsing della data potrebbe interferire con il bit di parsing location/title (ad esempio in "sigur rós alle 8pm" il "at" è chiaramente parte del tempo mentre in "party" al sabato di phoebe "chiaramente non lo è).
Mi rendo conto di aver parlato un po 'di JChronic, ma ritengo che sia una scelta naturale per il tuo problema poiché copre già gran parte della "parte difficile" dell'analisi degli "appuntamenti" in lingua naturale, ovvero la confusione di il nostro linguaggio che usiamo sul tempo, ed è già implementato nella lingua che stai studiando.
possibile duplicato del [data di linguaggio naturale e l'ora parser per Java] (http://stackoverflow.com/questions/1410408/natural-language-date-and-time-parser-for-java) – nawfal