У меня есть своя группа «Вконтакте», и мне стало интересно, можно ли спрогнозировать, будет публикация успешной или нет. Я решил написать программу, которая бы автоматически брала текст поста, проверяла его с помощью нейронной сети и публиковала только в том случае, если вероятность получить одобрение аудитории достаточно высока. Разрабатывать мы будем на Qt5 и используем Python и Keras для обучения нейросети.
Для начала в проекте на 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 — библиотека для работы с нейронными сетями.
Есть замечательная книга — «Глубокое обучение на 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
Для выполнения этого примера может потребоваться несколько минут.
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее
1 год7690 р. |
1 месяц720 р. |
Я уже участник «Xakep.ru»
Читайте также
Последние новости