Mi proyecto de aplicación Web actual exige un poco de la PNL:PNL básico en CoffeeScript o JavaScript: tokenización de Punkt, modelos de Bayes entrenados simples: ¿por dónde empezar?
- texto Tokenización en oraciones, a través de Punkt y similares;
- El desglose de las frases más largas de oración subordinada (a menudo está en comas, excepto cuando no lo es)
- Un ajuste del modelo bayesiano para fragmentar los párrafos con un incluso sentir, no hay huérfanos o viudas y escisiones incómodas mínimas (quizás)
... que gran parte de eso es una tarea infantilmente fácil si tienes NLTK - lo que hago, más o menos: el backend de la aplicación es Django en Tornado; pensarías que hacer estas cosas no sería un problema.
Sin embargo, tengo que proporcionar de forma interactiva los comentarios del usuario para los que se necesitan los tokenizadores, así que tengo que hacer tokenizar los datos del lado del cliente.
Ahora mismo, en realidad soy usando NLTK, a través de una llamada REST API a un proceso Tornado que ajusta la función NLTK y poco más. Por el momento, cosas como latencia y concurrencia son obviamente subóptimas sin este servicio ad-hoc, por decirlo cortésmente. Creo que lo que debería hacer es ponerle manos a la obra en las versiones Coffee/Java de esta función, si no la voy a volver a implementar yo mismo.
Y entonces, por lo que he visto, JavaScript no se ha considerado genial el tiempo suficiente para haber acumulado la biblioteca de propósito general schmorgasbörd no específica de la web que se puede encontrar en C o Python (o incluso Erlang). NLTK por supuesto es un proyecto destacado por la medida de Anyones, pero solo necesito un pequeño porcentaje de lo que está empacando.
Pero lo que ahora estoy en una encrucijada - Tengo que doblar en cualquiera de los dos:
- El “aprendizaje científico técnica de ajuste JavaScript para reimplementar algoritmos Soy amigos de Facebook con al mejor” plan, o:
- Lo menos interesante pero más determinísticamente posible "conformarse con tokenizar por cable, pero sobrecompensar por la escasez de velocidad y programación interesante: asegurar un UX libre de beachball al elevar una llamada de función a un modelo robusto de arquitectura de servicio a escala web , haciendo que Facebook se vea como la opción de Google+.
O algo completamente distinto. ¿Que debería hacer? Me gusta comenzar las cosas. Esta es mi pregunta. Estoy abierto a soluciones que impliquen un enfoque atípico: siempre que su recomendación no sea desagradable (por ejemplo, "use Silverlight") y/o un vórtice de tiempo (por ejemplo, "obtenga un doctorado en lingüística computacional, troglodita"), soy un juego. Gracias de antemano.
Otra cosa que olvidé mencionar que podría tener en cuenta una solución JavaScripty del cliente: NLTK, al igual que otros modelos estadísticos que he encontrado, a menudo necesita sentarse encima de una pila gigante de datos de entrenamiento para trabajar (el tokenizador Punkt I ' m using tiene tal requerimiento) ... Podría estar equivocado al respecto (de hecho, sería bueno), pero entonces obvi una solución en la que el cliente tiene que d/la corpus no es posible aquí. – fish2000