Category: компьютеры

Category was added automatically. Read all entries about "компьютеры".

NP чанкер и прототип шаблонизатора ответов для чатбота

В наборе NLP модулей для чатбота добавился очередной - NP chunker. Его прототип я уже кратко описывал тут. Для удобства использования в разных проектах чанкер именных групп выделен в отдельный модуль ruchunker.

В чатботе он позволяет делать следующее. Допустим, пользователь вводит вопрос:
Collapse )

Генеративная грамматика для проактивного чатбота

Для реплики собеседника генеративная грамматика создает целый набор вопросов и просто реплик. В некоторых случаях одна только N-граммная языковая модель позволяет неплохо отсеять откровенную бессмыслицу и оставить более-менее разумные фразы:
Collapse )

Старина DLL hell вернулся

Он вернулся и поселился в экосистеме питона, где под него даже запилили костыледержалку virtualenv.
Особенно часто я встречаю его при работе с tensorflow и вообще ML. Вот давеча прочесывал SO "Why my tensorflow-gpu runs only on cpu?".

Тема машинного обучения и численного моделирования в массовой культуре: задача трех тел /// оффтопик

Речь, впрочем, о литературе, которую массовой назвать вряд ли можно.

Хардкорная sci-fi, в которой стандартный (даже архетипичный) сюжет инопланетного вторжения нескучно и необычно оформлен в достаточно увлекательное переплетение двух сюжетов.

Роман, который начинается как китайский вариант "Одного дня Ивана Денисовича". Но у автора оказывается достаточно чувства меры, вкуса, хитрости и ловкости, чтобы не скатываться в унылую "перестроечную антикитайщину", а мягко перейти к теме вторжения. Но очень закамуфлированно.

Затем этот роман бодренько струится на границе киберпанка с уместной китайской стилизацией. Оставаясь тем не менее в рамках настоящего, нашпигованного суперкомпьютерами, технологиями и вируальной реальностью.

Задача трех тел

Но самое неожиданное состоит в том, что примерно на середине романа я обнаружил, что автор весьма органично вплел в канву метод Монте-Карло и эволюционный алгоритм:
Collapse )

Что-то подобное я встречал раньше только в "Ложной Слепоте".

А до этого автор не поленился рассказать про построение компьютера с фон-неймановской архитектурой из 30 миллионов человек, из которых созданы элементарные логические элементы, включая АЛУ, регистры, память и общая шина. И весь этот фонтан выдумки с китайским размахом - для численного решения задачи трех тел.

Помимо прочего, ирония и самоирония присутствует в достаточном объеме.

В общем, с удовольствием буду жмакать кнопку next page на читалке по второй половине романа.

Ну наконец-то: Using gpu device 0: GeForce GTX 980 в Keras

Установка CUDA в Ubuntu 14.04 оказалась достаточно мутным делом. Целый день фоновых переустановок, гугления и ковыряния в конфигах, плюс периодические переключения мониторов между встроеной видюшкой и gtx.

Самая полезная ссылка - http://www.allaboutlinux.eu/remove-nouveau-and-install-nvidia-driver-in-ubuntu-15-04/2/

И свершилось:

Using Theano backend.
Using gpu device 0: GeForce GTX 980 (CNMeM is enabled with initial size: 95.0% of memory, cuDNN not available)

Обучение пошло со свистом... Интересно, насколько лучше будут грядущие карточки GTX 1080. Если верить терафлопсам, то с 5 увеличится до 9, почти в 2 раза.

Статистический токенизатор (черновичок для проверки задумки)

Для проверки работоспособности сделал небольшой макет токенизатора с такими частями:

1. Обучение по образцам - эталонные предложения с указанными точными границами слов такого содержания:

[кошка] [ловит] [мышей]
[мышей] [ловит] [кошка]

Токенизатор читает содержимое этого файла и выводит вероятностные правила определения начала и конца слова.

2. Проверка (использование). С клавиатуры вводим произвольное предложение, к нему применяются выведенные в п.1 правила, и находятся наиболее вероятные границы слов. Они при выводе на консоль помечаются символами [ и ] для начала и конца слова.

Выглядит это вот так:
statistical_tokenizer

В данном случае было введено проверочное предложение с лишними пробелами "кош ка леж ит", причем в точности такого образца в обучающем корпусе не было.

Тест на многопоточность для поисковых команд

В SDK поисковой системы добавил тест на многопоточность для поиска в текстовых файлах без использования индекса.

Запускаются несколько (проверялось до 10) потоков, каждый из которых выполняет поиск заданных ключевых слов в наборе текстовых файлов в одном и том же каталоге.

Важный момент - все ядра процессора при этом загружаются по максимуму, то есть, допустим, на 2-х ядерном CPU получаем полную загрузку обоих ядер. Это косвенно подтверждает, что в поисковом движке скорее всего нет участков, вызывающих сериализацию команд. Архитектура там изначально разработана для обслуживания многих потоков параллельно без взаимной блокировки, но подтвердить это тестом не лишне.

В API внесено еще несколько изменений, все они войдут в ближайшее обновление.

Пересчет частотной иноформации для русского лексикона

Текстовый корпус - 62 тысячи plain text файлов в кодировке utf-8, общим объемом ~22 Гб.

Частотная обработка 64-битной программой Empirika на Windowns Vista заняла 14200 секунд, то есть примерно 1.5 миллиона байт в секунду. Пиковое потребление памяти - около 1 Гб. Любопытно, что максимальная тепловая нагрузка на процессор, судя по логу термодатчика, пришлась на финальный этап сортировки 5 миллионов лексем.

Общий результат - текущий лексикон покрыл примерно 96% слов в этом корпусе.

Ленивая загрузка словарных статей

Среди разных возможностей, возникших после переработки архитектуры грамматического словаря, появилась такая: при специальной настройке словарь в варианте локального хранилища может загружать словарные статьи не сразу все в оперативную память, а по необходимости.

В текущей версии такой режим активирован только в утилите Lexicon. Если запустить ее, войти в режим морфологического анализа (выбрать [1] в первом меню), то можно заметить, что поиск каждого вводимого слова вызывает как обращение к диску, так и рост потребляемой памяти. Но если ввести уже обработанное ранее слово - реакция программы будет мгновенной, так как соответствующая словарная статья уже подгружена в кэш.

Режим отложенной загрузки словарных статей хорошо вписывается в интерактивный режим, когда скорость обработки не столь важна. В порядке эксперимента данных режим будет включен в поисковых утилитах - консольной, оконной и в dll поискового движка. На скорость индексирования и поиска это не окажет никакого влияния, так соответствующий модуль (лемматизатор) подгружается в память сразу в любом режиме.