Назовите Обратную Частотой Частоту Документа (tf-idf) матрицей
задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение".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
bag
— Введите сумку слов или мешок n модели граммовbagOfWords
возразите | bagOfNgrams
объектВведите сумку слов или мешок n модели граммов в виде bagOfWords
возразите или bagOfNgrams
объект.
documents
— Введите документыtokenizedDocument
массив | массив строк слов | массив ячеек из символьных векторовВведите документы в виде tokenizedDocument
массив, массив строк слов или массив ячеек из символьных векторов. Если documents
не tokenizedDocument
массив, затем это должен быть вектор-строка, представляющий единый документ, где каждым элементом является слово. Чтобы задать несколько документов, используйте tokenizedDocument
массив.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'Normalized',true
задает, чтобы нормировать подсчет частот.'TFWeight'
— Метод, чтобы установиться коэффициент частоты термина'raw'
(значение по умолчанию) | 'binary'
| 'log'
Метод, чтобы установиться коэффициент частоты термина (TF) в виде разделенной запятой пары, состоящей из 'TFWeight'
и одно из следующего:
'raw'
– Установитесь коэффициент TF на неизменные количества термина.
'binary'
– Установитесь коэффициент TF на матрицу единиц и нулей, где те указывают, является ли термин в документе.
'log'
– Установитесь коэффициент TF на 1 + log(bag.Counts)
.
Пример: 'TFWeight','binary'
Типы данных: char
'IDFWeight'
— Метод, чтобы вычислить обратный фактор частоты документа'normal'
(значение по умолчанию) | 'textrank'
| 'classic-bm25'
| 'unary'
| 'smooth'
| 'max'
| 'probabilistic'
Метод, чтобы вычислить обратный фактор частоты документа в виде разделенной запятой пары, состоящей из '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+NT/NT)
.
'max'
– Для каждого термина, установленного коэффициент IDF на log(1+max(NT)/NT)
.
'probabilistic'
– Для каждого термина, установленного коэффициент IDF на log((N-NT)/NT)
.
где N
количество документов во входных данных и NT
количество документов во входных данных, содержащих каждый термин.
Пример: 'IDFWeight','smooth'
Типы данных: char
'IDFCorrection'
— Обратный поправочный коэффициент частоты документаОбратный поправочный коэффициент частоты документа в виде разделенной запятой пары, состоящей из 'IDFCorrection'
и неотрицательный скаляр.
Эта опция только применяется когда 'IDFWeight'
'textrank'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
'Normalized'
— Опция, чтобы нормировать количества терминаfalse
(значение по умолчанию) | true
Опция, чтобы нормировать количества термина в виде разделенной запятой пары, состоящей из 'Normalized'
и true
или false
. Если true
, затем функция нормирует каждый вектор количеств термина в Евклидовой норме.
Пример: 'Normalized',true
Типы данных: логический
'DocumentsIn'
— Ориентация выходных документов'rows'
(значение по умолчанию) | 'columns'
Ориентация выходных документов в матрице подсчета частот в виде разделенной запятой пары, состоящей из 'DocumentsIn'
и одно из следующего:
'rows'
– Возвратите матрицу подсчета частот со строками, соответствующими документам.
'columns'
– Возвратите транспонированную матрицу подсчета частот со столбцами, соответствующими документам.
Типы данных: char
'ForceCellOutput'
— Индикатор для принуждения выхода, который будет возвращен как массив ячеекfalse
(значение по умолчанию) | true
Индикатор для принуждения выхода, который будет возвращен как массив ячеек в виде запятой разделенная пара, состоящая из 'ForceCellOutput'
и true
или false
.
Типы данных: логический
M
— Выведите матрицу Частоты Документа Инверсии Частоты ТерминаВыведите матрицу Частоты Документа Инверсии Частоты Термина в виде разреженной матрицы или массива ячеек разреженных матриц.
Если bag
нескалярный массив или 'ForceCellOutput'
true
, затем функция возвращает выходные параметры как массив ячеек разреженных матриц. Каждым элементом в массиве ячеек является tf-idf матрица, вычисленная от соответствующего элемента bag
.
[1] Барриос, Федерико, Федерико Лопес, Луис Аргерих и Роза Уокэнчозер. "Изменения Функции Подобия TextRank для Автоматизированного Резюмирования". arXiv предварительно распечатывают arXiv:1602.03606 (2016).
bagOfNgrams
| bagOfWords
| encode
| tokenizedDocument
| topkngrams
| topkwords
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.