Как отличить «слово» от бессмысленного набора символов?
Здравствуйте.
Ребята, подскажите пожалуйста, какие инструменты (без привязки к языкам программирования) можно применить для определения того, что введенные символы являются словом, а не бессмысленным набором символов "влдатдукывта вызвтк".
Перебор заготовленных ранее словарей не является решением задачи.
И ещё один вопрос. Можно ли здесь использовать Теорию вероятностей?
вообще задача решается перебором подготовленных ранее корпусов
но если хочется алгоритмов:
1) частота букв в языке ( канает при больших текста)
2) сочетания букв в языке (канает для почти даже слов)
естественно, оба варианта проигрывают корпусам
Есть идея проверить через подсчёт весов возможностей языка по N-граммам:
1. Кол-во N-грамм невозможностей буквосочетаний языка.
2. Кол-во N-грамм возможностей буквосочетаний языка.
Если п.1 - "<=33%" (почему не 0: допуск на ошибку в слове) и п.2 - ">=67%" - это слово.
Иначе - нет.
Самый простой способ, пришедший на ум.
Представить слово как цепь Маркова (это именно что теорвер). Вероятности перехода есть в знаменитой книге Жельникова (да и не только там, я уверен).
Затем высчитываем вероятность пройти в цепи Маркова именно по этому пути. Если вероятность слишком мала — точно рандомный набор символов.
Без заготовленных ранее словарей никуда — например, слова «Шымкент» или «парашют» с «невозможными» буквосочетаниями (их вероятность в ЦМ будет, разумеется, нулевая).