Введение 3
Постановка задачи 4
Глава 1. Сравнение свойств и обзор мер сходства. 4
Сравнение различных типов данных 4
Null 5
Строка и число, строка и true/false 5
Сравнение данных одного типа 6
Объект 6
Массив 7
Строка 8
Число 10
Значение true/false 11
Глава 2. Векторизация объектов и программная реализация. 11
Основные принципы векторизации 11
Набор объектов для примера и тестирования 12
Программная реализация 13
Заключение 16
Приложения 17
Приложение А. Примеры кода. 17
А.1. algojs: реализация алгоритмов вычисления мер сравнения и векторизации. 17
А.2. jaro_winklerjs: реализация вычисления сходства Джаро-Винклера,
из-за своей сложности вынесенная в отдельный файл. 22
А.3. data.js: тестовые данные. 24
А.4. index.html: визуализация применения алгоритмов на тестовых
данных. 27
Список литературы 31
Последние годы стремительными темпами набирают популярность сетевые технологии. Облачные вычисления, микросервисы, Интернет Вещей - термины, которые на слуху даже у людей, не связанных с IT. В связи с этим стал крайне популярен формат данных, используемый в web-приложениях - JavaScript Object Notation, или же JSON. JSON используется при обмене данных как между браузером и сервером при помощи технологии AJAX, так и между различными серверами. В этом формате можно представить практически любую структуру данных, будь то сведения о каком-то товаре, информация о человеке в социальной сети или набор характеристик некой системы. Но, как и многие понятные человеку системы, JSON плохо подходит для компьютерного анализа, из-за чего данные в этом формате зачастую необходимо преобразовывать в соответствии с конкретной задачей.
В рамках данной работы рассматривается способ преобразования подобных данных в многомерные векторы, которые лучше поддаются обработке и не требуют Ad-Hoc решений. В частности, предполагается преобразование в вектор размерности, равной количеству свойств у рассматриваемого объекта. Предлагается ввести некоторую меру сходства для сравнения соответствующих друг другу полей разных объектов, и на основании этой меры определять координаты получившегося вектора.
Постановка задачи
Целью данной работы является рассмотрение способа векторизации JSON-объектов на основании эталона. Для этого вычисляются меры сходства полей объектов с соответствующими полями эталона, затем вычисленные значения используются в качестве координат результирующего вектора. При написании работы были поставлены следующие задачи:
1. Рассмотреть варианты сравнения свойств и различные меры сходства, а также проверить, как они показывают себя на практике;
2. Разработать программный продукт, позволяющий производить векторизацию набора однородных объектов основываясь на сделанных выводах.
В рамках данной работы были получены следующие результаты:
• Рассмотрены различные меры сходства однотипных данных и выбраны лучшие для каждого типа, либо приведено несколько равноправных альтернатив. Для некоторых типов были рассмотрены возможности сравнения с другими типами данных;
• Разработано приложение, реализующее вычисление вышеописанных мер сходства и использование их в целях векторизации JSON-объектов на основании эталона;
• Сгенерирован набор тестовых данных, содержащий список JSON-объектов, состоящих из разнотипных полей таким образом, чтобы каждый из рассматриваемых типов присутствовал в этих объектах;
• Реализовано дополнение к основным алгоритмам, предоставляющее визуализацию результатов их работы на тестовом наборе данных.
Полученные результаты имеют обширную область применения. Так, их можно использовать как для различных рекомендательных систем, от подбора похожих товаров в интернет-магазине до поиска друзей по интересам в социальных сетях, так и для последующего анализа полученных данных. Векторный вид результата позволяет использовать множество различных методов для разностороннего анализа.
[1] https://tools.ietf.org/html/rfc8259
[2] Guenther Retscher, Julian Joksch - Comparison of Different Vector Distance Measure Calculation Variants for Indoor Location Fingerprinting
[3] Li, B. & Han, L. (2013). Distance weighted cosine similarity measure for text classification.
[4] Winkler, William E. (1990) - String Comparator Metrics and Enhanced Decision Rulesin the Fellegi-Sunter Model of Record Linkage
[5] Ilya Ilyankou - Comparison of Jaro-Winkler and Ratcliff/Obershelp algorithms in spell check
[6] https://getbootstrap.com/docs/4.5