Сведения о вопросе

None

11:56, 11th August, 2020

Определение языка текста

Просмотров: 251   Ответов: 2

Исходные данные: есть сотни тысяч небольших текстов, написанных на всех известных науке языках.
Цель: оставить только те из текстов, которые написаны на русском или английском языке, остальные отбросить.

Как делаю сейчас:
1. С помощью PCRE выкидываю из текста всё, кроме букв (\p{^L}).
2. Так же убираю русские и английские буквы ([а-яa-z]).
3. Если что-то осталось — считаю текст не русским и не английским, соответственно отбрасываю.

В текущем раскладе есть как false positive так и false negative ошибки, это расстраивает.
Первые: в немецком или французском, например, тексте, может по несчастливой случайности не быть ни одного умляута и он посчитается английским.
Вторые: в корректном русском или анлийском тексте может встретиться какое-нибудь, например, имя собственное с умляутом, либо цитата из других языков — текст будет ошибочно отброшен.

Вопрос: не говоря о стопроцентном распознавании языка (оставим это экспертным системам и прочему ИИ), есть ли возможность снизить число ошибок распознавания? Интересуют готовые библиотеки (PHP, perl) / публичные веб-сервисы либо алгоритм, который достаточно прост в имплементации.



  Сведения об ответе

crush

00:55, 5th August, 2020

1. Для небольших текстов 100% распознавание невозможно будет в принципе.
2. Для улучшения распознавания надо делать экспертную систему с базой слов и с частотами различных языков.

Но возможно получится воспользоваться Google переводчиком с помощью API или еще каким-нибудь.

Обзор определителей языков есть здесь. Может быть у некоторых есть API.


  Сведения об ответе

прога

12:49, 18th August, 2020

Можно сравнивать частотный характеристики текстов.

www.statsoft.ru/home/portal/exchange/textanalysis.htm

как видно — одни и те же буквы в разных языках используются с разной частотой — за счёт этого можно улучшить распознавание языка. И отделять, казалось бы неотделимые =) (при достаточном объёме текста, конечно же)


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться