stopwordsDefault: преобразование текста для Машинного обучения
Преобразование текста, которое может выполняться в данных перед обучением модели.
Использование
stopwordsDefault()
stopwordsCustom(dataFile = "")
termDictionary(terms = "", dataFile = "", sort = "occurrence")
featurizeText(vars, language = "English", stopwordsRemover = NULL,
case = "lower", keepDiacritics = FALSE, keepPunctuations = TRUE,
keepNumbers = TRUE, dictionary = NULL,
wordFeatureExtractor = ngramCount(), charFeatureExtractor = NULL,
vectorNormalizer = "l2", ...)
Аргументы
dataFile
character: <string>. Файл данных, содержащий термины (краткие данные формы).
terms
Необязательный символьный вектор терминов или категорий.
sort
Указывает порядок элементов при векторизации. Поддерживаются два возможных порядка:
"occurrence"
: элементы отображаются в порядке обнаружения."value"
: элементы сортируются в соответствии с их методом сравнения по умолчанию. Например, при сортировке текста будет учитываться регистр (сначала "A", затем "Z" и затем "a").
vars
Именованный список векторов символов имен входных переменных и имени выходной переменной. Обратите внимание, что входные переменные должны иметь один и тот же тип. Для однозначного соответствия между входными и выходными переменными можно использовать именованный вектор символов.
language
Указывает язык, используемый в наборе данных. Поддерживаются следующие значения.
"AutoDetect"
: для автоматического определения языка."English"
."French"
."German"
."Dutch"
."Italian"
."Spanish"
."Japanese"
.
stopwordsRemover
Задает используемый модуль удаления стоп-слов. Поддерживаются три значения параметра.
NULL
: модуль удаления стоп-слов не используется.stopwordsDefault
: используется предварительно скомпилированный стоп-слов для конкретного языка, содержащий наиболее распространенные слова из Microsoft Office.stopwordsCustom
: определяемый пользователем список стоп-слов. Он принимает следующий параметр:dataFile
.
Значение по умолчанию —NULL
.
case
Текстовый регистр, использующий правила инвариантного языка и региональных параметров. Принимает следующие значения:
"lower"
."upper"
."none"
.
Значение по умолчанию —"lower"
.
keepDiacritics
FALSE
для удаления диакритических знаков; TRUE
для сохранения диакритических знаков. Значение по умолчанию — FALSE
.
keepPunctuations
FALSE
для удаления знаков препинания; TRUE
для сохранения знаков препинания. Значение по умолчанию — TRUE
.
keepNumbers
FALSE
для удаления чисел; TRUE
для сохранения чисел. Значение по умолчанию — TRUE
.
dictionary
termDictionary
разрешенных терминов, который принимает следующие параметры:
terms
,dataFile
иsort
.
По умолчанию используется значениеNULL
. Обратите внимание, что список стоп-слов имеет приоритет над словарем разрешенных терминов, так как стоп-слова удаляются до того, как термины словаря добавляются в список разрешений.
wordFeatureExtractor
Задает аргументы для извлечения признаков слова. Существует два разных механизма извлечения признаков:
- ngramCount — извлечение признаков на основе количества (эквивалентно WordBag). Оно принимает следующие параметры:
maxNumTerms
иweighting
. - ngramHash — извлечение признаков на основе хэширования (эквивалентно WordHashBag). Оно принимает следующие параметры:
hashBits
,seed
,ordered
иinvertHash
.
Значение по умолчанию —ngramCount
.
charFeatureExtractor
Задает аргументы для извлечения признаков символа. Существует два разных механизма извлечения признаков:
- ngramCount — извлечение признаков на основе количества (эквивалентно WordBag). Оно принимает следующие параметры:
maxNumTerms
иweighting
. - ngramHash — извлечение признаков на основе хэширования (эквивалентно WordHashBag). Оно принимает следующие параметры:
hashBits
,seed
,ordered
иinvertHash
.
Значение по умолчанию —NULL
.
vectorNormalizer
Нормализует векторы (строки) по отдельности, масштабируя их до нормального значения. Принимает одно из следующих значений:
"none"
."l2"
."l1"
."linf"
. Значение по умолчанию —"l2"
.
...
Дополнительные аргументы, отправляемые в подсистему вычислений.
Подробнее
Преобразование featurizeText
формирует набор счетчиков
последовательных слов, называемых n-граммами, из заданной совокупности текста.
Это можно сделать двумя способами:
создать словарь N-грамм и использовать идентификатор в словаре в качестве индекса в контейнере;
хэшировать каждую N-грамму и использовать значение хэша в качестве индекса в контейнере.
Хэширование предназначено для преобразования текстовых документов переменной длины в векторы числовых признаков равной длины с целью сокращения размерности и ускорения поиска весовых коэффициентов признаков.
Преобразование текста применяется к входным столбцам текста. Обеспечивает определение языка, разметку, удаление стоп-слов, нормализацию текста и создание компонентов. Оно поддерживает следующие языки по умолчанию: английский, французский, немецкий, голландский, итальянский, испанский и японский.
N-граммы представляются в виде векторов подсчета, причем слоты векторов соответствуют N-граммам (созданным с помощью ngramCount
) или их хэшам (созданным с помощью ngramHash
). Встраивание N-грамм в пространство вектора позволяет эффективно сравнивать их содержимое.
Значения слота в векторе могут быть взвешены по следующим факторам:
частота термина — число вхождений слота в тексте;
обратная частота документа — отношение (логарифм обратной относительной частоты слота), которое измеряет сведения, предоставляемые слотом, путем определения того, как часто или редко они встречаются во всем тексте.
частота термина, умноженная на обратную частоту документа — произведение частоты термина и обратной частоты документа.
Значение
Объект maml
, определяющий преобразование.
Авторы
Корпорация Майкрософт Microsoft Technical Support
См. также
ngramCount, ngramHash, rxFastTrees, rxFastForest, rxNeuralNet, rxOneClassSvm, rxLogisticRegression.
Примеры
trainReviews <- data.frame(review = c(
"This is great",
"I hate it",
"Love it",
"Do not like it",
"Really like it",
"I hate it",
"I like it a lot",
"I kind of hate it",
"I do like it",
"I really hate it",
"It is very good",
"I hate it a bunch",
"I love it a bunch",
"I hate it",
"I like it very much",
"I hate it very much.",
"I really do love it",
"I really do hate it",
"Love it!",
"Hate it!",
"I love it",
"I hate it",
"I love it",
"I hate it",
"I love it"),
like = c(TRUE, FALSE, TRUE, FALSE, TRUE,
FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE,
FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE,
FALSE, TRUE, FALSE, TRUE), stringsAsFactors = FALSE
)
testReviews <- data.frame(review = c(
"This is great",
"I hate it",
"Love it",
"Really like it",
"I hate it",
"I like it a lot",
"I love it",
"I do like it",
"I really hate it",
"I love it"), stringsAsFactors = FALSE)
outModel <- rxLogisticRegression(like ~ reviewTran, data = trainReviews,
mlTransforms = list(featurizeText(vars = c(reviewTran = "review"),
stopwordsRemover = stopwordsDefault(), keepPunctuations = FALSE)))
# 'hate' and 'love' have non-zero weights
summary(outModel)
# Use the model to score
scoreOutDF5 <- rxPredict(outModel, data = testReviews,
extraVarsToWrite = "review")
scoreOutDF5