tfidf

Назовите Обратную Частотой Частоту Документа (tf-idf) матрицей

Описание

пример

M = tfidf(bag) возвращает Частоту Документа Инверсии Частоты Термина (tf-idf) матрица на основе сумки слов или мешка n модели bag граммов.

пример

M = tfidf(bag,documents) возвращает tf-idf матрицу для документов в documents при помощи фактора обратной частоты документа (IDF), вычисленного из bag.

пример

M = tfidf(___,Name,Value) задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение".

Примеры

свернуть все

Создайте Частоту Документа Инверсии Частоты Термина (tf-idf) матрица из модели сумки слов.

Загрузите данные в качестве примера. Файл sonnetsPreprocessed.txt содержит предварительно обработанные версии сонетов Шекспира. Файл содержит один сонет на строку со словами, разделенными пробелом. Извлеките текст из sonnetsPreprocessed.txt, разделите текст в документы в символах новой строки, и затем маркируйте документы.

filename = "sonnetsPreprocessed.txt";
str = extractFileText(filename);
textData = split(str,newline);
documents = tokenizedDocument(textData);

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

bag = bagOfWords(documents)
bag = 
  bagOfWords with properties:

          Counts: [154x3092 double]
      Vocabulary: ["fairest"    "creatures"    "desire"    ...    ]
        NumWords: 3092
    NumDocuments: 154

Создайте tf-idf матрицу. Просмотрите первые 10 строк и столбцов.

M = tfidf(bag);
full(M(1:10,1:10))
ans = 10×10

    3.6507    4.3438    2.7344    3.6507    4.3438    2.2644    3.2452    3.8918    2.4720    2.5520
         0         0         0         0         0    4.5287         0         0         0         0
         0         0         0         0         0         0         0         0         0    2.5520
         0         0         0         0         0    2.2644         0         0         0         0
         0         0         0         0         0    2.2644         0         0         0         0
         0         0         0         0         0    2.2644         0         0         0         0
         0         0         0         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0         0         0
         0         0         0         0         0    2.2644         0         0         0    2.5520
         0         0    2.7344         0         0         0         0         0         0         0

Создайте Частоту Документа Инверсии Частоты Термина (tf-idf) матрица из модели сумки слов и массива новых документов.

Загрузите данные в качестве примера. Файл sonnetsPreprocessed.txt содержит предварительно обработанные версии сонетов Шекспира. Файл содержит один сонет на строку со словами, разделенными пробелом. Извлеките текст из sonnetsPreprocessed.txt, разделите текст в документы в символах новой строки, и затем маркируйте документы.

filename = "sonnetsPreprocessed.txt";
str = extractFileText(filename);
textData = split(str,newline);
documents = tokenizedDocument(textData);

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

bag = bagOfWords(documents) 
bag = 
  bagOfWords with properties:

          Counts: [154x3092 double]
      Vocabulary: ["fairest"    "creatures"    "desire"    ...    ]
        NumWords: 3092
    NumDocuments: 154

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

newDocuments = tokenizedDocument([
    "what's in a name? a rose by any other name would smell as sweet."
    "if music be the food of love, play on."]);
M = tfidf(bag,newDocuments)
M = 
   (1,7)       3.2452
   (1,36)      1.2303
   (2,197)     3.4275
   (2,313)     3.6507
   (2,387)     0.6061
   (1,1205)    4.7958
   (1,1835)    3.6507
   (2,1917)    5.0370

Загрузите данные в качестве примера. Файл sonnetsPreprocessed.txt содержит предварительно обработанные версии сонетов Шекспира. Файл содержит один сонет на строку со словами, разделенными пробелом. Извлеките текст из sonnetsPreprocessed.txt, разделите текст в документы в символах новой строки, и затем маркируйте документы.

filename = "sonnetsPreprocessed.txt";
str = extractFileText(filename);
textData = split(str,newline);
documents = tokenizedDocument(textData);

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

bag = bagOfWords(documents)
bag = 
  bagOfWords with properties:

          Counts: [154x3092 double]
      Vocabulary: ["fairest"    "creatures"    "desire"    ...    ]
        NumWords: 3092
    NumDocuments: 154

Создайте tf-idf матрицу. Просмотрите первые 10 строк и столбцов.

M = tfidf(bag);
full(M(1:10,1:10))
ans = 10×10

    3.6507    4.3438    2.7344    3.6507    4.3438    2.2644    3.2452    3.8918    2.4720    2.5520
         0         0         0         0         0    4.5287         0         0         0         0
         0         0         0         0         0         0         0         0         0    2.5520
         0         0         0         0         0    2.2644         0         0         0         0
         0         0         0         0         0    2.2644         0         0         0         0
         0         0         0         0         0    2.2644         0         0         0         0
         0         0         0         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0         0         0
         0         0         0         0         0    2.2644         0         0         0    2.5520
         0         0    2.7344         0         0         0         0         0         0         0

Можно изменить вклады, сделанные TF и факторами IDF к tf-idf матрице путем определения TF и формул веса IDF.

Чтобы проигнорировать, сколько раз слово появляется в документе, используйте бинарную опцию 'TFWeight'. Создайте tf-idf матрицу и установите 'TFWeight' к 'binary'. Просмотрите первые 10 строк и столбцов.

M = tfidf(bag,'TFWeight','binary');
full(M(1:10,1:10))
ans = 10×10

    3.6507    4.3438    2.7344    3.6507    4.3438    2.2644    3.2452    1.9459    2.4720    2.5520
         0         0         0         0         0    2.2644         0         0         0         0
         0         0         0         0         0         0         0         0         0    2.5520
         0         0         0         0         0    2.2644         0         0         0         0
         0         0         0         0         0    2.2644         0         0         0         0
         0         0         0         0         0    2.2644         0         0         0         0
         0         0         0         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0         0         0
         0         0         0         0         0    2.2644         0         0         0    2.5520
         0         0    2.7344         0         0         0         0         0         0         0

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

свернуть все

Введите сумку слов или мешок n модели граммов в виде bagOfWords возразите или bagOfNgrams объект.

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

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'Normalized',true задает, чтобы нормировать подсчет частот.

Метод, чтобы установиться коэффициент частоты термина (TF) в виде разделенной запятой пары, состоящей из 'TFWeight' и одно из следующего:

  • 'raw' – Установитесь коэффициент TF на неизменные количества термина.

  • 'binary' – Установитесь коэффициент TF на матрицу единиц и нулей, где те указывают, является ли термин в документе.

  • 'log' – Установитесь коэффициент TF на 1 + log(bag.Counts).

Пример: 'TFWeight','binary'

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

Метод, чтобы вычислить обратный фактор частоты документа в виде разделенной запятой пары, состоящей из 'IDFWeight' и одно из следующего:

  • 'textrank' – Используйте TextRank IDF, взвешивающий [1]. Для каждого термина, установленного коэффициент IDF на

    • log((N-NT+0.5)/(NT+0.5)) если термин происходит больше чем в половине документов, где N количество документов во входных данных и NT количество документов во входных данных, содержащих каждый термин.

    • IDFCorrection*avgIDF если термин происходит в половине документов или f, где avgIDF средний IDF всех лексем.

  • 'classic-bm25' – Для каждого термина, установленного коэффициент IDF на log((N-NT+0.5)/(NT+0.5)).

  • 'normal' – Для каждого термина, установленного коэффициент IDF на log(N/NT).

  • 'unary' – Для каждого термина, установленного коэффициент IDF на 1.

  • 'smooth' – Для каждого термина, установленного коэффициент IDF на log(1+N/NT).

  • 'max' – Для каждого термина, установленного коэффициент IDF на log(1+max(NT)/NT).

  • 'probabilistic' – Для каждого термина, установленного коэффициент IDF на log((N-NT)/NT).

где N количество документов во входных данных и NT количество документов во входных данных, содержащих каждый термин.

Пример: 'IDFWeight','smooth'

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

Обратный поправочный коэффициент частоты документа в виде разделенной запятой пары, состоящей из 'IDFCorrection' и неотрицательный скаляр.

Эта опция только применяется когда 'IDFWeight' 'textrank'.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Опция, чтобы нормировать количества термина в виде разделенной запятой пары, состоящей из 'Normalized' и true или false. Если true, затем функция нормирует каждый вектор из количеств термина в Евклидовой норме.

Пример: 'Normalized',true

Типы данных: логический

Ориентация выходных документов в матрице подсчета частот в виде разделенной запятой пары, состоящей из 'DocumentsIn' и одно из следующего:

  • 'rows' – Возвратите матрицу подсчета частот со строками, соответствующими документам.

  • 'columns' – Возвратите транспонированную матрицу подсчета частот со столбцами, соответствующими документам.

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

Индикатор для принуждения выхода, который будет возвращен как массив ячеек в виде запятой разделенная пара, состоящая из 'ForceCellOutput' и true или false.

Типы данных: логический

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

свернуть все

Выведите матрицу Частоты Документа Инверсии Частоты Термина в виде разреженной матрицы или массива ячеек разреженных матриц.

Если bag нескалярный массив или 'ForceCellOutput' true, затем функция возвращает выходные параметры как массив ячеек разреженных матриц. Каждым элементом в массиве ячеек является tf-idf матрица, вычисленная от соответствующего элемента bag.

Ссылки

[1] Барриос, Федерико, Федерико Лопес, Луис Аргерих и Роза Уокэнчозер. "Изменения Функции Подобия TextRank для Автоматизированного Резюмирования". arXiv предварительно распечатывают arXiv:1602.03606 (2016).

Введенный в R2017b