2010-06-02 8 views
7

Estoy pensando en un proyecto que podría utilizar una funcionalidad similar a cómo "Quick Add" maneja el análisis del lenguaje natural en algo que se puede entender con algún nivel de semántica. Estoy interesado en entender esto mejor y me pregunté cuáles eran sus pensamientos sobre cómo esto podría implementarse.¿Cómo crees que funciona la función "Agregar rápido" en Google Calendar?


Si no está familiarizado con lo que es "Adición rápida", echa un vistazo a Google's KB al respecto.


6/4/10 actualización
investigación adicional sobre "Lenguaje Natural de análisis" (PNL) produce resultados que son mucho más amplio que lo que siento que realmente está implementado en algo así como "Quick Add". Dado que esta característica espera tipos específicos de entrada en lugar del verdadero texto libre, creo que esta es una implementación mucho más limitada de NLP. Si alguien pudiera sugerir un tema de tema más restringido que pudiera investigar en lugar de toda la amplitud de la PNL, sería muy apreciado.

Dicho esto, he encontrado un buen collection of resources about NLP incluyendo este gran FAQ.

+0

Acaban de escribir un analizador inteligente, similar a [datejs] (http://www.datejs.com/) pero obviamente con más funciones. Dicho eso, gracias por compartir esto, es bastante útil. – Matt

Respuesta

0

Parecería que realmente no hay un enfoque estrecho para este problema. Quería evitar tener que utilizar toda la PNL para encontrar una solución, pero no encontré ninguna alternativa. Lo actualizaré si encuentro una gran solución más adelante.

+0

¿Alguna actualización? : 0) –

2

Comenzaría por decidir de una manera estándar para representar toda la información que me interesa: nombre del evento, hora de inicio/finalización (y fecha), lista de invitados, ubicación. Por ejemplo, podría utilizar una notación XML como esto:

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

que entonces estaría objetivo es construir un corpus de diario de notas sobre fechas, anotados con sus formularios XML. ¿Cómo puedo recolectar los datos? Bueno, si yo fuera Google, probablemente tendría todo tipo de formas. Como soy yo, probablemente comenzaría escribiendo todas las formas en que podría pensar para expresar este tipo de cosas, y luego anotándolo a mano. Si pudiera agregar esto revisando los correos electrónicos de amigos y demás, tanto mejor.

Ahora que tengo un corpus, puede servir como un conjunto de pruebas unitarias. Necesito codificar un analizador para que se ajuste a las pruebas. El analizador debe traducir una cadena de lenguaje natural a la forma lógica de mi anotación. Primero, debe dividir la cadena en sus palabras constituyentes. Esto se llama simbología, y hay disponible un software disponible para hacerlo. (Por ejemplo, vea NLTK.) Para interpretar las palabras, buscaría patrones en los datos: por ejemplo, el texto que sigue a 'at' o 'in' debería etiquetarse como una ubicación; 'por X minutos' significa que necesito agregar esa cantidad de minutos a la hora de inicio para obtener la hora de finalización. Los métodos estadísticos probablemente sean excesivos aquí; es mejor crear una serie de reglas codificadas a mano que expresen su propio conocimiento sobre cómo interpretar las palabras, frases y construcciones en este dominio.

+0

NLTK es un recurso fantástico y este enfoque parece similar a mi propio pensamiento. ¿Estaría al tanto de los kits de herramientas basados ​​en PHP que podría recomendar? Entiendo las limitaciones de PHP con respecto a la velocidad para realizar una operación tan compleja, pero estoy interesado en aprovechar HipHop (http://developers.facebook.com/blog/post/358) para resolver este desafío. – mikegreenberg

+0

Me temo que no sé nada. La siguiente entrada de blog sugiere que necesita lanzar su propia cuenta o saltar a través de aros para usar NLTK desde PHP. Aunque tiene un año y medio. http://www.akshatsinghal.com/content/natural-language-processing-php –

Cuestiones relacionadas