Vec2Read – An NLU-powered tool for knowledge discovery, classification, diagnostics and prediction.
You can preview a completed latest version of the Vec2Read app here:
Project and documentation are in active development! For any technical clarifications and questions contact us via Issues section of this repository.
Vec2Read – сервис, когнитивно-семантический калькулятор, работающий на основе NLU, для выявления, классификации, диагностики и прогнозирования знаний.
Сервис Vec2Read вычисляет семантические отношения между сущностями естественного языка в рамках выбранной дистрибутивно-семантической модели векторного представления сущностей.
Вы можете просмотреть актуальную версию приложения Vec2Read по ссылке:
Проект и документация находятся в активной разработке! По любым техническим разъяснениям и вопросам свяжитесь с нами через раздел Issues.
Векторное представление (англ. Word embedding) – это методика/техника, рассматривающая сущности (слова, термины, документы и прочее) как векторы, относительное сходство между которыми коррелирует с семантическим сходством. Такая методика является одним из наиболее успешных примеров применения обучения без учителя (unsupervised learning). Векторные представления – методика для обработки естественного языка, альтернативная традиционной, позволяющая отображать сущности (слова, словосочетания, термины или документы) из "словаря" на векторы действительных чисел в малом относительно размера "словаря" пространстве, а сходство между векторами коррелирует с семантическим сходством между сущностями.
Современные векторные модели позволяют вычислить семантическое сходство между словами, предложениями или документами, и именно на этих возможностях основывается их использование для решения задач обработки естественного языка. Векторные представления используют непосредственно, а также как признаки решения прежде всего задач классификации и кластеризации: распознавание именуемых сущностей, морфологический анализ слов, анализ тональности текстов, классификация/кластеризация документов, классификация/кластеризация поисковых запросов, классификация веб-страниц, ранжирование документов, кластеризация заголовков веб-страниц. Также с использованием векторных представлений решают задачи генерации текстов, машинного перевода, обнаружения парафраз, моделирования текстов.
- Назначение и функции
- Программные зависимости
- Компиляция, сборка и развертывание сетевого средства – сервиса Vec2Read (из GitHub репозитория) в среде UNIX-подобных операционных систем Linux
Мережевий засіб 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:
Project and documentation are in active development! For any technical clarifications and questions contact us via Issues.
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.
- 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.
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