Я начал небольшой проект под названием Cloud News Reposted здесь, на Medium. Все статьи написаны небольшим скриптом на Python, который проходит через RSS-каналы по моему выбору и использует HuggingFace/Transformers для подведения итогов в блоге.



Полученные сообщения в блоге выглядят примерно так



Весь AIBot использует несколько библиотек Python.

  • transformers,Современная обработка естественного языка для Jax, Pytorch и TensorFlow Transformers (ранее известная как pytorch-transformers и pytorch-pretrained-bert) предоставляет архитектуры общего назначения (BERT , GPT-2, RoBERTa, XLM, DistilBert, XLNet…) для понимания естественного языка (NLU) и генерации естественного языка (NLG) с более чем 32 предварительно обученными моделями на более чем 100 языках и глубоким взаимодействием между Jax, PyTorch и TensorFlow. (цитата с их сайта)
  • newspaper3k, в основном парсер для веб-сайтов, который может разобрать для нас веб-сайт, особенно полезный для получения текста веб-сайта (ССЫЛКА)
  • PyTorch — это платформа машинного обучения с открытым исходным кодом, основанная на библиотеке Torch, используемая для таких приложений, как компьютерное зрение и обработка естественного языка. Она в первую очередь разработана исследовательской лабораторией искусственного интеллекта Facebook. Это бесплатное программное обеспечение с открытым исходным кодом, выпущенное под модифицированной лицензией BSD. (Источник: Википедия)
  • Feedparser, простая библиотека парсера RSS для Python
  • запросы для публикации на Medium.com
pip3 install transformers
# this one works for Windows with Nvidia cards 
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113
pip3 install newspaper3k

Шаг 1. Получите фиды

Давайте начнем с легкой части, используя feedparser для получения сообщений в блоге.

Все, что мы делаем, это получаем все фиды, а затем берем записи за последние 7 дней (86400 секунд, умноженные на 7 дней), и добавляем все результаты в массив (all_blogs). Таким образом, массив будет содержать все объекты JSON, но для следующего шага нам в основном нужно

  • blog[‘links’][0][‘href’] — содержит URL исходного поста.
  • blog[‘title’] — название поста в блоге

Шаг 2: Получите сводку

Теперь, когда у нас есть список всех сообщений в блоге, мы можем пройтись по ним с помощью газеты и использовать трансформатор для подведения итогов.

Поэтому мы просматриваем все URL-адреса, которые являются частью блога, мы могли бы, конечно, работать и с самим RSS, но я нашел слишком много, которые предлагают только краткое изложение блога, а не полное тело. Поэтому мы используем газету для чтения и анализа сайта (blog[‘links’][0][‘href’]).

Разобранный текст мы подаем в наш преобразователь один за другим. Настоящая магия находится в пределах 3 строк кода

inputs = tokenizer("summarize: " + article.text, return_tensors="pt", max_length=512, truncation=True)    
outputs = model.generate(inputs["input_ids"], max_length=150, min_length=40, length_penalty=2.0, num_beams=4, early_stopping=True)     
summary = tokenizer.decode(outputs[0], skip_special_tokens=True)

Вот полный код:



Вот еще раз, хлопайте и, как всегда, будьте добры друг к другу