Skip to content

solariq/sensearch

Repository files navigation

Лёгкий поиск

Тект статьи

Build Status

У нас есть GDrive где можно найти архивы со статьями из Википедии, а так же можно добавлять свои файлы и библиотеки.

Mini_Wiki.zip - Архив с небольшим количеством статей, для тестов и экспериментов по темам:

 "Актёры России"
 "Поэты России"
 "Правители"

Mini_Wiki_categories.zip - Архив с 60k+ статьями из следующих категорий:

 "Актёры России"
 "Футболисты России"
 "Писатели России по алфавиту"
 "Поэты России"
 "Актрисы России"
 "Мастера спорта России международного класса"
 "Правители"
 и что-то про города

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

wikiforia_dump_splitted.zip - Полный архив. (без категорий)

Запуск

Для того чтобы запустить фронтенд, необходимо сделать следующее:

sudo apt-get install npm
sudo apt-get install nodejs

Затем нужно проверить что поставилась node нужной (8+) версии:

node -v

Если вам не повезло и поставилась старая версия (например, на Ubuntu 16.04 ставится 4 версия), то качаем nodejs.

Дальше нужно сделать:

sudo npm install -g @angular/cli
cd webapp
npm install
npm install --save @angular/material @angular/cdk @angular/animations

Теперь у нас поставлено все необходимое, дальше необходимо все это собрать, запустив это из папки webapp:

ng build

После чего можно запускать сервак и все будет работать.

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

Если будут выпадать ошибки вида Cannot find module <module-name>, то необходимо пставить и эти модули

npm install --save <module-name>

Повторять до успеха

Замечание: если вдруг что-то поменялось на фронтенде, то для того, чтобы эти изменения вступили в силу, нужно запустить ng build.

Перед запуском приложения необходимо в файде config.json изменить значение переменной pathToZIP на путь до архива с Википедией.

Ресурсы (папка resources)

Необходимо добавить в папку resources файл mystem.

Добавьте в папку resources архив vectors.txt.gz, чтобы иметь возможность работать с Word Embeddings. Если хотите убедиться, что всё сделали правильно, запустите тест NearestFinderTest.

vectors50.txt.gz - векторы размерности 50 (~800 Мб вашей оперативки)

P.s. При необходимости используйте флаг -Xmx<size>, чтобы увеличить размер heap.

Метрика

В проекте существует метрика, которая в данный момент оценивает ранжировку относительно Google. При каждом запросе автоматически выводится DCG запроса в консоль, а так же в папку resources/Metrics/<request_name> складывается файл со значением DCG.

Так же есть классы RebaseMetrics и MetricTest для оценки измениений ранжировки относительно статических данных от Google и запросов.

Инструкция по применению

Если вы уже запускали RebaseMetrics, то можете сразу перейти к пункту 2.

  1. Запустить RebaseMetrics, после чего в папке resources/Metrics/ появятся текущие результаты выдачи Google на популярные запросы в Википедию по нашим категориям. Так же необоходимо не забыть остановить исполнение данного класса.
  2. Запустить MetricTest, после чего на кансоли появится значения старой метрики и новой по всем запросам из файла resources/Queries.txt.
  3. Теперь можно оценивать прогресс.

Формула

Чтобы потренировать формулу нужны следующие вещи:

  • pool, который собирается com.expleague.sensearch.miner.pool.<*>PoolBuilder
  • jmll в виде jar, который можно получить с помощью команды (запущеной в руте jmll):
    mvn -DskipTests=true package -P build-ml-jar,!publish результат работы этой штуки будет лежать в ml/target/ml.jar Фомула тренируется следующей командой: java -classpath <sensearch-dir>/target/classes:<jmll-path>/ml/target/ml.jar com.expleague.ml.JMLLCLI fit --print-period 10 --json-format --learn <pool-name.pool> -X 1/0.7 -v -O 'GradientBoosting(local=SatL2, weak=GreedyObliviousTree(depth=6), step=0.01, iterations=600)' В результате этой мумба-юмбы получатся 2 файлика: <pool-name.pool>.model и <pool-name.pool>.grid. Чтобы поиск начал работать с новой формулой, нужно первый из низ (который .model) положить в src/main/resources/models/ranking.model.

Если вы хотите посмотреть насколько тот или иной фактор важен для формулы, запускаем другую магическую команду: java -classpath <sensearch-dir>/target/classes:<jmll-path>/ml/target/ml.jar com.expleague.ml.JMLLCLI interpret --model <pool-name.pool>.model --grid <pool-name.pool>.grid --json-format --learn <pool-name.pool> -I histogram В результате будет сгенерирована табличка состоящая из таких элементов bin:x-val:y-val, читать ее надо так: при изменении x-val от одного элемента до другого приведет к разнице в значении формулы, соответствующего разнице y-val.

TODO: update cli instructions

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages