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)

Description

모델을 학습시키기 전에 데이터에서 수행할 수 있는 텍스트 변환입니다.

세부 정보

featurize_text는 지정된 텍스트 모음에서 N-Gram이라는 연속 단어의 시퀀스 개수 백을 생성합니다. 이 작업은 두 가지 방법으로 수행할 수 있습니다.

  • N-Gram 사전을 작성하고 사전의 ID를 백의 인덱스로 사용합니다.

  • 각 N-Gram을 해시하고 해시 값을 백의 인덱스로 사용합니다.

해시는 차원성 감소를 지원하고 기능 가중치를 보다 빠르게 조회할 수 있도록 가변 길이 텍스트 문서를 같은 길이의 숫자 기능 벡터로 변환하는 데 사용됩니다.

텍스트 변환은 텍스트 입력 열에 적용됩니다. 언어 검색, 토큰화, 중지 단어 제거, 텍스트 정규화 및 특성 생성을 제공합니다. 기본적으로 영어, 프랑스어, 독일어, 네덜란드어, 이탈리아어, 스페인어 및 일본어를 지원합니다.

N-Gram은 벡터 슬롯이 N-Gram(n_gram을 사용하여 생성)이나 해시(n_gram_hash를 사용하여 생성)에 해당하는 개수 벡터로 표시됩니다. 벡터 공간에 N-Gram을 포함하면 콘텐츠를 효율적인 방식으로 비교할 수 있습니다. 벡터의 슬롯 값은 다음 요소에 따라 가중치를 적용할 수 있습니다.

  • ‘용어 빈도’ - 텍스트의 슬롯 발생 횟수입니다.

  • ‘역 문서 빈도’ - 전체 텍스트에서 슬롯이 제공하는 정보의 공통 또는 드문 정도를 결정하여 슬롯이 제공하는 정보를 측정하는 비율(역 상대 슬롯 빈도의 로그)입니다.

  • ‘용어 빈도-역 문서 빈도’ - 제품 용어 빈도 및 역 문서 빈도입니다.

인수

cols

변환할 문자열 또는 변수 이름 목록입니다. dict이면 키는 만들 새 변수의 이름을 나타냅니다.

언어

데이터 세트에 사용되는 언어를 지정합니다. 지원되는 값은 다음과 같습니다.

  • "AutoDetect": 자동 언어 감지용입니다.

  • "English"

  • "French"

  • "German"

  • "Dutch"

  • "Italian"

  • "Spanish"

  • "Japanese"

stopwords_remover

사용할 중지 단어 제거기를 지정합니다. 세 개의 옵션이 지원됩니다.

  • None: 중지 단어 제거기를 사용하지 않습니다.

  • predefined: 가장 일반적인 Microsoft Office 단어를 포함하는 미리 컴파일된 언어별 중지 단어 목록이 사용됩니다.

  • custom: 사용자 정의 중지 단어 목록입니다. stopword 옵션을 허용합니다.

기본값은 없음입니다.

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’ 순서).

기본값은 없음입니다. 사전 용어가 허용 목록에 추가되기 전에 중지 단어가 제거되면 중지 단어 목록이 사전 허용 목록보다 우선 적용됩니다.

word_feature_extractor

단어 기능 추출 인수를 지정합니다. 다음과 같은 두 가지 기능 추출 메커니즘이 있습니다.

  • n_gram(): 개수 기반 기능 추출(WordBag과 동일)입니다. max_num_termsweighting 옵션을 허용합니다.

  • n_gram_hash(): 해시 기반 기능 추출(WordHashBag과 동일)입니다. hash_bits, seed, orderedinvert_hash 옵션을 허용합니다.

기본값은 n_gram입니다.

char_feature_extractor

char 기능 추출 인수를 지정합니다. 다음과 같은 두 가지 기능 추출 메커니즘이 있습니다.

  • n_gram(): 개수 기반 기능 추출(WordBag과 동일)입니다. max_num_termsweighting 옵션을 허용합니다.

  • n_gram_hash(): 해시 기반 기능 추출(WordHashBag과 동일)입니다. hash_bits, seed, orderedinvert_hash 옵션을 허용합니다.

기본값은 없음입니다.

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-Gram 추출기

중지 단어 제거기