malakhovks / vec2read

Vec2Read - Программный комплекс для развития навыков скорочтения у детей начального общего образования. An NLP-Powered set of services for the speed reading skills evolution in children of primary general education.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Vec2Read

Vec2Read – An NLU-powered tool for knowledge discovery, classification, diagnostics and prediction.

You can preview a completed latest version of the Vec2Read app here:

Caution/Disclaimer

Project and documentation are in active development! For any technical clarifications and questions contact us via Issues section of this repository.

Choose your language / Выберите язык


Vec2Read – сервис, когнитивно-семантический калькулятор, работающий на основе NLU, для выявления, классификации, диагностики и прогнозирования знаний.

Сервис Vec2Read вычисляет семантические отношения между сущностями естественного языка в рамках выбранной дистрибутивно-семантической модели векторного представления сущностей.

Вы можете просмотреть актуальную версию приложения Vec2Read по ссылке:

Внимание

Проект и документация находятся в активной разработке! По любым техническим разъяснениям и вопросам свяжитесь с нами через раздел Issues.

Понятие векторного представления сущностей

Векторное представление (англ. Word embedding) – это методика/техника, рассматривающая сущности (слова, термины, документы и прочее) как векторы, относительное сходство между которыми коррелирует с семантическим сходством. Такая методика является одним из наиболее успешных примеров применения обучения без учителя (unsupervised learning). Векторные представления – методика для обработки естественного языка, альтернативная традиционной, позволяющая отображать сущности (слова, словосочетания, термины или документы) из "словаря" на векторы действительных чисел в малом относительно размера "словаря" пространстве, а сходство между векторами коррелирует с семантическим сходством между сущностями.

Применение векторных представлений

Современные векторные модели позволяют вычислить семантическое сходство между словами, предложениями или документами, и именно на этих возможностях основывается их использование для решения задач обработки естественного языка. Векторные представления используют непосредственно, а также как признаки решения прежде всего задач классификации и кластеризации: распознавание именуемых сущностей, морфологический анализ слов, анализ тональности текстов, классификация/кластеризация документов, классификация/кластеризация поисковых запросов, классификация веб-страниц, ранжирование документов, кластеризация заголовков веб-страниц. Также с использованием векторных представлений решают задачи генерации текстов, машинного перевода, обнаружения парафраз, моделирования текстов.

Содержание


Назначение и функции

Мережевий засіб Vec2Read (у вигляді веб-сервісу з API) – це інструмент, який дозволяє досліджувати семантичні відношення між словами в рамках прогностичних моделей дистрибутивної семантики, з використанням програмної бібліотеки з відкритим вихідним кодом для передової обробки та математичного моделювання природної мови gensim (яка включає інтерфейс прикладного програмування для роботи з алгоритмами Word2vec, fastText та інші).

Можна образно назвати Мережевий засіб Vec2Read "когнітивно-семантичним калькулятором". Користувач може вибрати одну або кілька з ретельно підготовлених (або використовувати інші векторні представлення для слів Word Embeddings, які вільно поширюються) прогностичних моделей дистрибутивної семантики, навчених на різних корпусах текстів, зокрема, таких наборів даних:

  • художественная литература.

Сервис Vec2Read охватывает следующие элементы дистрибутивно-семантического анализа:

  • вычисление семантического сходства/близости между парами слов в рамках выбранной прогностической модели дистрибутивной семантики;
  • нахождение слов, ближайших к заданному (с возможностью фильтрации по алфавиту и коэффициенту косинусного сходства/близости) в рамках выбранной прогностической модели дистрибутивной семантики (вычисление семантических ассоциатов). Коэффициент косинусной близости может принимать значение в промежутке [-1…1]. Если коэффициент косинусного сходства/близости сущностей (слов) принимает значение в промежутке [-1…0,5] – это свидетельствует об отсутствии похожих контекстов в наборе данных и малой семантической близости слов. Если коэффициент косинусного сходства/близости сущностей (слов) принимает значение в промежутке [0,5…1] – это свидетельствует о наличии схожих контекстов в наборе данных и большей семантической близости слов. Чем больше коэффициент косинусного сходства/близости приближается к 1, тем больше семантическая близость слов и больше похожих контекстов в наборе данных;
  • выполнение над векторами слов алгебраических операций (сложение, вычитание, поиск центра лексического кластера и расстояний к этому центру) в рамках выбранной прогностической модели дистрибутивной семантики;
  • генерирование семантических карт (с использованием программного инструментария с открытым исходным кодом TensorFlow, а именно TensorBoard) отношений между словами (это позволяет выявлять семантические кластеры или тестировать гипотезы на таких кластерах);
  • получение векторов (в виде массива чисел) и их визуализацию для заданного слова в рамках выбранной прогностической модели дистрибутивной семантики;
  • скачать для дальнейшего использования выбранную прогностическую модель дистрибутивной семантики;
  • использование других свободно распространяемых прогностических моделей дистрибутивной семантики с помощью настройки конфигурационного файла.

Программные зависимости

  • Python 3.8.6+ – інтерпретатор та стандартні бібліотеки;
  • gensim – програмна бібліотека з відкритим вихідним кодом для передової обробки та математичного моделювання природної мови;
  • Flask – мікрофреймворк для веб-додатків;
  • Flask-CORS – розширення Flask для обробки спільного використання ресурсів з різних джерел (англ. Cross-Origin Resource Sharing, CORS);
  • uWSGI – веб-сервер і сервер веб-додатків, спочатку реалізований для запуску додатків Python через протокол WSGI (і його бінарний варіант uwsgi);
  • Pandas – програмна бібліотека, написана для мови програмування Python для маніпулювання даними та їхнього аналізу. Вона, зокрема, пропонує структури даних та операції для маніпулювання чисельними таблицями та часовими рядами;
  • nginx – вільний веб-сервер і проксі-серверl;
  • Angular – написаний на TypeScript front-end фреймворк з відкритим кодом для розробки односторінкових застосунків (англ. Single-page application, SPA). В програмній інженерії терміни «front-end» та «back-end» розрізняють за принципом розділення відповідальності між рівнем представлення та рівнем доступу до даних відповідно. Front-end – це інтерфейс для взаємодії між користувачем і back-end. Front-end та back-end можуть бути розподілені між однією або кількома системами. В програмній архітектурі може бути багато рівнів між апаратним забезпеченням та кінцевим користувачем. Кожен з цих рівнів може мати як front-end, так і back-end. Front – це абстракція, спрощення базового компоненту через надання користувачу зручного інтерфейсу взаємодію з SPA.
  • Docker – інструментарій для управління ізольованими Linux-контейнерами.

docsim/UkrVectōrēs - An NLU-Powered tool for knowledge discovery, classification, diagnostics and prediction.

You can preview a completed latest version of the UkrVectōrēs app here:

Caution/Disclaimer

Project and documentation are in active development! For any technical clarifications and questions contact us via Issues.

Table of Contents


Features

You can think about Vec2Read as a kind of "cognitive-semantic calculator". The online toolkit Vec2Read covers the following elements of distributional analysis:

  • calculate semantic similarity between pairs of words;
  • find words semantically closest to the query word;
  • apply simple algebraic operations to word vectors (addition, subtraction, finding average vector for a group of words and distances to this average value);
  • draw semantic maps of relations between input words (it is useful to explore clusters and oppositions, or to test your hypotheses about them);
  • get the raw vectors (arrays of real values) and their visualizations for words in the chosen model;
  • download default models;
  • use other prognostic models distributive semantics freely distributed, by adjusting the configuration file.

Dependencies

  • Python 3.8.6+;
  • gensim 3.8.3;
  • Flask 1.1.2;
  • Flask-CORS 3.0.9;
  • uWSGI 2.0.19.1;
  • Pandas latest;
  • nginx latest;
  • Angular latest;
  • Docker latest;
  • docker-compose.

Building and running under UNIX (Linux/MacOS) with Docker

Clone from GitHub repository:

git clone https://github.com/malakhovks/docsim.git

Or clone from the specific branch/tag of GitHub repository:

git clone --depth=1 --branch=<tag_name> <repo_url>

Checkout the branch you want to use:

git checkout <branch_name>

Build an docker image from Dockerfile-nginx, Dockerfile-docsim with docker-compose:

docker-compose up -d

About

Vec2Read - Программный комплекс для развития навыков скорочтения у детей начального общего образования. An NLP-Powered set of services for the speed reading skills evolution in children of primary general education.

License:MIT License


Languages

Language:JavaScript 97.4%Language:Python 0.8%Language:TypeScript 0.8%Language:HTML 0.7%Language:Sass 0.3%