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

Лингвистика

Не верти лингвистам. У них много воды и мути.

Первый этап выбор языков для изучения. Разные оценки дают разные показатели.
По численности населения. По численности пользователей интернета. По числу сайтов. 

Число языков привышает 7 000 штук.  Но при этом основными является порядка 40 штук..

Так как выбрать те что стоит изучать? С практической точки зрения интересует наиболее распространённые языки. 
Но даже так трудно сказать кто распространённие. Одно время вся Европа говорила на Латинском языке, а после на Германском. А сейчас на Американском. Воны меняют процентное содержание языка. 

Поэтому выбор группы языков будем делать по текущему моменту. Наиболее интересная оценка популярности языков через число сайтов и численности населения.

http://ru.wikipedia.org/wiki/Языки_в_Интернете
http://ru.wikipedia.org/wiki/Список_наиболее_распространённых_языков

Изучения 7 000 языков затруднительно, так что надо определиться с количеством языков можно выделить 3 основных множества.

10 шт
36 шт
102 шт

Для изучения 102 нужно много времени и не представляется возможным проделать это в одиночку.  Полиглоты обычно говорят на 5-6  языках. 

Поэтому в качестве основного  списка выбираем следующий 11 языков.
1 английский
2 китайский
3 испанский
4 японский
5 португальский
6 немецкий
7 арабский  
8 французский
9 русский
10 корейский
11    Хинди

Хинди слабо представлен в интернете поэтому он включён в список опционально.

Следующие 38 языков можно использовать для отработки обще языковых методов  
 1. английский
 2. русский
 3. немецкий
 4. японский
 5. испанский
 6. китайский
 7. французский
 8. португальский
 9. польский
10. итальянский
11. турецкий
12. нидерландский
13. арабский
14. персидский
15. чешский
16. шведский
17. индонезийский
18. вьетнамский
19. румынский
20. корейский
21. греческий
22. венгерский
23. датский
24. тайский
25. финский
26. словацкий
27. болгарский
28. норвежский (нюнорск)
29. иврит
30. литовский
31. хорватский
32. сербский
33. украинский
34. словенский
35. норвежский (букмол)
36. каталонский
37. хинди
38. латинский

Остальные языки составляют малую толику и их рассмотрение не интересно.

В качестве открытых инструментов можно выделить 
Которая разрабатывается при финансировании со стороны правительств Испании и Каталонии в Университете Аликанте (Universitat d’Alacant). 

http://en.wikipedia.org/wiki/Apertium
http://devel.cpl.upc.edu/freeling/browser/trunk

Это наиболее успешные проекты в машинной лингвистике. Как можно заметить они существуют всего недавно менее 10 лет и были возможны только при финансирование со стороны государства. Но даже они рассматривают только Европейские языки которые произошли от одного общего предка.


http://nlp.lsi.upc.edu/freeling/
Библиотека для анализа предложений по морфологии и грамматике.

http://www.aot.ru/download.php
Отечественная разработка.

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


Выбор площадки для блога

livejurnal - дурная политика, закрыли индексацию блога поисковиками. Нужны только платный аккаунт. Превратился в информационную площадку для журналистов.

blog.ru - кривые программисты, с десяток потерянных сообщений. Вечные баги, то с разметкой то с фильтрами.