Поделиться через


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