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

Для чего нужен суперкомпьютер.

А правда для чего? Ответ прост в своё время свои задачи. Но прежде надо ответит что-же такое? Супер компьютер - это компьютер обгоняющий средне статистический компьютер.
В 10, 100, 1000, миллионы раз.

Можно выделить следующие компьютер. Сервер который использует несколько пользователей. Обычно он мощнее средне статистического в несколько раз 10-100. Зависит от числа пользователей.

Для научных расчётов. Для научных расчётов чтобы быть на пике требуется производить и обрабатывать данные в 10-100 раз превосходящие возможности среднего компьютера.
Но рост производительности среднего компьютера был экспоненциальным и те задачи что 10 лет назад решались на компьютере вполне решаются на современном ПК.

Такое обычно достигается путем объединения нескольких компьютеров лаборатории в кластер.

Но если посмотреть в TOP500 то мы увидим что компьютеры 1000 и 1м раз превосходят средне статистические.  Для чего же нужны они?


Если на заре создания компьютеров в годах 50 они использовались для дешифровки сообщений и обработке статистических данных. То в 60-тых это были расчёты баллистики ракет. В 70-тых компьютеры использовались для расчёта на прочность конструкций сооружений.. Или к примеру расчёта винта подводной лодки. Расчёта оптимальной конструкции корпуса самолёта.
А вот в 80-тых мощности компьютеров хватила для первых спец эффектов в фильмах. Такие фильмы как звездные воны с их светящимися мечами. И фильма трон.

В 80-тых и 90-тых суперь компьютер был нужен для расчёта прогноза погоды.


90-тые интересны тем что появились массовые ПК.  Собственно с этого времени и появляется термин супер компьютер. Удивительный факт в 90-тых для производства микросхем стали использовать 2-ное экспонирование. Что потребовала решения обратной задачи трассировки лучей света. Для чего потребовались супер компьютеры. И чем производительнее процессор хотели создать учёные тем производительнее требовался кластер.

2000-ные. Эра  3D мультфильмов. Рендеринг. Фильмы со спец эффектами. Многие компании специально закупают под это дело супер компьютеры.
Прогноз погоды всё ещё актуален.
Виртуальные краштесты автомобилей.

2010-тые сейчас рендеринг можно производить в реальном времени на ПК.
Прогноз погоды тоже успешно считается на ПК.


За последние 10-20 лет наметилась тенденция к компьютерам с очень большим числом ядер.
Не просто тысячами процессоров, а с 10 -100 тысячами.
Спрашивается для чего нужны такие супер компьютеры?
Ясно что они должны окупаться. Но если фильм/мультфильм приносит миллионы долларов.
То должны быть и задачи которые стоят гораздо больше чтобы задействовать более дорогое оборудывание.

Ядерные испытания? Да как бы там и ПК -хватает да и хватало ещё в 80-тых.
Шифры? Да вполне очевидно так как эти компьютеры принадлежат военным и они решают военные задачи.
Обычно шифр не превышает 10 знаков и содержит не более 54 символов. Т.е такой пароль перебираться за 10^17 операций. Что примерно соответствует современным возможностям суперкомпьютера..
Да и 64 битные шифр.  Вполне возможно. Но какова цена? Не думаю что это окупится.

Моделирование ядерной физики? Да эта задача решается, но обычно совместными усилиями объединяя научные супер-компьютеры в общую сеть. А они классом ниже тех что есть у военных.

Моделирование военных действий? Вопрос открытый.
Скорее всего это очередная гонка вооружений, перенесённая в новую область.

суббота, 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 - кривые программисты, с десяток потерянных сообщений. Вечные баги, то с разметкой то с фильтрами.