NLP project that works with news (NER, context generation, news trend analytics)

Overview

СоАвтор

СоАвтор – платформа и открытый набор инструментов для редакций и журналистов-фрилансеров, который призван сделать процесс создания контента максимально комфортным и быстрым.

Инструменты для СоАвтора разрабатываются на основе открытой аналитической платформы OT. В ближайших планах полная интеграция приложения с платформой: сбор и обработка данных, запуск аналитических алгоритмов, а также сборка и запуск приложения будет осуществляться на платформе. Публичный репозиторий с инструментами платформы OT coming soon.

Сейчас мы разрабатываем следующие инструменты:

  • Отслеживание событий и трендов в режиме реального времени (работа со структурированными новостными форматами и парсинг новостных источников). Для этого мы пишем модуль для непрерывного парсинга новостных изданий и придумываем, как отслеживать информативные изменения в статьях.
  • Подбор релевантных статей к готовому материалу для автоматического формирования модуля бэкграунда (справочной информации или предыстории события). Для этого мы используем инструменты для поиска семантически похожих текстов в архиве и инструменты для генерации саммари из нескольких документов.

Разработка ведется вместе с профессиональным сообществом, чтобы сделать рабочий процесс для редакций и фрилансеров максимально удобным. Платформа "СоАвтор" имеет модульную структуру. Вы можете придумать новый инструмент, который упрощает работу с текстом, или принять участие в работе над теми, что уже в разработке. Вступайте в наше сообщество на Discord и присылайте свои #идеи того, как можно использовать “СоАвтор” при работе с контентом.

СоАвтор интерфейс


English below


Запустить приложение у себя

Установка

  1. Скачайте файлы проекта или сделайте форк и воспользуйтесь командой git clone
  2. Скачайте файлы с данными: ru_stopwords.txt и news_df.parquet
  3. Скачайте файлы моделей: rubert_tiny и rut5_base_sum
  4. Откройте терминал и перейдите в директорию проекта
  5. Используйте pip install requirements.txt, чтобы установить все нужные библиотеки

Запуск

  1. Поменяйте в файле config.yaml пути к файлам данных и моделям
  2. Откройте терминал и перейдите в директорию проекта
  3. Наберите в терминале команду streamlit run menu.py
  4. Приложение по умолчанию будет доступно по адресу http://localhost:8501 P.S.: приложение можно запустить на своём датасете, если будет соблюдён формат. Пример датасета и описание формата в директории data.

Как участвовать в разработке проекта

Текущие задачи

  1. Обновляемая лента новостей
  2. Модуль для подключения к соцсетям
  3. Анализ трендов по постам из социальных сетей
  4. Классификация evergreen новостей

Помочь решить одну из текущих проблем

  1. Проверьте есть ли открытые проблемы в Issues и выберите одну из них
  2. Если у вас есть своя идея, как законтрибьютить в этот проект, откройте в Issues новый тикет (как это сделать, описано ниже).
  3. Сделайте форк проекта, начните работать над тикетом и внесите свои изменения через pull request.

Добавить проблему (issue)

  1. Если вы нашли баг или недоработку, мы будем признательны, если вы оставите её описание в разделе Issues с тегом bug.
  2. Если у вас есть вопросы по функционалу или вы не понимаете баг это или фича, оставьте нам вопрос в разделе Issues с тегом question.
  3. Если у вас есть идея, какие возможности вы хотели бы ещё видеть в приложении, но не уверены, что можете их самостоятельно реализовать, добавьте описание идеи в раздел Issues с тегом enhancement.

Что ещё я могу делать

  1. Принять участие в обсуждении этого проекта или ваших собственных идей в дискорде нашего сообщества WellnessDataClub.
  2. Взять СоАвтор за основу для разработки собственного open source продукта. СоАвтор сейчас работает с новостями и соцсетями, вы можете начать работать с другим типом данных :)
  3. Примите участие в другом нашем open source проекте OpenMask

Launch this project locally

Installation

  1. Download project files or make fork and use git clone
  2. Download data files: ru_stopwords.txt и news_df.parquet
  3. Download models: rubert_tiny и rut5_base_sum
  4. Using the terminal, change directory to the project's directory
  5. Use pip install requirements.txt

Launch

  1. Change paths to the data and models inside config.yaml
  2. Using the terminal, change directory to the project's directory
  3. Run streamlit run menu.py
  4. The app is available with http://localhost:8501 by default P.S.: this app can be launched with your own data in the right format Dataset example, format description are in the data directory.

How to participate in this project

Current tasks

  1. Updating news feed
  2. One module to collect social network data
  3. Trend analysis based on social network posts
  4. Evergreen news classification

Help to resolve one of current issues

  1. Check if there is an open issue that you'd like to solve
  2. If you have your own idea or see a bug, add a new issue (instructions below)
  3. Make fork from this project, make changes and add them with new pull request.

Add an issue

  1. Add bugs or smth that has to be finished to Issues with bug tag.
  2. If you have questions about functionality or code ask in Issues withquestion tag.
  3. If you have some ideas about new functions, suggest it in Issues with enhancement tag.

What else can I do

  1. Take part in the discussion of this project or your own ideas with our Discord community WellnessDataClub.
  2. Use this project as a base for your own open source product. We now work with news, you csn choose another data type :)
  3. Become a part of our another project OpenMask
You might also like...
Twitter bot that uses NLP models to summarize news articles referenced in a user's twitter timeline
Twitter bot that uses NLP models to summarize news articles referenced in a user's twitter timeline

Twitter-News-Summarizer Twitter bot that uses NLP models to summarize news articles referenced in a user's twitter timeline 1.) Extracts all tweets fr

Grading tools for Advanced NLP (11-711)Grading tools for Advanced NLP (11-711)

Grading tools for Advanced NLP (11-711) Installation You'll need docker and unzip to use this repo. For docker, visit the official guide to get starte

A design of MIDI language for music generation task, specifically for Natural Language Processing (NLP) models.

MIDI Language Introduction Reference Paper: Pop Music Transformer: Beat-based Modeling and Generation of Expressive Pop Piano Compositions: code This

Toolkit for Machine Learning, Natural Language Processing, and Text Generation, in TensorFlow.  This is part of the CASL project: http://casl-project.ai/
Toolkit for Machine Learning, Natural Language Processing, and Text Generation, in TensorFlow. This is part of the CASL project: http://casl-project.ai/

Texar is a toolkit aiming to support a broad set of machine learning, especially natural language processing and text generation tasks. Texar provides

Toolkit for Machine Learning, Natural Language Processing, and Text Generation, in TensorFlow.  This is part of the CASL project: http://casl-project.ai/
Toolkit for Machine Learning, Natural Language Processing, and Text Generation, in TensorFlow. This is part of the CASL project: http://casl-project.ai/

Texar is a toolkit aiming to support a broad set of machine learning, especially natural language processing and text generation tasks. Texar provides

Integrating the Best of TF into PyTorch, for Machine Learning, Natural Language Processing, and Text Generation.  This is part of the CASL project: http://casl-project.ai/
Integrating the Best of TF into PyTorch, for Machine Learning, Natural Language Processing, and Text Generation. This is part of the CASL project: http://casl-project.ai/

Texar-PyTorch is a toolkit aiming to support a broad set of machine learning, especially natural language processing and text generation tasks. Texar

lightweight, fast and robust columnar dataframe for data analytics with online update

streamdf Streamdf is a lightweight data frame library built on top of the dictionary of numpy array, developed for Kaggle's time-series code competiti

Fake news detector filters - Smart filter project allow to classify the quality of information and web pages

fake-news-detector-1.0 Lists, lists and more lists... Spam filter list, quality keyword list, stoplist list, top-domains urls list, news agencies webs

NLPretext packages in a unique library all the text preprocessing functions you need to ease your NLP project.
NLPretext packages in a unique library all the text preprocessing functions you need to ease your NLP project.

NLPretext packages in a unique library all the text preprocessing functions you need to ease your NLP project.

Comments
  • Вероятно, неактуальный конфиг

    Вероятно, неактуальный конфиг

    В 11й строке скрипта context_gen.py запрашивается файл "config_local.yaml", которого нет в репозитории, т.к. он в .gitignore, но есть файл config.yaml, который, видимо, неактуален, т.к. тоже возвращает ошибку.

    opened by karuna-heks 1
  • Relative texts searching

    Relative texts searching

    What is the best way to look for similar texts when I have input text, its keywords and named entities and also input text embedding? I have the same for all texts in the dataset. I need to find the closest relative texts. Texts that are about the same person or location (i.e. same NE) or about the same events (same keywords maybe) must have the highest similarity score. This is done now in util.kwne_similarity.py and generate_context function in context_gen.py, but does not work really well. Sometimes one of top relatives texts are texts that have similar theme to the input text but have totally different subject. For example, my input text is about Covid. Between top relative texts, there are texts that also have health and medicine theme but these texts are not about Covid. And these non-covid texts still have higher similarity score than some Covid texts from dataset.

    help wanted 
    opened by annachikina 0
  • Better algo for keywords extraction

    Better algo for keywords extraction

    At the moment, TextRank on n-grams (adjectives+nouns) is used for keywords extraction. collect_np function in util.data_preprocessing.py for n-grams collection and util.textrank for TextRank scores computation This approach leads to very long unconnected n-grams as output keywords. For example, 'вопрос доставка мигрант белоруссия представитель пресс-служба еврокомиссия стефан' becomes one keyword. The question is how to split these long keywords. Should we collect noun phrases another way (collect_np function in util.data_preprocessing)? Or should we process output of the current TextRank algo to split these long keywords after we already got them?

    help wanted 
    opened by annachikina 0
  • Add file not found error

    Add file not found error

    Check for file existence for model files before reading them. Functions to implement this check: embed_bert_cls in util.text_embedding.py, remove_stop_words_punct in util.data_preprocessing.py

    good first issue 
    opened by annachikina 0
Owner
null
Python bindings to the dutch NLP tool Frog (pos tagger, lemmatiser, NER tagger, morphological analysis, shallow parser, dependency parser)

Frog for Python This is a Python binding to the Natural Language Processing suite Frog. Frog is intended for Dutch and performs part-of-speech tagging

Maarten van Gompel 46 Dec 14, 2022
Abhijith Neil Abraham 2 Nov 5, 2021
This script just scrapes the most recent Nepali news from Kathmandu Post and notifies the user about current events at regular intervals.It sends out the most recent news at random!

Nepali-news-notifier This script just scrapes the most recent Nepali news from Kathmandu Post and notifies the user about current events at regular in

Sachit Yadav 1 Feb 11, 2022
Framework for fine-tuning pretrained transformers for Named-Entity Recognition (NER) tasks

NERDA Not only is NERDA a mesmerizing muppet-like character. NERDA is also a python package, that offers a slick easy-to-use interface for fine-tuning

Ekstra Bladet 141 Dec 30, 2022
天池中药说明书实体识别挑战冠军方案;中文命名实体识别;NER; BERT-CRF & BERT-SPAN & BERT-MRC;Pytorch

天池中药说明书实体识别挑战冠军方案;中文命名实体识别;NER; BERT-CRF & BERT-SPAN & BERT-MRC;Pytorch

zxx飞翔的鱼 751 Dec 30, 2022
Negative sampling for solving the unlabeled entity problem in NER. ICLR-2021 paper: Empirical Analysis of Unlabeled Entity Problem in Named Entity Recognition.

Negative Sampling for NER Unlabeled entity problem is prevalent in many NER scenarios (e.g., weakly supervised NER). Our paper in ICLR-2021 proposes u

Yangming Li 128 Dec 29, 2022
TPlinker for NER 中文/英文命名实体识别

本项目是参考 TPLinker 中HandshakingTagging思想,将TPLinker由原来的关系抽取(RE)模型修改为命名实体识别(NER)模型。

GodK 113 Dec 28, 2022
Chinese NER with albert/electra or other bert descendable model (keras)

Chinese NLP (albert/electra with Keras) Named Entity Recognization Project Structure ./ ├── NER │   ├── __init__.py │   ├── log

null 2 Nov 20, 2022
Spacy-ginza-ner-webapi - Named Entity Recognition API with spaCy and GiNZA

Named Entity Recognition API with spaCy and GiNZA I wrote a blog post about this

Yuki Okuda 3 Feb 27, 2022