Скачиваем последний дамп с русской википедией (занимает ~60 минут в зависимости от скорости интернета)
wget http://dumps.wikimedia.org/ruwiki/latest/ruwiki-latest-pages-articles.xml.bz2
Вычленяем и сохраняем все токены из корпуса в текстовый файл (занимает 3-5 часов) https://gist.github.com/bulgakovk/4d81cdfb12bc0edab8f0f1fa0c578bc4
Лемматизация и обучение моделей с 27 страницы: http://www.machinelearning.ru/wiki/images/7/7e/Mel_lain_msu_nlp_sem_5.pdf
Скрипт для подсчета метрик качества и размеченные данные находятся в /server
samples_raw.py
содержит размеченные тексты. Символ @
перед словом, означает,
что данное слово должно быть выделено как важное
Чтобы запустить подсчет метрик необходимо выполнить команду python script.py
,
находясь в /server
.
Метод, используемый для подсчета метрик может быть изменен в 4-й строке:
METHOD = tf_idf_normalized
с tf_idf_normalized
на любой другой метод,
возвращающий тот же самый список слов, обернутых в объект с булевым
свойством highlight
credentials
(без расширения) в директории ~/.aws
со следующим содержимым:
[default] ; default profile
aws_access_key_id = <...>
aws_secret_access_key = <...>
Ключи можно найти в нашем чате или создать новые тут.
gulp
с глобальным флагом при помощи команды npm i gulp -g
npm i
, находясь в текущей директории.Можно ориентироваться на то, как выглядит проект в этой ветке,
то есть: скомпилированные зависимости под AWS, "чистый" репозиторий без других файлов, отдельная ветка.
Обработчик, который будет вызывать Lambda при тригерах: "main.handler"
.
Это значит, что вызывается функция handler
lambda_src/main.py.
Это поведение можно менять в настройках функции в gulpfile
, если в этом есть необходимость.
Пошаговое руководство выглядит так:
handler
. Работа этой функции
должна заключаться в принятии входных параметров из объекта запроса, обработки информации
при помощи модели и возврата ответа. Следует обратить внимание, что функция параметры
из поля texts
, т.е. плагин должен упаковывать список нод в массив, который и будет
содержаться внутри поля texts
. Например, корректным запросом будет такой запрос:
(Content-Type: application/json)
{
"texts": [
{
"text": "Здравствуйте, Kirill Bulgakov,",
"tag": "P"
},
{
"text": "\n Мы обратили внимание, что Вы еще не активировали Вашу Предоплаченную Дебетовую Карту Payoneer MasterCard® и хотели\n бы\n убедиться в том, что Вы получили ее. Если Вы еще не получили Вашу карту, пожалуйста, посетите Центр Поддержки для\n получения дополнительной информации.\n Если Вы уже получили Вашу карту, Вы можете войти в Ваш аккаунт Payoneer, активировать ее и начать получать выплаты.\n",
"tag": "P"
},
{
"text": "Для получения дополнительной информации относительно доставки карт, пожалуйста, прочитайте эту статью в блоге\n Payoneer.\n Спасибо,\n Коллектив Payoneer\n",
"tag": "P"
}
]
}
./venv
создан и в нем на данный момент не находятся никакие
установленные зависимости (т.к. они могут быть скомпилированы в окружении, которое не совпадает
с тем, в котором код исполняется на Lambda), а в requirements находится актуальный список зависимостей.
Желательно лишние зависимости удалять, чтобы не превысить лимиты на объем загружаемого контейнера.docker run -it -v $PWD:/var/task lambci/lambda:build-python3.6 bash
source ./venv/bin/activate
pip install -r requirements.txt
gulpfile.js
(линии 43-52):
Если использовать имя уже существующей функции, ее перезапишет исходниками новой,
поэтому следует быть аккуратным.
const params = {
name: "<Your function name>",
role: "arn:aws:iam::<Lamda ID>:role/service-role/defaultRole",
runtime: "python3.6"
};
const options = { profile: "default", region: "eu-west-1" };