Attaurus = Attribution of Authorship Russian.
The program for recognizing the author of russian texts or articles.
The list of features that will be used in this program: FEATURES.md
Clone the repository:
git clone https://github.com/Lpshkn/Ataurus.git ataurus
cd ataurusAt first, you have to create the Docker image:
sudo docker build -t ataurus .There are 3 main commands for working with the program: train, predict and info:
-
train- training a model on the input data. While training extracted features from texts serialize to.configdirectory. The trained model will be serialized into the same directory (if-ooption didn't specify). -
predict- predicting target classes for the input data. If the input file was processed earlier (and saved in.configdirectory), it will be retrieved from the cache. -
info- getting information about the model, containing in the.configdirectory.
sudo docker run \
-v <path to a directory>/data:/ataurus/data \
-v <path to a directory>/.config:/ataurus/.config \
ataurus train ./data/train2.csvor
sudo docker run \
-v $PWD/data:/ataurus/data \
-v $PWD/.config:/ataurus/.config \
ataurus train ./data/train2.csvsudo docker run -v <path to a directory>/.config:/ataurus/.config ataurus infoor
sudo docker run -v $PWD/.config:/ataurus/.config ataurus infosudo docker run \
-v <path to a directory>/data:/ataurus/data \
-v <path to a directory>/.config:/ataurus/.config \
ataurus predict ./data/test2.csvor
sudo docker run \
-v $PWD/data:/ataurus/data \
-v $PWD/.config:/ataurus/.config \
ataurus predict ./data/test2.csvTo run tests:
nosetests --with-coverage --cover-package=ataurusAttaurus = Attribution of Authorship Russian.
Программа для атрибуции русских текстов. Для качественной атрибуции, желательно, чтобы на каждого автора приходилось 60-80 статей.
Программа имеет 3 режима работы: train, predict и parse:
ataurus {train, predict, parse}-
train- режим обучения модели на входных данных. На вход подаются полный путь, куда будет сериализована обученная модель (аргументoutput) и входные данные (аргументinput) в следующих возможных форматах:- connection string - строка подключения к кластеру ElasticSearch (формат
hostname:port/name_index). При этом документы в индексе ДОЛЖНЫ содержать поляauthor_nicknameдля имени автора иtextдля самого текста; - .csv файл, ОБЯЗАТЕЛЬНО содержащий столбцы
authorдля указания автора иtextдля текстов; - сериализованный с помощью
JoblibDataFrameобъект. Этот файл содержит DataFrame объект, который хранит в себе уже выделенные на этапе обучения (режимtrain) признаки (с помощью опции-f).
ataurus train [-f FEATURES] input output
После обучения выделенные из текста признаки могут быть сериализованы опцией
-fс указанием полного пути и имени файла, а модель по окончанию работы сохранится для последующего использования режимомpredict.Сериализация признаков позволяет значительно сократить время на обработку текстов и выделения признаков. Это позволяет подогнать модель машинного обучения под конкретные данные.
- connection string - строка подключения к кластеру ElasticSearch (формат
-
predict- режим составления прогнозов для входных данных. Данный режим следует использовать после обучения модели (режимtrain). На вход подаются полный путь, где расположена сериализованная ранее модель (аргументmodel), а также входные данные в точно таком же формате, как и в режимеtrain. Опция-fвыполняет ту же работу, что и в режимеtrain.ataurus predict [-f FEATURES] input model
-
parse- режим для скраппинга вэб-сайтов. В этом режиме необходимо выбрать сайт, для которого написан вэб парсер: на данный момент этоhabr. Дляhabrнеобходимо задать через запятую авторов и индекс ElasticSearch, куда будут сохранены данные:ataurus parse habr authors index -o <output_csv>
Копируем репозиторий:
git clone https://github.com/Lpshkn/Ataurus.git ataurus
cd ataurusЗапустить pylint можно командой:
pylint ataurusЗапустить тесты и проверить покрытие тестами командной:
nosetests --with-coverage --cover-package=ataurusСначала необходимо собрать Docker-образ:
sudo docker build -t ataurus:1.1.0 .Примечание 1: далее в приведенных командах будет задействована директория result, необходимая для сохранения
обученных моделей и сериализованных признаков.
Примечание 2: если вы будете использовать connection string к ElasticSearch, необходимо будет указать в команде
docker run опцию --network=host. Это позволит подключиться к серверу, запущенному на вашем хосте по адресу
localhost (если ничего не изменялось).
Собираем необходимые данные:
- с помощью задания списка авторов через запятую
К примеру:
docker run --network=host \ -v $PWD/result:/ataurus/result \ ataurus:1.1.0 parse habr <author1,author2,...,authorN> <index_name> -o <output_csv>
docker run --network=host \ -v $PWD/result:/ataurus/result \ ataurus:1.1.0 parse habr orange303,Barrayar,Evgenia_s5,JetHabr,aleks_raiden,tolikmg,Axelus,CooperMaster 8authors \ -o /ataurus/result/8authors.csv
Произведем обучение модели:
-
с помощью connection string
docker run --network=host \ -v $PWD/result:/ataurus/result \ ataurus:1.1.0 train <hostname>:<port>/<index_name> /ataurus/result/<model_name> \ -f /ataurus/result/<features_name>
К примеру:
docker run --network=host \ -v $PWD/result:/ataurus/result \ ataurus:1.1.0 train localhost:9200/8authors /ataurus/result/model_8authors \ -f /ataurus/result/8authorsЗдесь для обучения используются данные, полученные из индекса
8authorsElasticSearch (содержащий тексты 8 авторов). Обработанные тексты сохраняются с помощью опции-fс именем8authors. -
с помощью .csv файла
docker run \ -v $PWD/result:/ataurus/result \ -v <path_to_data>:/ataurus/data \ ataurus:1.1.0 train /ataurus/result/<name_.csv_file> /ataurus/result/<model_name> \ -f /ataurus/result/<features_name>
К примеру:
docker run \ -v $PWD/result:/ataurus/result \ -v $PWD/data:/ataurus/data \ ataurus:1.1.0 train /ataurus/result/8authors.csv /ataurus/result/model_8authors \ -f /ataurus/result/8authors
-
с помощью DataFrame объекта:
docker run \ -v $PWD/result:/ataurus/result \ ataurus:1.1.0 train /ataurus/result/8authors /ataurus/result/model_8authorsЗдесь обучение происходит на уже выделенных ранее признаках и сериализованных в файл
8authors.
Произведем предсказание авторов
Поскольку режим predict по синтаксису не отличается практически от режима train, то приведем пример только для
.csv файла 8authors.csv. При этом, будем использовать обученную модель model_8authors.
docker run \
-v $PWD/result:/ataurus/result \
-v $PWD/data:/ataurus/data \
ataurus:1.1.0 predict /ataurus/result/data/8authors.csv /ataurus/result/model/8authorsВсе доступные настройки параметров содержатся в файле ataurus/config/train_config.json в корневой директории. Значения
ключей не рекомендуется изменять, чтобы избежать возможных ошибок. Имеет смысл изменить только значения
соответствующих параметров (писать значения можно только в указанные списки).
Существует словарь параметров "по умолчанию", содержащийся в файле ataurus/ml/grid_search.py. Этот словарь имеет смысл
брать за основу для определения своего конфигурационного файла (но обязательно нужно учитывать формат JSON). Если
конфигурационный файл не задан при обучении, то будет использоваться именно этот словарь "по умолчанию".