tfidf

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

Синтаксис

M = tfidf(bag)
M = tfidf(bag,documents)
M = tfidf(___,Name,Value)

Описание

пример

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: [1x3092 string]
        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: [1x3092 string]
        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: [1x3092 string]
        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 является массивом строк или массивом ячеек из символьных векторов, то это должен быть вектор - строка, представляющий единый документ, где каждый элемент является словом.

Аргументы в виде пар имя-значение

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

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

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

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

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

  • журнал Установите фактор TF на 1 + log(bag.Counts).

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

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

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

  • '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 является количеством документов в bag, и NT является количеством документов, содержащих каждый термин, который эквивалентен sum(bag.Counts).

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

Введенный в R2017b