Определение языка для очень короткого текста
Я создаю приложение для определения языка коротких текстов, в среднем < 100 символов и содержит сленг (например, твиты, пользовательские запросы, смс).
Все библиотеки, которые я тестировал, хорошо работают для обычных веб-страниц, но не для очень короткого текста. Библиотека, которая дает наилучшие результаты, - это библиотека Chrome Language Detection (CLD), которую я должен был создать как общую библиотеку.
CLD терпит неудачу, когда текст состоит из очень коротких слов. Посмотрев на исходный код CLD, я вижу, что он использует 4 грамма, так что это может быть причиной.
Подход, о котором я сейчас думаю, чтобы улучшить точность:
- Удалить названия брендов, номера, URL-адреса и такие слова, как "программное обеспечение", "скачать", "Интернет"
- Используйте словарь, когда текст содержит несколько коротких слов над тройкой или когда он содержит слишком мало слов.
- Словарь создан из новостных статей Википедии + словарей Hunspell.
Какой набор данных наиболее подходит для этой задачи? И как я могу улучшить этот подход?
До сих пор я использую статьи EUROPARL и Wikipedia. Я использую NLTK для большей части работы.
3 ответа
Определение языка для очень коротких текстов является темой текущего исследования, поэтому не может быть дан окончательный ответ. Алгоритм для данных Twitter можно найти в Carter, Tsagkias и Weerkamp 2011. Смотрите также ссылки там.
Да, это тема исследования, и был достигнут определенный прогресс.
Например, автор "определения языка" по адресу http://code.google.com/p/language-detection/ создал новые профили для коротких сообщений. В настоящее время он поддерживает 17 языков.
Я сравнил его с Bing Language Detector, собрав около 500 твитов, в основном на английском и испанском языках. Точность заключается в следующем:
Bing = 71.97%
Language-Detection Tool with new profiles = 89.75%
Для получения дополнительной информации вы можете проверить его блог: http://shuyo.wordpress.com/2011/11/28/language-detection-supported-17-language-profiles-for-short-messages/
Также опустите научные названия или названия лекарств и т. Д. Ваш подход мне кажется вполне подходящим. Я думаю, что википедия - лучший вариант для создания словаря, поскольку он содержит стандартный язык. Если у вас нет времени, вы также можете использовать газеты.