Kaggle - Quora

Три дня боев и сбора разваленной после предыдущего проваленного конкурса системы, но оно всё-же заработало. Итак, фразоматчер на новых данных. Понятно, что вопрос является дублем другого только если является его подмножеством, то есть - как похудеть после 20-ти и как похудеть после 21-го - это разные вопросы. А вот после 20-ти и после 18-ти - один и тот же. Но эта обработка поднимется потом, а пока сделаю голый фразоматчер.

Testing: What is the step by step guide to invest in share market in india ?
0.846755 What is the step by step guide to invest in share marke
t in india ?
0.747811 What are the best ways to trade in share markets in Ind
ia ?
0.692909 What is the step by step guide to invest in share marke
t ?
0.678812 What is the best time to invest in the share market ?
0.678367 What are the best mutual funds to invest in SIP in Indi
a ?
0.673693 What is the best way to invest money in stocks in India
?
0.672776 What are the things to be noted before investing on sha
re market ?
0.668881 What is the best strategy to invest in the share market
s ?
Collapse )

Полугодовой прогресс

Приветствую.

Более полугода не было постов, но я не умер :-) . Просто не получалось какой-то законченной технологии, о которой стоило бы рассказать.

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

Итак, формируем обучающую выборку и учим на ней Word2Vec. Как мы знаем, смысла в самих векторных репрезентациях слов нет, есть смысл только в расстояниях между словами. Именно поэтому, простое суммирование векторов слов, например - во фразе, очень быстро деградирует. Сложив пять и более слов скорее всего не получишь нормального понимания, о чём эти слова, велик шанс попасть в совсем непохожий кластер. Но сама идея векторных репрезентаций - роскошна и оперировать векторами очень удобно.

Поэтому, из векторных репрезентаций слов создаётся семантический вектор смыслов слов. Для этого - 1. Кластеризуем вектора наших слов; 2. - для каждого слова вычисляем расстояние до центра кластера, отбрасываем значения менее 0; 3. - полученные расстояния - и есть семантический вектор. Каждый элемент этого вектора имеет свой смысл, задаваемый теми словами, что образуют соответствующий кластер. Сложение таких векторов деградирует намного медленнее сложения оригинальных репрезентаций слов.

Но и на этом мы не останавливаемся. Есть набор документов, поделённых на 2 или более классов. И каждый из документов обладает семантическим вектором - как результатом сложения векторов входящих в него слов, отнесённых к кластерам. Если вычислить мат ожидание и дисперсию каждого элемента суммарного вектора по всей обучающей выборке документов и отнормировать вектора документов, то получается очень хорошая сигнатура документа. Она интерпретируема в человеческих терминах - каждый элемент - суть количество слов, ассоциированных с соответствующей темой в документе. Больше нуля - в документе тема поднимается чаще, чем в среднем. Меньше нуля - реже. -1 - вообще не поднимается.

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

Проверено на больших объёмах самых разнообразных документов, от нескольких байт, до мегабайт. Сравнивает надёжно.

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

Каггле. Прогресс.

Приветствую.

Игры с маш. обучением ни к чему не привели. Точность к текущему моменту - 39% (хотя маш. обучение рисует до 69%, но как-то в единую систему пока не складывается). Это на предыдущей версии синтаксического парсера и с длиной пути в 3-ку. Запускаю новый цикл обучения - на новом парсере и длине в 4-ку. Параллельно планирую доделать второй парсер, и снять его характеристики. Он в разы более ресурсоёмкий, чем первый.

Новый обучающий прогон будет лучше предыдущего, интрига в том - насколько?

Kaggle. Прогресс

Приветствую.

Система наконец собралась и выдала первые результаты. Нда... Удовлетворительна работа только по 20% вопросов, на остальных фразоматчер даёт низкую оценку подобия и результата не получается. Может быть, разгон фразоматчера улучшит показатели, но не думаю, что кардинально.

Каггле. Прогресс

Приветствую.

На этой неделе ушёл учиться первый классификатор, покрывающий примерно 75% всех вопросов. Предварительные итоги обучения - обнадёживающие. Учится на глубину в три, с порогом отсечения 1./16 По моим оценкам, закончит учиться к концу следующей недели, к тому времени и второй классификатор поднимется (ещё 20%). Потом - улучшение движка полнотекстового поиска, снятие метрик с найденных документов по последовательности вхождения слов (ну а вдруг в базе есть уже готовый ответ на вопрос, надо только его найти?) и классификатор на оставшиеся 5% вопросов.

Серьёзная проблема со скоростью. Нужен или SSD или машина с нереальным объёмом памяти (за сотню гигов). Тестовую выборку я уж как-нибудь прогоню, а вот как гонять на стороне каггля - не знаю. Как вариант - оплатить облако и дать им полный доступ.

Каггле. Фразоматчер.

Приветствую.

Как назвать эту штуку не знаю, но она подбирает наиболее похожую фразу из обучающей выборки. Приятно, что заработало с английским языком без переделок, даже без пересчёта статистики. Обильность обучающей выборки и определённая шаблонность вопросов позволяет попадать довольно удачно не только в похожесть синтаксического строя вопроса, но и выделять вопросы схожей тематики. Это важно, так как позволит различать источники информации - про биологию брать ответы из учебника биологии, про физику - из учебника физики. Осталось только их найти и проиндексировать.

Collapse )

Подготовка к конкурсу на Каггле

Приветствую.

Как многие уже знают, на Каггле идёт конкурс по тестированию ИскИнов на школьных тестах для американских восьмиклассников.

В рамках подготовки к участию пришлось расширить свою базу английскими словами, переводами и аннотациями. Было 1.4 млн. узлов на 639 млн. связей - это только для русского языка, стало 1.5 млн. узлов на 645 млн. связей - для русского и английского языков. Как видим, 6 млн связей на весь английский язык - это ничто по сравнению с 639 млн связей на русский, но за оставшиеся три месяца я не смогу нарастить английскую базу по мощности до русской. Русская собиралась намного дольше и использовала труднодоступные источники, в том числе. Основная идея - что переводы будут функционировать, и несмотря на то, что вопросы и варианты ответов заданы на английском, благодаря переводам есть возможность часть обучения вести на русском.

Помимо базы и статистики нужны более предметные знания. Под эти цели парсится DBPedia, MetaFilter, выкачиваются толковые словари из Академика. Идея состоит в том, что-бы сделать полнотекстовый поиск по этим массивам текстов, и более глубокую обработку вести уже по найденным нескольким документам. Вот этой задачей я сейчас и займусь.

Ещё потребуется доработать систему узнавания фраз по их синтаксическим деревьям (она для русского языка была как раз закончена перед началом конкурса), и, если успеется, распарсить синтаксически текстовые данные.

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

Word2Vec на параллельных корпусах. Для переводов.

Из дампа Википедии были сформированы параллельные корпуса на всех 18-ти википедишных языках. Полученный файл был обработан Word2Vec и получилась система контекстного перевода. Будет использоваться для поиска документов заданной тематики на языках, отличных от языка запроса.

Collapse )