Главная страница
Навигация по странице:

  • 1.3. Выбор технологий серверной разработки 1.3.1. Язык программирования и библиотеки

  • 1.3.2. База данных

  • 1.3.3. Размещение сервера

  • 1.4. Выбор технологии анализа схожести новостей 1.4.1. Сходство Жаккара

  • 1.4.2. Алгоритм шинглов

  • 1.4.3. Расстояние Левенштейна

  • 1.4.4. Векторное сходство TF-IDF

  • Разработка информационной системы персонализации новостной ленты на базе платформы Telegram


    Скачать 2.89 Mb.
    НазваниеРазработка информационной системы персонализации новостной ленты на базе платформы Telegram
    Дата08.02.2023
    Размер2.89 Mb.
    Формат файлаpdf
    Имя файлаZinovyeva_rpz_1.pdf
    ТипДокументы
    #926704
    страница2 из 4
    1   2   3   4
    1.2. Технологические возможности Telegram
    Перечислим основные функции сервера.
    1) Сервер Telegram реализует шифрование по протоколу MTProto.
    MTProto – криптографический протокол, используемый в системе обмена сообщениями Telegram для шифрования переписки пользователей. Протокол был разработан Николаем Дуровым и другими программистами Telegram.
    В основе протокола лежит оригинальная комбинация симметричного алгоритма шифрования AES (в режиме IGE), протокол Диффи-Хеллмана для обмена 2048-битными RSA-ключами между двумя устройствами и ряд хеш- функций. Протокол допускает использование шифрования end-to-end с опциональной сверкой ключей [3].
    2) Сервер Telegram позволяет хранить всю переданную информацию и файлы на собственном хранилище, без ограничения объема хранимой информации, но с ограничением максимального размера файлов.
    3) Сервер Telegram позволяет поставлять свои услуги сторонним серверам, для этого в Telegram предусмотрен специальный тип клиента (аккаунта) под названием бот. Боты – специальные аккаунты в Telegram, созданные для того, чтобы автоматически обрабатывать и отправлять сообщения. Пользователи
    (обычные клиенты) могут взаимодействовать с ботами при помощи сообщений, отправляемых через обычные или групповые чаты. Логика работы бота реализуется при помощи HTTPS запросов к API для ботов.
    4) Сервер Telegram позволяет получить доступ к своим услугам через несколько интерфейсов:
    - Приложения для различных платформ (Windows, Linux, MacOS, Android,
    Iphone) – прикладной человеко-машинный интерфейс для подключения клиента (пользователя) к Telegram;
    - Web-приложения – прикладной человеко-машинный интерфейс для подключения клиента (пользователя) к Telegram через браузер;

    18
    - Telegram Bot API – программный интерфейс для создания ботов при помощи HTTPS запросов;
    - MTProto API – программный интерфейс для доступа к протоколу
    MTProto при помощи HTTPS запросов.
    Суммируя пункты 3, 4, можно заключить что в платформе Telegram существует два типа клиентов: пользователи и боты. Пользователями являются живые люди, для них разработаны человеко-машинные интерфейсы доступа к платформе. Ботами являются программы, обменивающиеся с пользователями информацией через чат. Логика работы бота должна быть реализована на втором, отдельном сервере.
    Сервер системы персонализации будет являться поставщиком услуг по отношению к конечному пользователю и клиентом по отношению к платформе
    Telegram. Методы передачи и получения информации (поставки услуг) конечному пользователю ограничены и описаны в документации Telegram [4].
    Для примера выборочно приведем некоторые из методов:
    - getMe – возвращает информацию о боте;
    - sendMessage – посылает заданное текстовое сообщение указанному по
    id пользователю;
    - forwardMessage – пересылает полученное сообщение другому пользователю;
    - sendPhoto – посылает фотографию пользователю;
    - getFile – загружает полученный файл;
    - banChatMember – блокирует пользователя в чате (для данного действия бот должен быть назначен администратором чата);
    - editChatInviteLink – изменяет ссылку необходимую для присоединения к чату;
    - answerCallbackQuery – высылает пользователю варианты ответа на запрошенный ботом вопрос;
    - setMyCommands – задает список стандартных команд бота.

    19
    Логика использования данного инструментария обмена информации с пользователем должна быть реализована на сервере системы персонализации.
    Для этого необходимы серверные мощности (хост), алгоритмы обработки информации, реализованные с помощью одного из языков программирования, база данных для хранения информации.
    1.3. Выбор технологий серверной разработки
    1.3.1. Язык программирования и библиотеки
    Разрабатываемая информационная система будет иметь клиент-серверную архитектуру с учетом специфики реализации информационных систем на базе платформы Telegram.
    Классическую клиент-серверную архитектуру можно описать как взаимодействие двух или более сторон в которой одна сторона является владельцем информации или поставщиком услуг, а вторая и прочие являются потребителями информации или заказчиками услуг, при этом согласно, пособию, эффективное программирование TCP/IP можно выделить три типичных архитектуры клиент-сервер.
    В случае реализации информационной системы на платформе Telegram клиент и сервер будут находиться в разных сетях, помимо этого в архитектуре можно будет выделить два сервера и неограниченное число клиентов.
    Первым и основным с точки зрения обеспечения связи будет сервер платформы
    Telegram. Он реализует функции уровней с транспортного по прикладной по модели OSI.
    Для реализации логики системы и алгоритмов обработки информации необходимо использовать один из существующих языков программирования. На данный момент в мире существует около 1000 языков программирования.
    Конечно далеко не все из них массово используются, но даже если составлять список востребованных языков программирование их будет десятки. Для определения подходящего языка программирования можно воспользоваться

    20 справкой платформы Telegram, в которой приведен список разработанных библиотек для подключения к API на разных языках. Разработанные библиотеки значительно ускоряют процесс разработки системы, так как предоставляют готовые алгоритмы обмена HTTPS запросами с API Telegram.
    Для выбора языка программирования и используемой библиотеки проведем анализ проектов на портале GitHub по следующим характеристикам:
    - количество библиотек, разработанных для данного языка программирования – косвенно позволяет определить применимость языка для написания алгоритмов для Telegram-бота;
    - оценка проекта на портале GitHub – позволяет оценить качество библиотеки по мнению сообщества GitHub;
    - дата последнего обновления проекта – так как Telegram выпускает обновления для платформы и для API и языки программирования так же обновляются и выпускают новые версии, то библиотеки так же требуют обновлений. Дата последнего обновления позволяет оценить актуальность и качество поддержки библиотеки;
    - количество обновлений библиотеки.
    Сравнительные данные библиотек представлены в таблице 1.
    Таблица 1 – Сравнительные данные библиотек
    Язык
    Название
    Ссылка на Git
    Оценка на Git
    Дата последнего обновления
    Количество обновлений
    PHP
    Telegram Bot
    Api Base https://github.com/tg- bot-api/bot-api-base
    186 13.12.2020 222
    PHP
    PHP
    Telegram API https://github.com/unre al4u/telegram-api
    688 26.09.2021 473
    PHP
    PHP
    Telegram Bot https://github.com/php- telegram-bot/core
    2900 23.01.2022 1595
    PHP
    Bot API PHP
    SDK https://github.com/iraza syed/telegram-bot-sdk
    2200 27.01.2022 553

    21
    Продолжение таблицы 1
    Язык
    Название
    Ссылка на Git
    Оценка на Git
    Дата последнего обновления
    Количество обновлений
    PHP
    TeleBot https://github.com/west acks/telebot
    123 20.10.2022 255
    PHP
    NovaGram https://github.com/skrtd ev/NovaGram
    145 27.06.2021 442
    PHP
    PHP
    Telegram Bot https://github.com/form apro/telegram-bot-php
    240 14.05.2019 44
    PHP
    PHP
    Telegram Bot
    Api https://github.com/Tele gramBot/Api
    830 26.12.2021 482
    PHP
    TuriBot https://github.com/davt ur19/TuriBot
    86 01.12.2022 51
    PHP
    TelegramBot
    ApiBundle https://github.com/bors aco/TelegramBotApiBu ndle
    51 29.01.2022 42
    Node.js
    Telegraf https://github.com/teleg raf/telegraf
    5300 22.01.2022 1392
    Node.js
    Node-
    Telegram-bot https://github.com/yago p/node-telegram-bot- api
    5900 12.10.2021 600
    Node.js
    Telebot https://github.com/mull war/telebot
    1300 21.04.2021 429
    Node.js telegram-bot- api https://github.com/mast
    /telegram-bot-api
    225 08.10.2020 65
    Node.js
    Slimbot https://github.com/ediso nchee/slimbot
    186 23.03.2021 190
    Node.js tgapi https://github.com/bigsl ycat/tgapi
    37 26.06.2019 228
    Node.js
    Botgram https://github.com/botgr am/botgram
    243 14.07.2019 250
    Rust teloxide https://github.com/telox ide/teloxide
    1000 26.01.2022 2413

    22
    Продолжение таблицы 1
    Язык
    Название
    Ссылка на Git
    Оценка на Git
    Дата последнего обновления
    Количество обновлений
    Rust
    Telebot https://github.com/bytes nake/telebot
    189 06.05.2020 169
    Rust carapax https://github.com/tg- rs/carapax
    89 16.01.2022 752
    Rust telegram-bot https://github.com/teleg ram-rs/telegram-bot
    794 20.05.2021 612
    Python python- telegram-bot https://github.com/pyth on-telegram- bot/python-telegram- bot
    17500 01.02.2022 2268
    Python pyTelegramB
    otAPI https://github.com/etern noir/pyTelegramBotAP
    I
    5100 31.01.2022 1692
    Python
    AIOGram https://github.com/aiogr am/aiogram
    23000 26.01.2022 1634
    Python
    Telethon https://github.com/Lona miWebs/Telethon
    6000 28.01.2022 2855
    Python pyrogram https://github.com/pyro gram/pyrogram
    2300 29.01.2022 3661
    Ruby
    Telegram::Bot https://github.com/teleg ram-bot-rb/telegram- bot
    480 05.01.2022 212
    Ruby telegram-bot- ruby https://github.com/atipu gin/telegram-bot-ruby
    1100 16.01.2022 270
    Ruby
    TelegramBot https://github.com/eljoj o/telegram_bot
    292 09.08.2018 66
    Swift telegram-bot- swift https://github.com/rapie rorg/telegram-bot-swift
    318 13.08.2021 563
    Swift
    Telegrammer https://github.com/givip
    /Telegrammer
    271 06.09.2021 225

    23
    Продолжение таблицы 1
    Язык
    Название
    Ссылка на Git
    Оценка на Git
    Дата последнего обновления
    Количество обновлений
    Swift
    SwiftyBot https://github.com/Fabri zioBrancati/SwiftyBot
    257 14.01.2019 616
    Kotlin
    TelegramBot
    API https://github.com/Insa nusMokrassar/Telegra mBotAPI
    112 01.02.2022 1727
    Kotlin
    Kotlin
    Telegram Bot https://github.com/kotli n-telegram-bot/kotlin- telegram-bot
    473 26.10.2021 236
    Kotlin kt-telegram- bot https://github.com/elbe kD/kt-telegram-bot
    67 29.12.2021 143
    Kotlin
    Telegraff https://github.com/rusla nys/telegraff
    139 01.09.2020 97
    Java
    TelegramBots https://github.com/rube nlagus/TelegramBots
    2800 01.02.2022 972
    Java
    Java API https://github.com/peng rad/java-telegram-bot- api
    1100 05.02.2022 533
    Go go-telegram- bot-api https://github.com/go- telegram-bot- api/telegram-bot-api
    3400 03.01.2022 586
    Go telebot https://github.com/tucn ak/telebot
    2300 05.02.2022 706
    C#
    Telegram https://github.com/Tele gramBots/Telegram.Bot
    2000 17.11.2021 328
    Elixir
    Nadia https://github.com/zhyu
    /nadia
    351 12.11.2021 274
    C++ tgbot-cpp https://github.com/reo7
    sp/tgbot-cpp
    602 29.12.2021 378
    Dart
    TeleDart https://github.com/Dino
    Leung/TeleDart
    194 10.01.2022 516

    24
    Продолжение таблицы 1
    Язык
    Название
    Ссылка на Git
    Оценка на Git
    Дата последнего обновления
    Количество обновлений
    Lua telegram-bot- lua https://github.com/wrxc k/telegram-bot-lua
    114 11.06.2021 86
    Ocaml
    TelegraML https://github.com/nv- vn/TelegraML
    82 18.06.2021 100
    Haskell haskell- telegram-api https://github.com/klap pvisor/haskell- telegram-api
    191 01.09.2019 301
    Scala canoe https://github.com/augu stjune/canoe
    156 14.10.2021 391
    Scala bot4s https://github.com/bot4
    s/telegram
    343 01.01.2022 554
    Perl
    Telegram Bot https://github.com/Gild edHonour/TelegramBot
    22 05.10.2018 86
    Проанализировав данные в таблице можно отметить, что Python является наиболее востребованным языком программирования для реализации взаимодействия с Telegram. Библиотеки на языке Python регулярно обновляются и поддерживают все возможности платформы Telegram. В числе библиотек есть и библиотеки для взаимодействия по протоколу Telegram Bot API, и по протоколу MTProto API. Для реализации взаимодействия по протоколу MTProto выбрана библиотека Telethon, она имеет лучшую оценку, чем pyrogram, так же работающую по протоколу MTProto. Для взаимодействия по протоколу Bot API
    выбрана библиотека AIOGram она имеет наивысшую оценку.
    1.3.2. База данных
    Хранение данных возможно реализовать с помощью файловой системы и базы данных. Первый вариант не требует дополнительного программного

    25 обеспечения, но при этом уступает второму в скорости работы и надежности.
    При реализации системы возможно сочетать оба способа хранения данных, например, для данных, которые требует частого и быстрого обновления, чтения и записи необходима база данных. Для данных которые записываются однократно и не требуют постоянного обновления, например, конфигурационные данные, данные настроек системы, может быть использовано хранение в файловой системе.
    Распространенными форматами для хранения в файловой системе являются форматы JSON и XML. Формат XML удобен в том числе возможностью редактирования файла через программу Excel.
    Для реализации хранения данных с помощью базы данных требуется установка системы управления базами данных
    (СУБД).
    СУБД классифицируются по модели хранимых данных:
    Иерархическая модель данных – в данной модели используется представление данных в виде древовидной структуры.
    Сетевая модель данных – модель на базе иерархической структуры, где для данных различных уровней определен математический принцип.
    Реляционная модель данных – модель данных основанная на теории множеств и логике первого порядка.
    Объектно-ориентированная модель данных – модель данных, где данные обрабатываются как абстрактные объекты, наделенные свойствами.
    Наиболее распространенным является реляционная модель данных, она подходит для большинства задач [5].
    Сравним системы управления базами данных по следующим параметрам:
     скорость работы;
     простота настройки СУБД;
     тип лицензии;
     доступность на разных ОС (кросс-платформенность);
     востребованность;
     тип СУБД.

    26
    Результаты сравнения приведены на таблице 2.
    Таблица 2 – Сравнение систем управления базами данных
    Скорость
    Прос- тота
    Лицензия
    Доступ- ность на разных
    ОС
    Востребо- ванность
    Тип
    Oracle
    10 5
    Проприетарная
    +
    10
    Реляционная
    MySQL
    7 9
    Открытая
    +
    9
    Реляционная
    Microsoft
    SQL
    6 6
    Проприетарная
    -
    8
    Реляционная
    PostgreSQL
    9 10
    Открытая
    +
    7
    Реляционная
    MongoDB
    6 7
    Открытая
    +
    4
    Документоори- ентированная
    Для реализации системы следует производить выбор среди бесплатных
    СУБД, это MySQL, PostgreSQL и MongoSQL.
    1.3.3. Размещение сервера
    Обеспечить серверные мощности возможно самостоятельно закупив оборудование или арендуя его.
    При самостоятельной закупке серверного оборудования возможно сэкономить на относительной стоимости единицы мощности сервера (под мощностью сервера имеется в виду совокупность его характеристик как производительность центрального процессора, объемы оперативной и стационарной памяти и т.д.), но при этом будет необходимо нести высокие эксплуатационные издержки. В эксплуатационные издержки входит оплата энергии, оплата статического ip-адреса, работы по настройке и ремонту оборудования.

    27
    При аренде серверных мощностей относительная стоимость единицы мощности будет выше, так же будут выше ежемесячные платежи. При этом отсутствует необходимость в эксплуатации и ремонте оборудования, отсутствуют капитальные затраты и присутствует возможность увеличения мощностей в короткие сроки или даже моментально.
    Компании в отдельных предоставляют серверные мощности в аренду, так же их называют облачные сервера, без взимания платы за пользования. Обычно такая услуга доступна для серверов, использующих малый объем мощностей, например, Google Cloud позволяет бесплатно использовать виртуальную машину с характеристиками 1 ядро 614 Мб оперативной памяти и 10 Гб постоянной.
    Данный вариант лучшим образом подойдет для реализации ВКР.
    1.4. Выбор технологии анализа схожести новостей
    1.4.1. Сходство Жаккара
    Для реализации поставленной задачи необходимо определить метод, с помощью которого система будет определять факт того, что новости в разных источниках одинаковые. Для определения схожести текстов есть несколько методов.
    Метод основан на подсчете общего количество элементов в последовательности, чем больше общих элементов, тем выше сходство
    𝐾
    𝑗
    =
    𝑐
    𝑎+𝑏−𝑐
    ,
    (1) где а – количество видов на первом множестве; b – количество видов на втором множестве; с – количество видов, общих для первого и второго множеств.
    Данный метод будет удобен для поиска копии документа, но в случае поиска новости похожей по смыслу, но написанной другими словами, синонимами результат будет не такой качественный [6].

    28
    1.4.2. Алгоритм шинглов
    Алгоритм использует схожую логику с Сходством Жаккера, но также используется «шинглы». Шинглы это последовательности слов. Алгоритмов состоит из следующих этапов: приведение к нормальной форме, разбиение на шинглы, вычисление контрольных сумм шинглов, случайная выборка контрольных сумм и сравнение.
    Минусом данного метода так же является направленность на вычисление копий текста, но не схожих по смыслу.
    1.4.3. Расстояние Левенштейна
    В данном методе вычисляется минимальное количество операций, необходимых для преобразования одной строки в другую.
    Данный метод активно применяется для исправления ошибок в слове или для сравнения текстовых файлов на предмет редактирования.
    1.4.4. Векторное сходство TF-IDF
    Первый векторный метод, появился еще в 1970х годах. Метод основан на двух компонентах rm Frequency (TF) и Inverse Document Frequency (IDF).
    В TF подсчитывается отношение числа вхождений слова к общему числу слов в документе.
    В IDF подсчитывается инверсия частоты вхождения слова к частоте, с которой данной слово встречается во всем документе.
    Такой подход позволяет задавать больший вес уникальным словам и обесценивать междометия и слова связки, часто встречающиеся в тексте.
    Для того что бы создать из текста вектор вычисление TF-IDF для каждого слова в векторе, затем из полученных значений составляется вектор. Анализ схожести текста производится по вычислению косинуса разности между векторами.

    29
    1   2   3   4


    написать администратору сайта