Начало поисковика или парсера, определение кодировки
Первой задачей которая встаёт перед поисковиком это определить кодировку и язык.
Это трудная система. Включающая много ступенчатый анализ. А посему требующий системный подход к решению проблемы.
Ошибки неизбежны. Поэтому надо собирать статистику и адаптировать, улучшать систему. Сводя ошибки определения к мнимому, но они останутся по любому.
Факторы проверки кодировки.
1. Чтение кодировки от сервера сайта.
2. Анализ символов документа, проверка BOM, и юникода.
3.Анализ грамматики документа, проверка на наличия тегов.
4. Чтение кодировки и языка из документа.
5. Анализ кодировки и языка.
6. Анализ слов(лексем)
7. Анализ грамматики языка.
8. Анализ семантики.
9. Анализ нескольких страниц с сайта.
Каждый фактор должен вносить свое улучшение. Но не к каждой порции данных можно применить тот или иной тип анализа. Поэтому помимо количественного значения нужно и качественная оценка анализа.
Количественная это параметр от 0 до 1 реальное число. Качественное Boolean.
False в случае неудачи и true в случае удачи.
Внося несколько факторов в анализ мы можем улучшить распознавание кодировки.
Систему строить на основе Бесовского принципа, а именно предполагать что предыдущая информация верна.
Система анализа текста функционирует рекурсивно. В случае неправильного определения возвращаемся на пункт назад и пробуем другие параметры. На некоторых стадиях надо делать перебор и выбирать максимум.
Техническое воплощение анализа.
1. Чтение кодировки и языка от сервера сайта.
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14,11
Сервер может возвращать содержания документа. Также cgi/php скрипт может помещать эту информацию в заголовок сообщения.
Для того чтобы определить язык и кодировку надо найти в заголовки строки
«Content-Language: da»
«Content-Type: text/html; charset=ISO-8859—4»
2. Анализ символов документа, проверка BOM, и юникода.
3.Анализ грамматики документа, проверка на наличия тегов.
4. Чтение кодировки и языка из документа.
< META HTTP-EQUIV='content-type' CONTENT='text/html; charset=big5' >
5. Анализ кодировки и языка.
Исходный код mozilla
http://chsdet.sourceforge.net/
6. Анализ слов(лексем)
Для лексического анализа нужно применить либо большой словарь. Либо малый но с набором правил для модификации слов.
7. Анализ грамматики языка.
Набор слов в разных языках может быть очень похожим при этом грамматические конструкции могут сильно отличаться.
8. Анализ семантики.
Семантика это анализ смысла. Самая мало изученная область в парсерах. Так что сдесь обычно применяют эвристические правила. Такие какие можно придумать.
9. Анализ нескольких страниц с сайта.
Также не забываем что на сайте есть несколько страниц. И надо учесть что страницы с одного сайта имеют чаще всего одинаковую структуру.
Комментариев нет:
Отправить комментарий