Мой текущий проект веб-приложения требует небольшого НЛП:
- Токенизация текста в предложения с помощью Punkt и подобных;
- Разбивка более длинных предложений по придаточным предложениям (часто с запятыми, за исключением случаев, когда их нет)
- Байесовская модель, подходящая для разделения абзацев на куски с равномерным ощущением, без сирот или вдов и минимальными неудобными разбиениями (возможно)
... что по-детски просто, если у вас есть NLTK — что я и делаю, что-то вроде: серверная часть приложения — Django на Tornado; вы могли бы подумать, что выполнение этих вещей не будет проблемой.
Тем не менее, я должен в интерактивном режиме предоставить отзывы пользователей, для которых необходимы токенизаторы, поэтому мне нужно токенизировать клиентскую часть данных.
Прямо сейчас я фактически использую NLTK через вызов REST API к процессу Tornado, который обертывает функцию NLTK, и немного больше. На данный момент такие вещи, как задержка и параллелизм, явно неоптимальны с этой специальной службой, мягко говоря. Что я должен сделать, я думаю, так это получить в свои руки версии этой функции для Coffee/Java, если не реализовать ее самостоятельно.
И, тем не менее, из того, что я видел, JavaScript не считался крутым достаточно долго, чтобы накопить не только веб-специфическую, универсальную библиотеку schmorgasbörd, которую можно найти в C или Python (или даже Erlang). NLTK, конечно, является выдающимся проектом по всем меркам, но мне нужно только несколько процентов того, что он упаковывает.
Но теперь я на распутье — я должен удвоить ставку:
- План «Изучение научной техники JavaScript, пригодной для повторной реализации алгоритмов, с которыми я в лучшем случае дружу на Facebook», или:
- Менее интересные, но более детерминистически выполнимые «соглашаются на токенизацию по сети, но компенсируют нехватку скорости и интересности программирования — обеспечьте UX без пляжного мяча, возвысив вызов функции до высокопроизводительного образца веб-сервисной архитектуры, делая Facebook выглядит как Google+».
Или что-то совсем другое. Что я должен делать? Нравится начинать. Это мой вопрос. Я открыт для решений, связанных с нетипичным подходом — до тех пор, пока ваша рекомендация не вызывает отвращения (например, «используйте Silverlight») и/или временного вихря (например, «получите докторскую степень по компьютерной лингвистике, вы троглодит»), я готов. Заранее спасибо.