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) представляет подобие между ith и jдокументы th закодированы bag.

similarities = cosineSimilarity(bag,queries) возвращает общие черты между документами, закодированными сумкой слов или мешком n модели bag граммов и queries использование tf-idf матрицы выведено из подсчетов слов в bag. Счет в similarities(i,j) представляет подобие между iдокумент th закодирован 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")

Баллы близко к каждый указывает на сильное сходство. Баллы близко к нулю указывают на слабое подобие.

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

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")

Баллы близко к каждый указывает на сильное сходство. Баллы близко к нулю указывают на слабое подобие.

Создайте модель сумки слов из текстовых данных в 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")

Баллы близко к каждый указывает на сильное сходство. Баллы близко к нулю указывают на слабое подобие.

Для входа сумки слов, 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")

Баллы близко к каждый указывает на сильное сходство. Баллы близко к нулю указывают на слабое подобие.

Входные параметры

свернуть все

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

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

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

  • tokenizedDocument массив

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

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

Чтобы вычислить частоту термина и обратную статистику частоты документа, функция кодирует 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) и jдокумент запроса th, и N1 и N2 представляют количество документов в documents и queries, соответственно.

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

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