microsoftml.featurize_text:テキストカラムを数値特徴に変換します

Usage

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-グラム)のカウントバッグを生成します。 これを実現する方法は2つあります。

  • nグラムの辞書を作成し、辞書内のIDをバッグのインデックスとして使います。

  • 各nグラムをハッシュし、そのハッシュ値をバッグ内のインデックスとして使います。

ハッシュの目的は、可変長テキスト文書を等長の数値特徴ベクトルに変換し、次元削減をサポートし、特徴重みの検索を高速化することです。

テキスト変換はテキスト入力列に適用されます。 言語検出、トークン化、ストップワードの除去、テキスト正規化、特徴生成機能を備えています。 デフォルトで以下の言語をサポートしています:英語、フランス語、ドイツ語、オランダ語、イタリア語、スペイン語、日本語。

nグラムはカウントベクトルとして表され、ベクトルスロットはnグラム( n_gramで作成)またはそのハッシュ( n_gram_hashで作成)に対応します。 nグラムをベクトル空間に埋め込むことで、その内容を効率的に比較できます。 ベクトル内のスロット値は以下の要因によって重み付けされます:

  • 用語頻度 - テキスト内でスロットが出現する回数

  • 逆文書頻度 - スロットが提供する情報の頻度をテキスト全体でどれだけ一般的か稀かを測定する比率(逆相対スロット周波数の対数)。

  • 用語頻度-逆文書頻度 - 商品用語頻度と逆文書頻度。

引数

cols

変換する変数名の文字列またはリスト。 dictの場合、キーは新たに作成される変数の名前を表します。

言語

データセットで使用される言語を指定します。 サポートされている値は、次のとおりです :

  • "AutoDetect"自動言語検出のためのものです。

  • "English"

  • "French"

  • "German"

  • "Dutch"

  • "Italian"

  • "Spanish"

  • "Japanese"

stopwords_remover

使用するストップワード除去装置の指定。 サポートされている選択肢は3つあります。

  • なし:ストップワードリムーバーは使用しません。

  • predefined:Microsoft Officeの最も一般的な単語を含む、言語別に事前コンパイルされたストップワードリストが使用されます。

  • custom: ユーザー定義のストップワードリスト。 以下のオプションを受け入れています: stopword

既定値は None です。

ケース

不変文化のルールを用いたテキスト・ケーシング。 以下の値を取ります:

  • "Lower"

  • "Upper"

  • "None"

既定値は "Lower" です。

keep_diacritics

False ダイアクリティカルマークを除去すること; True 、ダイアクリティカルマークを保持する。 既定値は False です。

keep_punctuations

False 句読点を取り除くこと;句読点をしっかり覚えておく True 。 既定値は True です。

keep_numbers

False 数字を除去すること;数字を保持するために True 。 既定値は True です。

辞書

以下の選択肢を受け入れる許可リスト用語の辞書:

  • term: 用語やカテゴリの任意のキャラクターベクトルです。

  • dropUnknownsアイテムを落とす。

  • sortベクター化された際のアイテムの順序付け方法を指定します。 2つの順序がサポートされています。

    • "occurrence": アイテムは遭遇した順番で表示されます。
    • "value": アイテムはデフォルトの比較に基づいてソートされます。 例えば、テキストのソートは大文字を区別します(例:'A'→→→→→→→→→→→→→→→→→→→→→→→→2:〜

既定値は None です。 ストップワードリストは辞書の許容リストよりも優先されます。なぜなら、辞書用語が許可リストされる前にストップワードが削除されるからです。

word_feature_extractor

特徴抽出引数という言葉を指定します。 特徴抽出には2つの異なるメカニズムがあります。

  • n_gram(): カウントベースの特徴抽出(WordBagに相当)。 以下の選択肢を受け入れています: max_num_termsweighting

  • n_gram_hash(): ハッシュベースの特徴抽出(WordHashBagに相当)。 以下の選択肢を受け入れています: hash_bitsseedorderedinvert_hash

既定値は n_gram です。

char_feature_extractor

チャー特徴抽出の引数を指定します。 特徴抽出には2つの異なるメカニズムがあります。

  • n_gram(): カウントベースの特徴抽出(WordBagに相当)。 以下の選択肢を受け入れています: max_num_termsweighting

  • n_gram_hash(): ハッシュベースの特徴抽出(WordHashBagに相当)。 以下の選択肢を受け入れています: hash_bitsseedorderedinvert_hash

既定値は None です。

vector_normalizer

ベクトル(行)を単位ノルムにリスケーリングして個別に正規化します。 以下のいずれかの値を取ります:

  • "None"

  • "L2"

  • "L1"

  • "LInf"

既定値は "L2" です。

kargs

コンピューティング エンジンに送信される追加の引数。

返品

変換を定義するオブジェクト。

Example

'''
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())

Output:

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グラムエクストラクター

ストップワード除去器