2010-06-02 3 views
7

Sto pensando a un progetto che potrebbe utilizzare funzionalità simili a come "Aggiunta rapida" gestisce l'analisi del linguaggio naturale in qualcosa che può essere compreso con un certo livello di semantica. Sono interessato a capirlo meglio e mi chiedo quali sono stati i tuoi pensieri su come questo potrebbe essere implementato.Come pensi che funzioni la funzione "Aggiunta rapida" in Google Calendar?


Se si ha familiarità con ciò che "Aggiunta veloce" è, controlla Google's KB su di esso.


6/4/10 Aggiornamento
Ulteriori ricerche sul "linguaggio naturale Parsing" (NLP) produce risultati che sono molto più ampio di quello che sento è effettivamente implementata in qualcosa come "Aggiunta veloce". Dato che questa funzione si aspetta tipi specifici di input piuttosto che il vero testo in formato libero, penso che questa sia un'implementazione molto più stretta della PNL. Se qualcuno potesse suggerire argomenti di argomento più ristretti che potrei ricercare piuttosto che l'intera larghezza della PNL, sarebbe molto apprezzato.

Detto questo, ho trovato un bel collection of resources about NLP compreso questo ottimo FAQ.

+0

Hanno appena scritto un parser intelligente, simile a [datejs] (http://www.datejs.com/) ma ovviamente con più funzionalità. Detto questo .. grazie per aver condiviso questo, è abbastanza utile. – Matt

risposta

0

Sembrerebbe che non ci sia davvero un approccio ristretto a questo problema. Volevo evitare di dover trascinare tutta la PNL per trovare una soluzione, ma non ho trovato alcuna alternativa. Aggiornerò questo se trovo una soluzione davvero fantastica in seguito.

+0

eventuali aggiornamenti? : 0) –

2

Vorrei iniziare decidendo un modo standard per rappresentare tutte le informazioni a cui sono interessato: nome dell'evento, ora di inizio/fine (e data), elenco degli ospiti, posizione. Ad esempio, potrei usare una notazione XML come questo:

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

avrei poi lo scopo di costruire un corpus di diario circa le date, annotati con le loro forme di XML. Come posso raccogliere i dati? Beh, se fossi Google, probabilmente avrei tutti i tipi di modi. Dato che sono io, probabilmente comincerei scrivendo tutti i modi in cui potrei pensare per esprimere questo tipo di cose, quindi annotarle a mano. Se potessi aggiungere a questo passando attraverso le e-mail degli amici e quant'altro, tanto meglio.

Ora ho un corpus, può servire come una serie di test unitari. Devo codificare un parser per adattarlo ai test. Il parser dovrebbe tradurre una stringa di linguaggio naturale nella forma logica della mia annotazione. In primo luogo, dovrebbe dividere la stringa nelle sue parole costituenti. Questo è chiamato tokenising e c'è un software disponibile a disposizione per farlo. (Ad esempio, vedere NLTK.) Per interpretare le parole, cercherei i pattern nei dati: ad esempio, il testo che segue "at" o "in" dovrebbe essere contrassegnato come posizione; "per X minuti" significa che devo aggiungere quel numero di minuti all'orario di inizio per ottenere l'ora di fine. I metodi statistici sarebbero probabilmente eccessivi qui - è meglio creare una serie di regole codificate a mano che esprimono la tua conoscenza di come interpretare le parole, le frasi e le costruzioni in questo dominio.

+0

NLTK è una risorsa fantastica e questo approccio mi sembra simile al mio stesso pensiero! Saresti a conoscenza di tutti i toolkit basati su PHP che potresti raccomandare. Comprendo i limiti di PHP relativi alla velocità per eseguire un'operazione così complessa, ma sono interessato a sfruttare HipHop (http://developers.facebook.com/blog/post/358) per risolvere questa sfida. – mikegreenberg

+0

Ho paura di non sapere nulla. Il seguente post sul blog suggerisce che è necessario eseguire il rollover o saltare attraverso i loop per utilizzare NLTK da PHP. È un anno e mezzo vecchio, però. http://www.akshatsinghal.com/content/natural-language-processing-php –

Problemi correlati