exponenta event banner

cosineSimilarity

Сходство документа с косинусным сходством

Описание

пример

similarities = cosineSimilarity(documents) возвращает сходство парных косинусов для указанных документов с помощью матрицы tf-idf, полученной из их числа слов. Оценка в similarities(i,j) представляет сходство между documents(i) и documents(j).

пример

similarities = cosineSimilarity(documents,queries) возвращает сходства между documents и queries использование матриц tf-idf, полученных из числа слов в documents. Оценка в similarities(i,j) представляет сходство между documents(i) и queries(j).

пример

similarities = cosineSimilarity(bag) возвращает парные сходства для документов, закодированных указанной моделью мешка слов или мешка n граммов, используя матрицу tf-idf, полученную из числа слов в bag. Оценка в similarities(i,j) представляет сходство между iи jдокументы, закодированные bag.

similarities = cosineSimilarity(bag,queries) возвращает сходства между документами, закодированными с помощью модели мешка слов или мешка n-граммов bag и queries использование матриц tf-idf, полученных из числа слов в bag. Оценка в similarities(i,j) представляет сходство между iдокумент, закодированный bag и queries(j).

пример

similarities = cosineSimilarity(M) возвращает сходства для данных, закодированных в векторах строк матрицы M. Оценка в similarities(i,j) представляет сходство между M(i,:) и M(j,:).

similarities = cosineSimilarity(M1,M2) возвращает сходства между документами, закодированными в матрицах M1 и M2. Оценка в similarities(i,j) соответствует сходству между M1(i,:) и M2(j,:).

Примеры

свернуть все

Создание массива маркированных документов.

textData = [
    "the quick brown fox jumped over the lazy dog"
    "the fast brown fox jumped over the lazy dog"
    "the lazy dog sat there and did nothing"
    "the other animals sat there watching"];
documents = tokenizedDocument(textData)
documents = 
  4x1 tokenizedDocument:

    9 tokens: the quick brown fox jumped over the lazy dog
    9 tokens: the fast brown fox jumped over the lazy dog
    8 tokens: the lazy dog sat there and did nothing
    6 tokens: the other animals sat there watching

Рассчитайте сходство между ними с помощью cosineSimilarity функция. Выходной сигнал является разреженной матрицей.

similarities = cosineSimilarity(documents);

Визуализация сходства между документами на тепловой карте.

figure
heatmap(similarities);
xlabel("Document")
ylabel("Document")
title("Cosine Similarities")

Figure contains an object of type heatmap. The chart of type heatmap has title Cosine Similarities.

Баллы, близкие к одному, указывают на сильное сходство. Оценки, близкие к нулю, указывают на слабое сходство.

Создайте массив входных документов.

str = [
    "the quick brown fox jumped over the lazy dog"
    "the fast fox jumped over the lazy dog"
    "the dog sat there and did nothing"
    "the other animals sat there watching"];
documents = tokenizedDocument(str)
documents = 
  4x1 tokenizedDocument:

    9 tokens: the quick brown fox jumped over the lazy dog
    8 tokens: the fast fox jumped over the lazy dog
    7 tokens: the dog sat there and did nothing
    6 tokens: the other animals sat there watching

Создайте массив документов запроса.

str = [
    "a brown fox leaped over the lazy dog"
    "another fox leaped over the dog"];
queries = tokenizedDocument(str)
queries = 
  2x1 tokenizedDocument:

    8 tokens: a brown fox leaped over the lazy dog
    6 tokens: another fox leaped over the dog

Расчет сходства между входными и запросными документами с помощью cosineSimilarity функция. Выходной сигнал является разреженной матрицей.

similarities = cosineSimilarity(documents,queries);

Визуализация сходства документов на тепловой карте.

figure
heatmap(similarities);
xlabel("Query Document")
ylabel("Input Document")
title("Cosine Similarities")

Figure contains an object of type heatmap. The chart of type heatmap has title Cosine Similarities.

Баллы, близкие к одному, указывают на сильное сходство. Оценки, близкие к нулю, указывают на слабое сходство.

Создание модели пакета слов на основе текстовых данных в sonnets.csv.

filename = "sonnets.csv";
tbl = readtable(filename,'TextType','string');
textData = tbl.Sonnet;
documents = tokenizedDocument(textData);
bag = bagOfWords(documents)
bag = 
  bagOfWords with properties:

          Counts: [154x3527 double]
      Vocabulary: [1x3527 string]
        NumWords: 3527
    NumDocuments: 154

Рассчитайте сходство между сонетами с помощью cosineSimilarity функция. Выходной сигнал является разреженной матрицей.

similarities = cosineSimilarity(bag);

Визуализация сходства первых пяти документов в тепловой карте.

figure
heatmap(similarities(1:5,1:5));
xlabel("Document")
ylabel("Document")
title("Cosine Similarities")

Figure contains an object of type heatmap. The chart of type heatmap has title Cosine Similarities.

Баллы, близкие к одному, указывают на сильное сходство. Оценки, близкие к нулю, указывают на слабое сходство.

Для ввода пакета слов, cosineSimilarity функция вычисляет косинусное сходство, используя матрицу tf-idf, полученную из модели. Чтобы вычислить косинусное сходство на векторах подсчета слов непосредственно, введите число слов в cosineSimilarity функция в качестве матрицы.

Создание модели пакета слов на основе текстовых данных в sonnets.csv.

filename = "sonnets.csv";
tbl = readtable(filename,'TextType','string');
textData = tbl.Sonnet;
documents = tokenizedDocument(textData);
bag = bagOfWords(documents)
bag = 
  bagOfWords with properties:

          Counts: [154x3527 double]
      Vocabulary: [1x3527 string]
        NumWords: 3527
    NumDocuments: 154

Получение матрицы счетчиков слов из модели.

M = bag.Counts;

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

similarities = cosineSimilarity(M);

Визуализация сходства первых пяти документов в тепловой карте.

figure
heatmap(similarities(1:5,1:5));
xlabel("Document")
ylabel("Document")
title("Cosine Similarities")

Figure contains an object of type heatmap. The chart of type heatmap has title Cosine Similarities.

Баллы, близкие к одному, указывают на сильное сходство. Оценки, близкие к нулю, указывают на слабое сходство.

Входные аргументы

свернуть все

Исходные документы, указанные как tokenizedDocument массив, строковый массив слов или массив ячеек символьных векторов. Если documents не является tokenizedDocument массив, то это должен быть вектор строки, представляющий один документ, где каждый элемент является словом. Чтобы указать несколько документов, используйте tokenizedDocument массив.

Входная модель сумки слов или сумки n граммов, указанная как bagOfWords объект или bagOfNgrams объект. Если bag является bagOfNgrams объект, то функция рассматривает каждый n-грамм как одно слово.

Набор документов запроса, указанный как один из следующих:

  • A tokenizedDocument множество

  • Массив 1-by-N строк, представляющий один документ, где каждый элемент является словом

  • Массив 1-by-N ячеек символьных векторов, представляющих один документ, где каждый элемент является словом

Для вычисления статистики частоты терминов и обратной частоты документа функция кодирует queries с использованием модели мешка слов. Используемая модель зависит от синтаксиса, с помощью которого она вызывается. Если синтаксис указывает входной аргумент documents, то он использует bagOfWords(documents). Если указан синтаксис bag, то функция кодирует queries использование bag затем использует результирующую матрицу tf-idf.

Входные данные, указанные как матрица. Например, M может быть матрицей числа слов или n-грамм или матрицей tf-idf.

Типы данных: double

Выходные аргументы

свернуть все

Показатели косинусного сходства, возвращенные в виде разреженной матрицы:

  • Учитывая один массив маркированных документов, similarities - симметричная матрица N-на-N, где similarities(i,j) представляет сходство между documents(i) и documents(j)и N - количество входных документов.

  • Учитывая массив маркированных документов и набор документов запроса, similarities - матрица N1-by-N2, где similarities(i,j) представляет сходство между documents(i) и jДокумент запроса, а N1 и N2 представляет количество документов в documents и queriesсоответственно.

  • Учитывая модель одного пакета слов или пакета n-граммов, similarities является bag.NumDocumentsоколо-bag.NumDocuments симметричная матрица, где similarities(i,j) представляет сходство между iи jдокументы, закодированные bag.

  • Учитывая сумку слов или сумку n-грамм моделей и набор документов запроса, similarities является bag.NumDocuments-by-N2 матрица, где similarities(i,j) представляет сходство между iдокумент, закодированный bag и j-й документ в queriesи N2 соответствует количеству документов в queries.

  • Учитывая одну матрицу, similarities является size(M,1)около-size(M,1) симметричная матрица, где similarities(i,j) представляет сходство между M(i,:) и M(j,:).

  • Учитывая две матрицы, similarities является size(M1,1)около-size(M2,1) матрица, где similarities(i,j) представляет сходство между M1(i,:) и M2(j,:).

Представлен в R2020a