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) возвращает попарное сходство для документов, закодированных указанной моделью bag-of-words или bag-of-gams с помощью матрицы tf-idf, полученной из счетчиков слов в bag. Счет в similarities(i,j) представляет сходство между iи jПервые документы закодированы bag.

similarities = cosineSimilarity(bag,queries) возвращает сходство между документами, закодированными моделью bag-of-words или bag-of-gams 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, выведенной из модели. Чтобы вычислить косинусоидальное сходство векторов счета слов непосредственно, введите слово counts в 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;

Вычислим сходство документа косинуса матрицы count слов с помощью 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 массив

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

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

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

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

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

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

свернуть все

Счета косинусоидальности, возвращенная как разреженная матрица:

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

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

  • Учитывая одну модель мешка слов или мешка n-граммов, similarities является bag.NumDocuments-by- 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)-by- size(M,1) симметричная матрица, где similarities(i,j) представляет собой сходство между M(i,:) и M(j,:).

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

Введенный в R2020a