Term Frequency-Inverse Document Frequency (tf-idf) матрица
задает дополнительные опции, используя один или несколько аргументы пары "имя-значение".M
= tfidf(___,Name,Value
)
Создайте Term Frequency-Inverse Document Frequency (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
Создайте Term Frequency-Inverse Document Frequency (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'
- Используйте взвешивание IDF TextRank [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'
- Коэффициент коррекции частоты обратного документаКоэффициент коррекции частоты обратного документа, заданный как разделенная разделенными запятой парами, состоящая из 'IDFCorrection'
и неотрицательный скаляр.
Эта опция применяется только при 'IDFWeight'
является 'textrank'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
'Normalized'
- Опция нормализации подсчета членовfalse
(по умолчанию) | true
Опция для нормализации отсчётов терминов, заданная как разделенная разделенными запятой парами, состоящая из 'Normalized'
и true
или false
. Если true
, затем функция нормирует каждый вектор отсчётов членов в евклидовой норме.
Пример: 'Normalized',true
Типы данных: logical
'DocumentsIn'
- Ориентация выходных документов'rows'
(по умолчанию) | 'columns'
Ориентация выхода документов в частотной матрице count, заданная как разделенная запятой пара, состоящая из 'DocumentsIn'
и одно из следующих:
'rows'
- Возвращает матрицу отсчётов частот со строками, соответствующими документам.
'columns'
- Возвращает транспонированную матрицу отсчётов частот со столбцами, соответствующими документам.
Типы данных: char
'ForceCellOutput'
- Индикатор для принудительного возврата выхода в виде массива ячеекfalse
(по умолчанию) | true
Индикатор для принудительного возврата выхода в виде массива ячеек, заданный как разделенная запятыми пара, состоящая из 'ForceCellOutput'
и true
или false
.
Типы данных: logical
M
- Выводит частотно-обратную матрицу частоты документаВыводная терминологическая матрица частоты-обратной частоты документа, заданная как разреженная матрица или массив ячеек из разреженных матриц.
Если bag
является некалярным массивом или 'ForceCellOutput'
является true
, затем функция возвращает выходы как массив ячеек разреженных матриц. Каждый элемент массива ячеек является матрицей tf-idf, вычисленной из соответствующего элемента bag
.
[1] Барриос, Федерико, Федерико Лопес, Луис Аргерих и Роза Вахеншаузер. «Изменения функции подобия TextRank for Automated Summarization». arXiv preprint arXiv:1602.03606 (2016).
bagOfNgrams
| bagOfWords
| encode
| tokenizedDocument
| topkngrams
| topkwords
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.