суббота, 14 сентября 2013 г.

Начало поисковика или парсера, определение кодировки


Начало поисковика или парсера, определение кодировки

Первой задачей которая встаёт перед поисковиком это определить кодировку и язык.

Это трудная система. Включающая много ступенчатый анализ. А посему требующий системный подход к решению проблемы.

Ошибки неизбежны. Поэтому надо собирать статистику и адаптировать, улучшать систему. Сводя ошибки определения к мнимому, но они останутся по любому.

Факторы проверки кодировки.

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. Анализ нескольких страниц с сайта.
Также не забываем что на сайте есть несколько страниц. И надо учесть что страницы с одного сайта имеют чаще всего одинаковую структуру.


Комментариев нет:

Отправить комментарий