Содержание статьи
Для начала в проекте на Qt в файле .pro подключим библиотеку network
, добавив строку QT += network
. Чтобы разместить пост на стене группы, выполняем код:
QString cit = "Hello!";
QUrl apiUrl;
QString str = "https://api.vkontakte.ru/method/wall.post?owner_id=-78329950&message=" + cit + "&from_group=1&access_token=abcdef&v=5.73";
apiUrl.setUrl(str);
QByteArray requestString = "";
QNetworkRequest request(apiUrl);
request.setRawHeader("Content-Type", "application/octet-stream");
QNetworkAccessManager manager_vk;
connect(&manager_vk, SIGNAL(finished(QNetworkReply*)), this, SLOT(slotV(QNetworkReply*)));
manager_vk.post(request, requestString);
Как видишь, мы отправляем запрос POST с адресом в переменной str
. Используем метод VK API wall.post
, чтобы разместить пост на стене группы. Параметр owner_id
должен быть равен номеру группы, но записан со знаком минус; параметр message
содержит текст поста; from_group
— указатель, что пост будет размещен от имени сообщества, он равен единице; access_token
— токен доступа.
Ты мог заметить, что для обработки запроса мы подключили слот slotV
. Он может выглядеть так:
void MainWindow::slotV(QNetworkReply* r)
{
qDebug() << QString::fromUtf8(r->readAll());
}
В консоли ты увидишь результат запроса: ошибку, если что-то пойдет не так, или сообщение с номером опубликованного поста.
Собираем базу данных для обучения нейронной сети
Чтобы обучить нейронную сеть, нам нужна обширная база данных постов, оцененных реальными пользователями. Ты можешь взять данные из своей группы, а можешь воспользоваться данными из любой другой открытой группы. Нам нужно собрать файл с отметками о количестве лайков для каждого поста. Для этого напишем программу.
Чтобы извлечь каждый пост, отправляем запрос GET:
QString str = "https://api.vk.com/method/wall.getById?posts=-78329950_" + QString::number(cnt) + "&v=5.84&access_token=abcdef";
Мы используем метод VK API wall.getById
: извлекаем пост со стены группы по его номеру.
Параметр posts
содержит уникальный идентификатор поста (здесь — -78329950_123
), который состоит из идентификатора группы со знаком минус и порядкового номера поста, разделенных знаком _
. Порядковый номер поста содержится в переменной cnt
. Параметр access_token
— это токен доступа к группе.
Отправим этот запрос столько раз, сколько постов нам нужно извлечь, изменяя переменную cnt
в соответствии с порядковым номером поста. Получим код HTML, который будет содержать текст поста, количество лайков и другую информацию. Распарсим каждый ответ, чтобы извлечь из него текст и количество лайков. Сохраним в текстовый файл данные, которые мы получили.
номер поста #1
текст поста #1
количество лайков #1
номер поста #2
текст поста #2
количество лайков #2
...
номер поста #n
текст поста #n
количество лайков #n
Теперь, когда все посты записаны в файл, мы готовы синтезировать нейронную сеть и обучать ее.
Keras
Нам понадобится Keras — библиотека для работы с нейронными сетями.
INFO
Есть замечательная книга — «Глубокое обучение на Python» Франсуа Шолле. По ней ты можешь освоить теорию, ознакомиться с примерами решения задач от самых простых до весьма сложных, таких как сверточные сети и генерация изображений.
Для начала выполним ряд стандартных действий и установим Python:
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install python-pip python-dev python-setuptools
Затем установим пакеты научных вычислений для Python:
$ sudo apt-get install build-essential cmake git unzip pkg-config libopenblas-dev liblapack-dev
$ sudo apt-get install python-numpy python-scipy python-matplotlib python-yaml
$ sudo apt-get install libhdf5-serial-dev python-h5py
Поставим TensorFlow:
$ sudo pip install tensorflow
И саму библиотеку Keras:
$ sudo pip install keras
Можно установить Keras и из репозитория на GitHub. В этом случае ты получишь доступ к папке keras/examples
с примерами сценариев.
$ git clone https://github.com/fchollet/keras
$ cd keras
$ sudo python setup.py install
Чтобы проверить, что все установилось, попробуй запустить сценарий Keras.
python examples/mnist_cnn.py
Для выполнения этого примера может потребоваться несколько минут.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»