Tuesday, 1 December 2015

XGBoost, python и AttributeError: 'NoneType' object has no attribute 'XGDMatrixFree'

XGBoost - одно из популярнейших средств для data mining в последние полгода-год.
Это нативная библиотека + врапперы для всяких python, R, и даже Java!


В случае python, причем - "Иногда" с ним бывают проблемы, как то:

[2999]  cv-test-rmspe:0.171434+0.067778 cv-train-rmspe:0.038854+0.000129                                                                                                                                           
Exception ignored in: <bound method DMatrix.__del__ of <xgboost.DMatrix object at 0x7f0aedac27f0>>                                                                                                                 
Traceback (most recent call last):                                                                                                                                                                                 
  File "/usr/local/lib/python3.4/dist-packages/xgboost-0.40-py3.4.egg/xgboost.py", line 188, in __del__                                                                                                            
AttributeError: 'NoneType' object has no attribute 'XGDMatrixFree'  


Причем вроде бы все в порядке, и - ошибка "плавающая". То есть иногда, на некоторых данных и в некоторых случаях - падает, а иногда - нет. Почитал я, как народ плачет, и - решил разобраться, как же так. 

Рассказываю! )

Ошибка возникает, если в python есть вызов exit() / sys.exit()

Итак. xgboost - штука многопоточная, написанная на openMP
Внутри все очень красиво.

#pragma omp parallel for shared(a, b, c) private(i)
   for (i = 0; i < 100500; i++)
     c[i] = a[i] + b[i];

Красивые аннотации и все такое. Реализация многопоточности от разработчика скрыта. Вопросы синхронизации - вопрос тот еще. Данные в общей памяти, все красиво и удобно.

Как работает при этом Python exit. Он кидает SystemExit. Ну а дальше понятно - xgboost не закончил, а враппер уже получил exception и - бабах!

Варианты лечения: 

1) Не лечить. Я серьезно.
2) Поставить time.sleep в python
3) Не использовать exit! 

Вообще, конечно, забавно. 

Monday, 30 June 2014

КОНТРАСТИВНЫЕ ИССЛЕДОВАНИЯ И ПРИКЛАДНАЯ ЛИНГВИСТИКА

Здравствуйте!  Передаю сообщение нашего коллеги А.В.Зубова (МГЛУ, Минск) о предстоящей конференции. ОМ
--------------------------
Приглашаем принять участие в работе Международной научно-практической конференции «КОНТРАСТИВНЫЕ ИССЛЕДОВАНИЯ И ПРИКЛАДНАЯ ЛИНГВИСТИКА»
Конференция состоится 29–30 октября 2014 года
в Минском государственном лингвистическом университете
(220021, г. Минск, ул. Захарова, 21, ст. метро «Площадь Победы»)
В рамках конференции предполагается обсудить следующие вопросы:
  1. Теоретические аспекты прикладной лингвистики.
  2. Текст и дискурс в контрастивно-типологическом аспекте.
  3. Лексические и грамматические единицы в разных языках и культурах.
  4. Вопросы литературы и культурологии в контрастивном освещении.
  5. Проблемы перевода текстов.
  6. Технологии извлечения информации из Интернета и ее обработка.
  7. Автоматический анализ и синтез текстов.
  8. Корпусные исследования.
  9. Контрастивная лингвистика и вопросы преподавания языков.
  10. Компьютерная лингводидактика.

Sunday, 15 June 2014

EEG - even with up/down/left/right movements! )))

https://www.dropbox.com/s/zbudiu1twmd70cv/data_eeg_mouse_2.tar.gz


tree data
data
├── behavior.dat
├── classes
│   ├── down
│   │   ├── 0_beh.dat
│   │   ├── 0_raw.dat
│   │   ├── 10_beh.dat
│   │   ├── 10_raw.dat
│   │   ├── 11_beh.dat
│   │   ├── 11_raw.dat
│   │   ├── 12_beh.dat
│   │   ├── 12_raw.dat
│   │   ├── 13_beh.dat
│   │   ├── 13_raw.dat

Framework for eeg-capturing - first working dataset

Framework for eeg- capture and behavior syncing is completed, so, first machine learning - ready dataset :-)

(simple  one-channel device, raw data)

https://www.dropbox.com/s/61c4k8g3edh4h5r/data_eeg_mouse_1.tar.gz

Funny, if somebody will make a diagnosis )))))

Wednesday, 4 June 2014

Национальный корпус русского языка объявляет конкурс проектов дизайна страниц корпуса

Дорогие коллеги!
Пожалуйста, доведите эту информацию до всех, кто может быть в ней заинтересован.
Национальный корпус русского языка объявляет конкурс проектов дизайна страниц корпуса в трех номинациях:
Лучший проект дизайна страниц форм запроса.
Лучший проект дизайна поисковой выдачи.
Лучший проект дизайна мобильной версии корпуса.
К участию в конкурсе представляются страницы HTML + CSS + JavaScript (при необходимости скрипты серверной части). Макеты в графических форматах (jpg, gif и т.д.) не рассматриваются.
Принимать участие в конкурсе могут как отдельные разработчики, так и творческие коллективы (физические и юридические лица). Численность коллектива не ограничивается.
Представленные на конкурс проекты должны сохранять всю существующую функциональность страниц (как запроса, так и выдачи), иметь современный, приятный и удобный дизайн. Приоритет будет отдаваться работам, которые смогут расширить возможности интерфейса в следующих направлениях:
Авторизация пользователей (добровольная). У авторизованных пользователей должна появиться возможность хранить историю запросов, заданных подкорпусов и прочих настроек поиска и выдчи, комментировать новости на соответствующей странице.
Упрощенный интерфейс выбора подкорпуса и выбора тегов/значений из списков. В идеале весь запрос вместе с выбором подкорпуса должен формироваться на одной странице. При этом должна быть возможность генерировать списки значений для метаатрибутов автоматически по метатаблице.
Поиск по структурированным метаданным: авторам, издательствам и т. д.
Удобная система помощи и подсказок. Примеры запросов.
Опция показа пользователю грамматической и семантической информации о слове в формате выдачи KWIC (при словах, отвечающих запросу, и/или при словах ближайшего контекста). Информация должна содержаться в верстке страницы, а не во всплывающем окне.
Опция поиска по всем корпусам с учетом общих для всех корпусов параметров.
Работы должны быть представлены не позднее 15 октября 2014 года. Их следует присылать на электронный адрес info@ruscorpora.ru. Итоги конкурса будут подведены 31 октября 2014 года.
По всем вопросам следует обращаться на форум корпуса: http://studiorum.ruscorpora.ru/forum/.
В случае победы в конкурсе авторам будет предложен контракт на выполнение работ по реализации проекта на сайте ruscorpora.ru. На сайте будет размещена информация об авторе.

Всего доброго,
Борис Орехов

Tuesday, 3 September 2013

java swing tutorial : Руссификация, руссификация JFileChooser и не только

Оракл не руссифицировал Java Swing по-человечески, вот самый простой способ локализовать приложение через UIManager - в первую очередь JFileChooser


        UIManager.put("FileChooser.fileNameLabelText", "Имя файла:");
        UIManager.put("FileChooser.lookInLabelText", "Папка:");       
        UIManager.put("FileChooser.filesOfTypeLabelText", "Тип:");       
        UIManager.put("FileChooser.detailsViewActionLabelText", "Детали");
        UIManager.put("FileChooser.refreshActionLabelText", "Обновить");
        UIManager.put("FileChooser.listViewActionLabelText", "Список");       
        UIManager.put("FileChooser.newFolderActionLabelText", "Новая папка");
        UIManager.put("FileChooser.viewMenuLabelText", "Просмотр");       
        UIManager.put("FileChooser.fileDateHeaderText","Детали");               
        UIManager.put("FileChooser.fileDateHeaderText", "Изменен");       
        UIManager.put("FileChooser.fileNameLabelText", "Имя файла");       
        UIManager.put("FileChooser.fileNameHeaderText", "Имя");       
        UIManager.put("FileChooser.fileSizeHeaderText", "Размер");
        UIManager.put("FileChooser.saveDialogTitleText", "Сохранить");
        UIManager.put("FileChooser.saveInLabelText", "Сохранить в:");
        UIManager.put("FileChooser.upFolderToolTipText", "На один уровень вверх");
        UIManager.put("FileChooser.homeFolderToolTipText", "Домой");
        UIManager.put("FileChooser.listViewButtonToolTipText", "Список");
        UIManager.put("FileChooser.newFolderToolTipText", "Создать новую папку");
        UIManager.put("FileChooser.detailsViewButtonToolTipText", "Таблица");
       
        UIManager.put("FileChooser.saveButtonText", "Сохранить");
       
        UIManager.put("FileChooser.cancelButtonText", "Отмена");



Monday, 5 August 2013

Пальба в магазине игрушек

Научились строить очень большие деревья решений, можно даже распределенные, для рекламной платформы подбираем тему и товар для урла (а-ля Adsense),

и видимо замечательный результат:

http://www.chudesarik.ru/,

нашли -  "Шекли Роберт":  Пальба в магазине игрушек

что, круто! :-)

Tuesday, 2 April 2013

Decision Tree (C4.5), Online ad. (Russian), Инфернальный пиздец и Водяной Бластер

Работая над рекомендательной системой для рекламной платформы иногдда встречаешься с интересными эффектами.


Пример:



Текст:

Перекресток около моего д
ома. И каждый день такая херня: Пешеходам зелёный горит уже пару секунд, однако,
 машины продолжают фигачить на красный, 60-80 км/ч не меньше.…. . . ru_auto: нен
ависти псто!. Перекресток около моего дома.И каждый день такая херня:Пешеходам з
елёный горит уже пару секунд, однако, машины продолжают фигачить на красный, 60-
80 км/ч не меньше.Я, если курю в этот момент, непременно целюсь окурком в открыт
ую форточку.Если не курю или форточка закрыта, просто плюю в лобовое.Посоветуйте
! Бластер, калашников, булыжник - что эффективнее помогает водятелам запомнить П
ДД?UPD Как здесь пешеходов-то не любят... Инфернальный пиздец просто!UPD2 Больши
нство предпочитает переть на красный свет, по хрен жертвы.Но вот получить плевок
 в лобовое - это для них катастрофа!.

============

Рекоммендация:

Водяной бластер

===============


Хорошая рекомендация! :-)


+++++++++++++++++++++++++++



 но вот интересно, что у биграммы: "инфернальный пиздец" tfidf  необычайно высок, так как это не самое часть встречающееся словосочетание.

как результат - дерево решений крепко связывает "инфернальный пиздец" и "водяной бластер".

Как результат - на статью про "инфернальный пиздец" мы рекомендуем купить... - правильно. Водяной бластер.


================



Alexander PolyakovЭтот рекомендер — лучшая технология. С ней можно будет по телевизору выступать. Типа ответ на все извечные вопросы кто виноват и что делать. Пиздец-бластер. Вот эти пары станут мемами и пойдут в продажу как отдельные товары массового потребления. 

На статью о грязной рубашке и совете отстирать ее мылом мы получим Срач-мыло и т.д. Любое нейминг агентство позавидует. 

Спасибо, посмеялся в голос!



Wednesday, 7 November 2012

Machine Learning library/framework + fuzzy logic.

One additional feature in process - fuzzy logic for cases when we have not full attribute set
or if there is no strict solution, based on training set. 

Machine Learning library/framework

Subj - works!

Tree training/creation, serialization and storing to the redis (for a while - as a java serialization),
loading and using is works pretty good.

Simple training set and unclassified incident is applied.

TODO:

1) new algorithms for dtrees generation.
2) storing/loading tree into the redis not as a serialized object, but as a set of nodes.
3) creation a public version for just using already created trees.

https://github.com/vk4arm/DTree

Sunday, 28 October 2012

Machine Learning library: training process for ID3 completed.

TODO:

  1) Tree serialization/saving/restoring
  2) C4.5 implementation
  3) Tree usage https://github.com/vk4arm/DTree

 Right now - just for fun. But tree, generated from the training set looks logical...

Monday, 22 October 2012

Machine Learning library - in progress.

I want to manage trees in redis, reuse it, create using id3 and c4.5 tree building algorithms.

https://github.com/vk4arm/DTree

Not yet ready!!!!!!! :-)

Sunday, 21 October 2012

How to get free active email to SMS providers list. Or small Oracle software reverse engineering.

Yes, it is possible to googleit, but in this case you should test all gateways, but how to do it without having a phone numbers in all providers you that have found?
Better if somebody will do it for you.

Small hack :-)
Oracle APEX (Oracle Application Express) application - OraTweet contains free sms feature. So, it is possible to get it.

Several words about apex app. This is simple .zip archive, which contains .sql files and some static resources, so, this is possible to find a list of email 2 sms providers in it.



1) Download oratweet:  http://oratweet.com/  -> download

2) Unzip it.

3) Open SMS_GATEWAY.sql in your text editor.

4) ???

5) Profit !!! :-)))

Tuesday, 16 October 2012

Anything you want to do, NP-hard.

Anything you want to do, NP-hard. Sorry, this is an AI class. Everything is hard.

Topic Detector

Делали ночью topic detector. На входе - текст или url, на выходе - классификация.
Классификация (не кластеризация) - общая, работает замечательно, даже "ручной zoom" получается.


Wednesday, 10 October 2012

Multilanguage soundex algorithm and library

WIKI says:

Soundex is a phonetic algorithm for indexing names by sound, as pronounced in English. The goal is for homophones to be encoded to the same representation so that they can be matched despite minor differences in spelling. The algorithm mainly encodes consonants; a vowel will not be encoded unless it is the first letter. Soundex is the most widely known of all phonetic algorithms (in part because it is a standard feature of popular database software such as PostgreSQL, MySQL, MS SQL Server and Oracle) and is often used (incorrectly) as a synonym for "phonetic algorithm". Improvements to Soundex are the basis for many modern phonetic algorithms.

But world is bigger then only English.

In my solution there is an implementation for Russian language and there is a simple method for another languages configuration. I will speak with Leonid, may be he will be so kind and  will add some European languages to this tool (Ukrainian, for example :-) )

Usage:

>>> import pysoundex
>>> print pysoundex.soundex("Приветище", lang='ru_RU')
п613
>>> print pysoundex.soundex("Hello")
h400   <--- the same as un mysql!
>>> print pysoundex.soundex("Halo")
h400


Configuration for Russian language is:


  "ru_RU": {
  "vowels": ['у','е','ы','а','о','э','я','и','ю','ь','ъ','й'],
  "consonants": {
   1: ['б','п','ф','в'], 
   2: ['с','ц','з','к','г','х'],  
   3: ['т','д'], 
   4: ['л','й'], 
   5: ['м','н'], 
   6: ['р'], 
  
  }

 },


All language rules are configurable in the soundconfig variable in the lang_soundconfig.py file.

Feel free to modify and add new languages.

You can download it here:


https://github.com/vk4arm/pysoundex