microsoftml.featurize_text: преобразует текстовые столбцы в числовые признаки
Использование
microsoftml.featurize_text(cols: [str, dict, list], language: ['AutoDetect',
'English', 'French', 'German', 'Dutch', 'Italian', 'Spanish',
'Japanese'] = 'English', stopwords_remover=None, case: ['Lower',
'Upper', 'None'] = 'Lower', keep_diacritics: bool = False,
keep_punctuations: bool = True, keep_numbers: bool = True,
dictionary: dict = None, word_feature_extractor={'Name': 'NGram',
'Settings': {'Weighting': 'Tf', 'MaxNumTerms': [10000000],
'NgramLength': 1, 'AllLengths': True, 'SkipLength': 0}},
char_feature_extractor=None, vector_normalizer: ['None', 'L1', 'L2',
'LInf'] = 'L2', **kargs)
Описание
Преобразование текста, которое может выполняться в данных перед обучением модели.
Сведения
Преобразование featurize_text
формирует набор счетчиков последовательных слов, называемых N-граммами, из заданной совокупности текста.
Это можно сделать двумя способами:
создать словарь N-грамм и использовать идентификатор в словаре в качестве индекса в контейнере;
хэшировать каждую N-грамму и использовать значение хэша в качестве индекса в контейнере.
Хэширование предназначено для преобразования текстовых документов переменной длины в векторы числовых признаков равной длины с целью сокращения размерности и ускорения поиска весовых коэффициентов признаков.
Преобразование текста применяется к входным столбцам текста. Обеспечивает определение языка, разметку, удаление стоп-слов, нормализацию текста и создание компонентов. Оно поддерживает следующие языки по умолчанию: английский, французский, немецкий, голландский, итальянский, испанский и японский.
N-граммы представляются в виде векторов подсчета, причем слоты векторов соответствуют N-граммам (созданным с помощью n_gram
) или их хэшам (созданным с помощью n_gram_hash
). Встраивание N-грамм в пространство вектора позволяет эффективно сравнивать их содержимое.
Значения слота в векторе могут быть взвешены по следующим факторам:
частота термина — число вхождений слота в тексте;
обратная частота документа — отношение (логарифм обратной относительной частоты слота), которое измеряет сведения, предоставляемые слотом, путем определения того, как часто или редко они встречаются во всем тексте.
частота термина, умноженная на обратную частоту документа — произведение частоты термина и обратной частоты документа.
Аргументы
cols
Строка символов или список имен переменных для преобразования. Если значение равно dict
, ключи представляют имена новых переменных, которые будут созданы.
Язык
Указывает язык, используемый в наборе данных. Поддерживаются следующие значения.
"AutoDetect"
: для автоматического определения языка."English"
"French"
"German"
"Dutch"
"Italian"
"Spanish"
"Japanese"
stopwords_remover
Задает используемый модуль удаления стоп-слов. Поддерживаются три значения параметра.
None: модуль удаления стоп-слов не используется.
predefined
: используется предварительно скомпилированный стоп-слов для конкретного языка, содержащий наиболее распространенные слова из Microsoft Office.custom
: определяемый пользователем список стоп-слов. Он принимает следующий параметр:stopword
.
Значение по умолчанию — None.
case
Текстовый регистр, использующий правила инвариантного языка и региональных параметров. Принимает следующие значения:
"Lower"
"Upper"
"None"
Значение по умолчанию — "Lower"
.
keep_diacritics
False
для удаления диакритических знаков; True
для сохранения диакритических знаков. Значение по умолчанию — False
.
keep_punctuations
False
для удаления знаков препинания; True
для сохранения знаков препинания. Значение по умолчанию — True
.
keep_numbers
False
для удаления чисел; True
для сохранения чисел. Значение по умолчанию — True
.
словарь
Словарь разрешенных терминов, который принимает следующие параметры:
term
: необязательный символьный вектор терминов или категорий.dropUnknowns
: удаление элементов.sort
: указывает порядок элементов при векторизации. Поддерживаются два возможных порядка:-
"occurrence"
: элементы отображаются в порядке обнаружения. -
"value"
: элементы сортируются в соответствии с их методом сравнения по умолчанию. Например, при сортировке текста будет учитываться регистр (сначала "A", затем "Z" и затем "a").
-
Значение по умолчанию — None. Обратите внимание, что список стоп-слов имеет приоритет над словарем разрешенных терминов, так как стоп-слова удаляются до того, как термины словаря добавляются в список разрешений.
word_feature_extractor
Задает аргументы для извлечения признаков слова. Существует два разных механизма извлечения признаков:
n_gram()
: извлечение признаков на основе количества (эквивалентно WordBag). Оно принимает следующие параметры:max_num_terms
иweighting
.n_gram_hash()
: извлечение признаков на основе хэширования (эквивалентно WordHashBag). Оно принимает следующие параметры:hash_bits
,seed
,ordered
иinvert_hash
.
Значение по умолчанию — n_gram
.
char_feature_extractor
Задает аргументы для извлечения признаков символа. Существует два разных механизма извлечения признаков:
n_gram()
: извлечение признаков на основе количества (эквивалентно WordBag). Оно принимает следующие параметры:max_num_terms
иweighting
.n_gram_hash()
: извлечение признаков на основе хэширования (эквивалентно WordHashBag). Оно принимает следующие параметры:hash_bits
,seed
,ordered
иinvert_hash
.
Значение по умолчанию — None.
vector_normalizer
Нормализует векторы (строки) по отдельности, масштабируя их до нормального значения. Принимает одно из следующих значений:
"None"
"L2"
"L1"
"LInf"
Значение по умолчанию — "L2"
.
kargs
Дополнительные аргументы, отправляемые в подсистему вычислений.
Возвращаемое значение
Объект, определяющий преобразование.
См. также
n_gram
, n_gram_hash
, n_gram
, n_gram_hash
, get_sentiment
.
Пример
'''
Example with featurize_text and rx_logistic_regression.
'''
import numpy
import pandas
from microsoftml import rx_logistic_regression, featurize_text, rx_predict
from microsoftml.entrypoints._stopwordsremover_predefined import predefined
train_reviews = pandas.DataFrame(data=dict(
review=[
"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=[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]))
test_reviews = pandas.DataFrame(data=dict(
review=[
"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"]))
out_model = rx_logistic_regression("like ~ review_tran",
data=train_reviews,
ml_transforms=[
featurize_text(cols=dict(review_tran="review"),
stopwords_remover=predefined(),
keep_punctuations=False)])
# Use the model to score.
score_df = rx_predict(out_model, data=test_reviews, extra_vars_to_write=["review"])
print(score_df.head())
Выходные данные:
Beginning processing data.
Rows Read: 25, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 25, Read Time: 0, Transform Time: 0
Beginning processing data.
Not adding a normalizer.
Beginning processing data.
Rows Read: 25, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 25, Read Time: 0, Transform Time: 0
Beginning processing data.
LBFGS multi-threading will attempt to load dataset into memory. In case of out-of-memory issues, turn off multi-threading by setting trainThreads to 1.
Warning: Too few instances to use 4 threads, decreasing to 1 thread(s)
Beginning optimization
num vars: 11
improvement criterion: Mean Improvement
L1 regularization selected 3 of 11 weights.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.3725934
Elapsed time: 00:00:00.0131199
Beginning processing data.
Rows Read: 10, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0635453
Finished writing 10 rows.
Writing completed.
review PredictedLabel Score Probability
0 This is great True 0.443986 0.609208
1 I hate it False -0.668449 0.338844
2 Love it True 0.994339 0.729944
3 Really like it True 0.443986 0.609208
4 I hate it False -0.668449 0.338844
Модули извлечения N-грамм
microsoftml.n_gram: преобразование текста в признаки с помощью N-грамм
microsoftml.n_gram_hash: преобразование текста в признаки с помощью хэшируемых N-грамм