Text Mining Explained

Практические советы по реализации систем извлечения информации

четверг, июня 14, 2007

Supporting Search in a Multilingual World

21 июня 2007 г. (четверг), 17:00-18:30

Douglas W. Oard (http://www.glue.umd.edu/~oard/)
Associate Dean for Research
College of Information Studies
University of Maryland, USA

Title:

Supporting Search in a Multilingual World

Abstract:

The Internet is a vast multilingual commons, and the past decade has seen a dramatic acceleration of research on the construction of systems to support multilingual information access. In this talk, I will describe the key advances in cross-language information retrieval and machine translation that now enable us to build systems that span language barriers to some degree for some purposes. With that as background, I will then step back and look at the problem from the perspective of an application developer to identify critical gaps in the present technology that could inhibit adoption in Web and enterprise search applications.

About the Speaker:

Douglas Oard is Associate Dean for Research at the College of Information Studies of the University of Maryland, College Park, where he holds joint appointments as Associate Professor in the College of Information Studies and in the Institute for Advanced Computer Studies. He earned his Ph.D. in Electrical Engineering from the University of Maryland, and his research interests center around the use of emerging technologies to support information seeking by end users. Dr. Oard's recent work has focused on interactive techniques for cross-language information retrieval, searching conversational media, and leveraging observable behavior to improve user modeling. Additional information is available at http://www.glue.umd.edu/~oard/.

Язык - английский.

Если вы хотите посетить семинар, пожалуйста, предварительно зарегистрируйтесь по тел. +7 495 739-7000. Количество мест ограничено.

Место: Яндекс, Москва, ул. Самокатная, дом 1, стр. 21
Как добраться: см. http://company.yandex.ru/inside/contacts.xml

Запись семинара будет выложена в открытый доступ.

суббота, мая 12, 2007

Web Content Mining

Во вторник 15-го мая в Яндексе состоится второй открытый семинар. Вести его будет Bing Liu, автор вышедшей в январе 2007-го года книги Wed Data Mining, а также автор однодневного учебного курса Web Content Mining для участников конференции WWW2005.

Семинар будет состоять из двух частей:

  1. Template detection, data extraction (выделение шаблонов страниц, извлечение "записей данных"), 16:00 — 17:30
  2. Opinion mining ("выявление мнений"), 18:00 — 19:30
Участие в семинаре бесплатное, нужна предварительная запись по телефону +7 495 739 7 000, количество мест ограничено.

пятница, мая 04, 2007

Multirow inserts

Немного в сторону от основной темы блога, но, думаю, многим будет полезно.

Очень часто в моей работе приходится вставлять сравнительно большое число строк (несколько миллионов) в какую-нибудь таблицу. Причем делать это регулярно. Если делать отдельный insert на каждую строчку, миллион будет вставляться очень и очень долго. В MySQL поддерживается специальный синтаксис для multirow inserts: INSERT INTO my_table (col1, col2) values (1, 2), (3, 4), ... (99, 100). Такой запрос вставит сразу 50 строчек. Причем очень быстро. Число строчек, которые можно вставить за один запрос очень велико и ограничено сверху, если я не ошибаюсь, максимальным размером пакета, который может принять MySQL. На практике, я обычно вставляю по несколько десятков тысяч строк одним запросом.

К сожалению, ни Oracle, ни MS SQL не поддерживают этот замечательный синтаксис. Долгий поиск дал всего две рекомендации: использовать sqlldr, LOAD DATA или INSERT INTO <table name> SELECT FROM <table name>. Практически отчаявшись, я заглянул в Википедию и нашел там спасение.

Во-первых, оказалось, что чудесный синтаксис из MySQL это часть стандарта SQL 92 (это, действительно, так — ключевые слова "query expression", "insert statement", "table value constructor") и он поддерживается также в DB2 и PostgreSQL.

Во-вторых, INSERT INTO <table name> SELECT FROM <table name> может выглядеть так (пример для MS SQL):

INSERT INTO my_table (col1, col2)
SELECT 1, 2
UNION ALL
SELECT 3, 4
Такой запрос вставит в таблицу сразу две строчки. С воодушевлением я принялся за тестирование. Сначала попробовал вставлять 50 строчек за раз. Скорость возрасла, но не сильно. Потом попробовал 200 — стало медленнее! Попробовал 1000 и получил ошибку от MS SQL! Дальнейшие эксперименты позволили сделать следующие выводы:
  • Оптимальное количество строчек в одном запросе — 5-10. Так иногда удается достичь, практически, линейного роста скорости вставки.
  • Скорость вставки очень сильно зависит от размера строчки. В одном из экспериментов я убрал из запроса одну колонку типа bit и скорость возросла на 30%!
  • Если какую-то колонку можно вставить небольшим количеством update'ов, возможно, так будет заметно быстрее.
Для удобной работы с multirow inserts я сделал простой интерфейс BulkInserter с реализацией пока только для MS SQL. В ближайшее время сделаю реализацию для MySQL, допишу документацию и выложу в Java IR Utils.

четверг, мая 03, 2007

Text Mining Libraries

Один из читателей блога спросил у меня по электронной почте про известные мне библиотеки с реализациями разных алгоритмов IR. В частности его интересовала кластеризация шинглами. Неплохая реализация шинглов на C++ есть в библиотеке ClustBoost.

Вообще хороших библиотек, а тем более open source, не так много. Среди тех с кем мне приходилось сталкиваться можно выделить:

  • GATE — как они пишут про себя это "the Eclipse of Natural Language Engineering, the Lucene of Information Extraction, the leading toolkit for Text Mining". С Lucene, конечно, они себя зря сравнивают. Коротко говоря, GATE это более-менее удобная графическая среда, к которой можно плагинами подключить практически любую библиотеку для обработки текста.
  • ANNIE — распространяется как часть GATE. Включает в себя: токенайзер, sentence splitter, part-of-speech tagger и named entity recogniser. Последний может выделять такие сущности как имена, организации, места, даты, адреса и др. Утверждается что ведутся работы по портированию ANNIE для русского языка.
  • WEKA — в этой библиотеке реализованы многие алгоритмы классификации плюс есть хорошие визуализаторы результатов. Есть wrapper в GATE.
  • MinorThird — позволяет работать с аннотированным текстом, используя эти аннотации можно классифицировать документы с помощью множества реализованных алгоритмов (начиная от k-nn, заканчивая SVM и voted perceptron. Что интересно, в MinorThird помимо обычной supervised классификации есть реализации и semi-supervised алгоритмов.
  • SVMlight — хорошая и быстрая реализация SVM на C. Есть wrapper в GATE.
Буду рад добавлениям в список.

воскресенье, апреля 15, 2007

РИТ-2007 и новости

Завтра будет первый день конференции РИТ-2007. В 18:00 я буду читать доклад про классификацию товарных предложений Яндекс.Маркета. Те, кто не идут на РИТ, смогут посмотреть среди прочих и мой доклад на сайте конференции (расписание трансляций).

После небольшой рекламы, хочу сказать еще несколько вещей:

  1. Блог после долгого перерыва возобновляет свою работу
  2. В ближайшее время я завершу серию постов "Введение в Text Mining"
  3. Будет несколько постов про базы данных, конкретно, как быстро вставлять очень много строчек в разные таблицы
  4. Расскажу про свои впечатления от Nutch и Hadoop
И самое важное. Нам в Яндекс нужны люди, хорошо знающие Java и с большим желанием заниматься text mining. На сайте вакансии пока нет — все вопросы можно и нужно задавать мне по адресу krondix@yandex-team.ru.