datatasks icon indicating copy to clipboard operation
datatasks copied to clipboard

Разработать алгоритм классификации поисковых запросов посетителей проекта Госзатраты

Open ivbeg opened this issue 8 years ago • 8 comments

Цель

На сайт проекта Госзатраты ежесуточно заходит до 10 тысяч человек. Многие из них приходят по поисковым запросам из основных поисковых систем - Яндекс, Google, Mail.ru и Bing

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

  • человека (ФИО)
  • коммерческую компанию (ООО, ОАО, ЗАО и тд)
  • государственное учреждение.

Нам нужен алгоритм умеющий автоматически определять что за запрос и автоматически маркировать текст запроса характеристикой его типа.

Задача

  • взять базу запросов проекта госзатраты (доступен по ссылке в конце задачи)
  • написать алгоритм классификации запросов
  • проверить алгоритм на базе запросов

Требования

  • открытый исходный код в Github под свободной лицензией
  • межплатформенный код (возможность запуска на Linux/Windows)
  • выходной файл должен содержать поля: keyword, mark, confidence
  • возможные значения поля mark: ** org - коммерческая организация ** gov - госучреждение ** person - человек/ФИО
  • поле confidence должно быть в размерности от 1 до 100 и определять уверенность в классификации.

Пожелания

  • реализация в виде программы командной строки или веб-приложения
  • возможность запуска на MacOSX
  • размещение итоговых данных на CKAN
  • использовать скриптовые языки такие как Python, Perl, R и другие.
  • доп классификация запросов, например, по видам организаций или госорганов только приветствуется

Оценки трудоёмкости

Ожидаемое время на задачу должна занять не более 1-3 дня (8-24 часа).

Вспомогательные материалы:

  • Статистика поисковых запросов Госзатрат - http://hubofdata.ru/dataset/clearspending-visitors-2014-2015
  • Хаб открытых данных - http://hubofdata.ru

ivbeg avatar Oct 07 '15 20:10 ivbeg

Вот решение при помощи регуляризованной мультиномиальной регрессии в R. На тренировочных данных дает 77% успешной классификации. Расширяется на более нюансированные категории путем тренировки. Зависит от файла search_keywords_train_set_categorized.csv, содержащегося в том же gist.

memoryfull avatar Oct 14 '15 14:10 memoryfull

Немного поправил гипермараметры. Установка gamma в 10 в dmr(cl, covars_train, response_vars_train, bins = NULL, gamma = 10) дает уже 90% успешной классификации на тренировочных данных.

memoryfull avatar Oct 14 '15 16:10 memoryfull

@memoryfull там не все так просто получается и основные ошибки на персонах.

Вот кусок из классифицированного файла: "иовва сергей радионович","gov",71.9 "ип алексеенко мария николаевна","person",54.4 "ип варламов максим владимирович башкортостан","gov",72 "ип гаврилова ирина васильевна","gov",67.4 "ип гаражанкин виктор петрович","person",54.1 "ип гойхман михаил юрьевич телефон","gov",71.9 "ип долгих маргарита владимировна","person",54 "ип дюкарева людмила николаевна","person",78.3 "ип забашта юлия федоровна ростов","gov",72 "ип заренков павел александрович","person",99.7 "ип калмыкова нина петровна калининград","gov",72 "ип коновалова елена владимировна кострома","person",54.3 "ип коновалова елена владимировна кострома реквизиты","person",54.3 "ип кривенко владимир иванович","gov",71.6 "ип кузнецова алевтина ивановна санкт-петербург","gov",72 "ип лазовик лев александрович","person",54.6 "ип мавлиханова светлана анатольевна","person",46.6 "ип магомедов зубаир шамилович","gov",72 "ип масаева залина умаровна","gov",72 "ип мунин волгоград","gov",72 "ип панкратов йошкар-ола","gov",72 "ип пантелеев аркадий викторович","person",52.5 "ип путилов виктор анатольевич","gov",72 "ип пухненков дмитрий александрович","person",99.7 "ип рубинштейн елена павловна","person",54.3 "ип сенчик богдан","gov",72 "ип стерхова заречный","person",54 "ип строкова","gov",72 "ип субботина юлия валерьевна воронеж","gov",72 "ип уваров сергей викторович архангельск","person",60.8 "ип фролов станислав борисович","person",44.7 "ип фролов станислав борисович отзывы","person",44.7 "ип чичунов валерий викторович","person",52.5 "ип шаповалов алексей михайлович","gov",72

и так далее из 34 персон 16 выходят как "gov", а это чуть более 47%.

Для персон нужны другие подходы, их распознавание наиболее эффективно работает при наличии баз отчетств, имен и фамилий.

ivbeg avatar Oct 15 '15 06:10 ivbeg

@ivbeg думаю, что вопрос не в базах, а в тренировке на бóльшем количестве данных. Сейчас я тренировал на 10% вручную размеченных данных, если довести этот показатель до 50%, то повысится и точность.

memoryfull avatar Oct 15 '15 08:10 memoryfull

@memoryfull это из тех задач которые невозможно решить тренировкой на части данных, очень много уникальных значений

ivbeg avatar Oct 16 '15 04:10 ivbeg

Мне кажется эту задачу стоит решать как named entity recognition. В запросах могут быть смешаны несколько сущностей: например, организация и город. То есть можно построить несколько разных таггеров, которые из запроса будут выделять "свои" сущности( отдельно имена, организации, города). Я позже найду проект, который позволяет построить таггер для организаций и имён собственных практически из коробки: нужно дать ему тренировочные данные и опционально словари.

EgorLakomkin avatar Oct 20 '15 06:10 EgorLakomkin

@EgorLakomkin наверняка задачу можно найти таким образом. Возьметесь?

ivbeg avatar Oct 20 '15 12:10 ivbeg

@ivbeg Пока времени взяться нет. Проект, который позволяет очень просто создавать таггеры https://github.com/datamade/parserator

EgorLakomkin avatar Oct 21 '15 07:10 EgorLakomkin