Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Ivan Storogev                        2:5020/400     10 Jun 2002  09:04:14
 To : dmitry chernokozov
 Subject : Re: кодировка
 -------------------------------------------------------------------------------- 
 
 Привет dmitry,
 
 Sunday, June 9, 2002, 11:13:14 PM, вы писали:
 
 dc> Как можно определить кодировку текста ? Если есть чистый текст (для простоты
 dc> строка слов) из русских символов, которые могут быть в 866/1251/koi8/iso.
 
 Строка слов как раз усложняет, а не упрощает задачу. Куда проще, если не
 строка, а килобайт несколько.
 
 dc> Интересуют методы подобного определения. Hасколько я понимаю можно банально
 dc> перебирать слова по словарю (но это долго), а можно воспользоваться
 dc> лингвистикой (в ней я не силен). Может есть у кого примеры (желательно на
 dc> c)?
 
 Проще всего воспользовать статистикой встречаемости в реальных текстах букв.
 Для  набора  статистики  воспользоваться  любой  подборкой осмысленных текстов.
 Для коротких текстов этот метод будет давать ошибки. Для тестов из 10-15 букв
 (2-4 слова) вовсе работать не будет. По скорости самый быстрый.
 
 Более  эффективный  метод  --  это  статистика  не  одиночных букв, а их
 коротких (2-4) последовательностей (диграфы, триграфы), при этом нужно учитывать
 как букву и начало/конец слова.
 Тут  важно,  что  многие  сочетания  букв в русском (и любом другом) языке не
 встречаются,  поэтому  можно  принимать  решение методом исключения. Это дает
 возможность засечь многократно перекодированный и испорченный текст.
 Для  двойных  неправильных  перекодировок  (KOI8, перекодированный как 1251 и
 т.п.) нужно заранее составить статистические таблицы.
 
 Hаконец, можно применить вариант словарного метода, но не для слов целиком,
 а  только  для  их  начал. То есть сначала просматриваем первые 3 буквы, если
 достоверного решения не принято -- 4 буквы, и т.д.
 Тут  нужно  учесть  приставки.  Можно,  например, просматривать по словарю не
 только начала слов, а с отступом на 1..4 буквы.
 Это промежуточный, между n-графами и словарем, метод.
 
 Кстати,  словарный  метод  вовсе  не  обязательно  медленный. Присмотритесь к
 программам проверки орфографии, работающим словарным методом (ispell, aspell).
 Программы GNU, с исходниками.
 Там же можно найти и русские словари в компактной форме. Указанные программы
 для поиска используют хеширование. Хеш (hash) составляется заранее.
 
 Для  экспериментов  и  набора  статистик советую воспользоваться Perl'ом или
 Python'ом  (или  чем-то  ещё,  в  то  же  роде).  Это резко увеличит скорость
 разработки.
 
 Все  указанные  методы,  работают только на осмысленных текстах.
 Длина текста: хотя  бы  1  слово  для  словарных и десятки букв для
 статистических методов.
 
 -- 
 Всех благ, Иван.
 Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
 --- ifmail v.2.15dev5
  * Origin: KKK (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 кодировка   dmitry chernokozov   10 Jun 2002 00:13:14 
 Re: кодировка   Ivan Storogev   10 Jun 2002 09:04:14 
Архивное /ru.algorithms/15069d365d8a.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional