Preprocess Text (テキストの前処理)
重要
Machine Learning Studio (クラシック) のサポートは、2024 年 8 月 31 日に終了します。 その日までに、Azure Machine Learning に切り替えすることをお勧めします。
2021 年 12 月 1 日以降、新しい Machine Learning Studio (クラシック) リソースは作成できません。 2024 年 8 月 31 日まで、既存の Machine Learning Studio (クラシック) リソースを引き続き使用できます。
- ML Studio (クラシック) から Azure Machine Learning への機械学習プロジェクトの移動に関する情報を参照してください。
- Azure Machine Learning についての詳細を参照してください。
ML Studio (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。
テキストに対してクリーニング操作を実行します
カテゴリ: Text Analytics
注意
適用対象: Machine Learning Studio (クラシック) のみ
類似のドラッグ アンド ドロップ モジュールは Azure Machine Learning デザイナーで使用できます。
モジュールの概要
この記事では、Machine Learning Studio (クラシック) でテキストの前処理モジュールを使用して、テキストのクリーンアップと簡略化を行う方法について説明します。 テキストを前処理することで、テキストからわかりやすい特徴を簡単に作成できます。
たとえば、テキストの前処理 モジュールでは、 テキストに対する次の一般的な操作がサポートされています。
- ストップワードの削除
- 正規表現を使用して特定の対象文字列を検索して置換する
- レンマ化 (複数の関連する単語を 1 つの正規形式に変換する)
- 音声の特定の部分に対するフィルター処理
- 大文字と小文字の正規化
- 数字、特殊文字、および繰り返し文字のシーケンス (たとえば、"aaaa") など、特定のクラスの文字の削除
- 電子メールと URL の識別と削除
使用するクリーニング オプションを選択し、必要に応じてストップワードのカスタム リストを指定できます。
このモジュールでは現在、英語、スペイン語、フランス語、オランダ語、ドイツ語、イタリア語の 6 つの言語がサポートされています。
テキストの前処理を構成する方法
[テキスト の前処理] モジュールを Studio (クラシック) の実験に追加します。 このモジュールは、Text Analytics にあります。
テキストを含む列が少なくとも 1 列あるデータセットを接続します。
前処理するテキストが同じ言語の場合は、[言語] ドロップダウン リストから言語 を 選択します。 このオプションを使用すると、選択した言語に固有の言語規則を使用してテキストが前処理されます。
複数の言語を含む可能性があるテキストを前処理するには、 [列に言語が含まれている] オプションを選択 します。
次に、 Culture-language 列 プロパティを使用して、各行で使用される言語を示すデータセット内の列を選択します。 列には、"英語" や などの標準言語識別子が含まれている必要があります
en
。この識別子に基づいて、モジュールはテキストを処理するために適切な言語リソースを適用します。
データセットにこのような識別子が含まれている場合は、言語の検出モジュールを使用して事前に言語を分析し、識別子を生成します。
ヒント
サポートされていない言語が含まれている場合は、エラーが発生します。 詳細については、「 テクニカル ノート」 セクションを参照してください。
[音声の一部で削除する]: 音声分析の一部を適用する場合は、このオプションを選択します。 その後、音声の一部タグを使用して、特定の単語のクラスを削除できます。
- 名詞の削除: 名詞を削除するには、このオプションを選択します。
- 形容詞の削除: 形容詞を削除するには、このオプションを選択します。
- 動詞の削除: 動詞を削除するには、このオプションを選択します。
使用されるパートオブ音声識別方法の詳細については、「テクニカル ノート」 セクションを参照 してください。
[クリーンアップするテキスト列]: 前処理する列を選択します。
Remove stop words (ストップワードの削除) :定義済みのストップワード リストをテキスト列に適用する場合は、このオプションを選択します。 ストップ ワードの削除は、他のプロセスの前に実行されます。
ストップワード リストは言語に依存し、カスタマイズ可能です。詳細については、「テクニカル ノート」 セクションを参照 してください。
Lemmatization (レンマ化) :正規形式で単語を表示する場合は、このオプションを選択します。 このオプションは、類似するテキスト トークンの一意の出現回数を減らすのに役立ちます。
レンマ化プロセスは言語に大依存です。詳細については、「 テクニカル ノート」セクション を参照してください。
Detect sentences (文の検出) :分析の実行時にモジュールによって文の境界マークを挿入する場合は、このオプションを選択します。
このモジュールは、一連の 3個のパイプ文字
|||
を使用して、文の終端記号を表します。必要に応じて、正規表現を使用してカスタムの検索および置換操作を実行できます。
- カスタム正規表現: 検索するテキストを定義します。
- Custom replacement string (カスタム置換文字列) :1 つの置換値を定義します。
Normalize case to lowercase (大文字を小文字に正規化) :ASCII の大文字を小文字の形式に変換する場合は、このオプションを選択します。
文字が正規化されていない場合、大文字と小文字の同じ単語は 2 つの異なる単語と見なされます。
AM
たとえば、 は と同じですam
。必要に応じて、処理された出力テキストから次の種類の文字または文字シーケンスを削除できます。
- Remove numbers (数字の削除) :このオプションを選択すると、指定した言語のすべての数字が削除されます。
数値を構成するものの識別は、ドメインに依存し、言語に依存します。 数字が既知の単語の不可欠の部分である場合、その数字は削除されない可能性があります。
特殊文字の削除: 英数字以外の特殊文字をパイプ文字に置き換える場合に使用
|
します。特殊文字の詳細については、「テクニカル ノート」 セクションを参照 してください。
重複する文字を削除する: 文字を繰り返すシーケンスを削除するには、このオプションを選択します。 たとえば、"aaaaa" のようなシーケンスは削除されます。
Remove email addresses (メール アドレスの削除) :
<string>@<string>
の形式のシーケンスをすべて削除するには、このオプションを選択します。URL の削除: 次の URL プレフィックスを含むシーケンスを削除するには、このオプションを選択します。
http
,https
ftp
www
Expand verb contractions (動詞の短縮形を展開) :このオプションは、動詞の短縮形を使用している言語 (現在、英語のみ) に適用されます。
たとえば、このオプションを選択することにより、 "wouldn't stay there" という句を "would not stay there" に置き換えることができます。
Normalize backslashes to slashes (バックスラッシュをスラッシュに正規化) :
\\
のすべてのインスタンスを/
にマップするには、このオプションを選択します。Split tokens on special characters (特殊文字でトークンを分割) :
&
や-
などの文字で単語を分割する場合は、このオプションを選択します。たとえば、文字列は と
MS-WORD
の 2 つのトークンに分割MS
されますWORD
。
例
次の例では、 Azure AI Gallery プロセス テキスト モジュールの 使用を示 しています。
テクニカル ノート
このセクションでは、基になるテキスト前処理テクノロジの詳細と、カスタム テキスト リソースを指定する方法について説明します。
サポートされている言語
現在Machine Learningは、次の言語でのテキストの前処理をサポートしています。
- オランダ語
- 英語
- フランス語
- ドイツ語
- イタリア語
- スペイン語
追加の言語が計画されています。 お知らせについては、Microsoft Machine Learning ブログを参照してください。
レンマ化
"レンマ化" は、複数の単語トークンを表す 1 つの正規形式を識別するプロセスです。
Machine Learning Studio (クラシック) に含まれる自然言語処理ライブラリは、次の複数の言語操作を組み合わせて、レンマ化を提供します。
文の分離: 感情分析や他のテキスト分析に使用されるフリー テキストでは、文が頻繁に実行され、句読点が見つからない可能性があります。 入力テキストは、ツイートやフラグメントから完全な段落、またはドキュメントまで、任意の長いテキストのチャンクを構成する場合があります。
Studio (クラシック) で使用される自然言語ツールは、基になる字句分析の一部として文の分離を実行します。 しかし、文は出力で区切られていません。 必要に応じて、他のテキストの処理と分析を支援するように文の境界をマークするように指定できます。
トークン化: 単語の境界を決定する規則は言語に依存しており、単語間にスペースを使用する言語でも複雑になる場合があります。
一部の言語 (中国語、日本語など) は単語間に空白を使用しないため、単語の分離には原形分析が必要です。
したがって、このモジュールで使用されるトークン化メソッドと規則によって、言語によって異なる結果が得られます。 これらのトークン化規則は、サポートされている言語ごとに Microsoft Research によって提供されるテキスト分析ライブラリによって決定され、カスタマイズすることはできません。
音声認識の一部では、単語ごとに音声の正確な部分を特定することが困難な場合があります。 "時間が矢印のように飛んだ" などのわかりやすい文でも、数十の解析 (有名な例) を使用できます。 音声の一部は、さまざまな言語の morphology によっても大きく異なります。
Machine Learning では、現在の文のコンテキストによって、最も可能性の高い音声の1つの部分を選択するために、あいまい性モデルが使用されます。 品詞情報は、機能として使用される単語をフィルター処理したり、キーフレーズの抽出を支援したりするために使用されます。 ただし、このモジュールの出力には POS タグが明示的に含まれないため、POS タグが付けられたテキストを生成するために使用することはできません。
辞書形式を生成しています: 単語には、複数の lemmasまたは辞書形式があり、それぞれが異なる分析から取得されている場合があります。 たとえば、英語の単語の建物には2つの lemmas があります。単語が名詞 ("縦長の建物") である場合、または動詞 ("家を建築している")の場合はビルドします。 Machine Learning では、最も可能性の高い1つの辞書形式のみが生成されます。
サンプルレンマ化の出力
source | Doctors appointments と大文字小文字の変換 |
---|---|
彼は、 | 彼は |
彼はスイム・・氏を | スイム・ゴー |
筋肉の構築に適しています | ビルド筋肉に適しています |
ビルドを構築しています | ビルドをビルドする |
私たちはすべて建物を構築しています | すべてのビルドビルド |
注意
辞書形式の生成に使用される言語モデルは、さまざまな一般的な目的や技術に関するテキストに対してトレーニングおよびテストが行われており、自然言語 Api を必要とする他の多くの Microsoft 製品で使用されています。 ただし、自然言語は本質的にあいまいであり、すべてのボキャブラリで100% の精度を実現することはできません。 たとえば、レンマ化は、音声の他の部分、または文の解析方法によって影響を受けることがあります。
追加のプリプロセスを実行する必要がある場合、または特殊なまたはドメインに依存するボキャブラリを使用して言語分析を実行する必要がある場合は、Python および R で利用できるようなカスタマイズ可能な NLP ツールを使用することをお勧めします。
特殊文字
特殊文字は、音声の他の部分として識別できない単一の文字として定義されます。また、句読点、コロン、セミコロンなどを含めることができます。
ストップワード
ストップワード(またはストップワード) は、通常はインデックスから削除される単語であり、言語的な意味を持つ可能性がある場合でも、情報の取得にはほとんど価値がありません。
たとえば、多くの言語では、明確な記事と不定なアーティクル ("建物" と "ビル") のセマンティックが区別されますが、機械学習と情報の取得については、情報が関連しないことがあります。 そのため、これらの単語を破棄することもできます。
Machine Learning 環境には、サポートされている各言語の最も一般的なストップワードの一覧が含まれています。
言語 | ストップワードの数 | 例 |
---|---|---|
オランダ語 | 49 | aan、af、al |
英語 | 312 | a、about、above |
フランス語 | 154 | de、des、d '、la |
ドイツ語 | 602 | a、ab、aber |
イタリア語 | 135 | a、adesso、ai |
スペイン語 | 368 | ésa, ésta, éste |
利便性を高めるために、現在のすべての言語の既定のストップワードを含む zip 形式のファイルが Azure storage: Stopwords.zipで使用できるようになりました。
ストップワードリストを変更する方法
多くのユーザーが独自のストップワードリストを作成したり、既定の一覧に含まれる用語を変更したりすることが期待されています。 Cortana Intelligence Galleryの次の実験は、ストップワードリストをカスタマイズする方法を示しています。
リストを変更した場合、または独自のストップワードリストを作成した場合は、次の要件を確認してください。
ファイルには、1つのテキスト列が含まれている必要があります。 追加の列が存在する場合は、"事前入力エラー列の選択パターン" というテキスト列が、入力データセットで選択された1つの列を提供する必要がありますが、2つの列が実際に指定されていると、次のエラーが表示されることがあります。 (エラー 0022) "
この場合、ストップワードリストが最初にインポートされたファイル内に存在する空白、タブ、または非表示の列を検索します。 ファイルの準備方法によっては、テキストに含まれるタブまたはコンマによって、複数の列が作成されることもあります。
このエラーが発生した場合は、ソースファイルを確認するか、 データセット内の列の選択 モジュールを使用して、 前処理テキスト モジュールに渡す1つの列を選択します。
各行には、1つの単語のみを含めることができます。 ファイルを解析するために、単語はスペースを挿入することによって決定されます。
ストップワードリストを空にすることはできません。
演算の順序
このモジュールでは、複数の操作をテキストに適用できます。 ただし、これらの操作を適用する順序は変更できません。 これは予想される結果に影響する可能性があります。
たとえば、レンマ化をテキストに適用し、ストップワードの削除も使用した場合、ストップワードリストが適用される前にすべての単語が lemma 形式に変換されます。 したがって、テキストにストップワードリストに含まれていない単語が含まれていて、その lemma がストップワードリストに含まれている場合、その単語は削除されます。
正しい結果が得られるようにするには、ターゲット用語を事前にテストしてください。
サポートされていない言語
テキスト列に Machine Learning でサポートされていない言語が含まれている場合は、言語に依存しない処理を必要としないオプションのみを使用することをお勧めします。 これは、予想外の結果を避けるのに役立ちます。
また、[オプション] 列に [ 言語] が含まれている場合は、処理されるテキストにサポートされていない言語が含まれていないことを確認する必要があります。 サポートされていない言語またはその識別子が dataset に存在する場合、次の実行時エラーが生成されます。
"テキストの前処理エラー (0039): サポートされている言語を指定してください。"
サポートされていない言語が検出されたために実験全体が失敗しないようにするには、 データの分割 モジュールを使用し、データセットをサポートされる言語とサポートされていない言語に分割する正規表現を指定します。
たとえば、次の正規表現は、検出された列 Sentence
の言語に基づいてデータセットを分割します。
\"Sentence Language" Dutch|English|French|Italian|Spanish
言語識別子を含む列がある場合、またはそのような列を生成した場合は、次のような正規表現を使用して、識別子列をフィルター処理できます。
\"Sentence Iso6391 Name" nl|en|fr|it|es
想定される入力
名前 | 型 | 説明 |
---|---|---|
データセット | データ テーブル | 入力データ |
ストップワード | データ テーブル | 削除するストップ ワードの省略可能なカスタム リスト |
モジュールのパラメーター
名前 | 種類 | Range | 省略可能 | Default | 説明 |
---|---|---|---|---|---|
URL の削除 | Boolean | True 誤り |
必須 | true | URL の削除 |
言語 | 言語 | 英語 スペイン語 フランス語 オランダ語 ドイツ語 イタリア語 |
必須 | 英語 | 前処理する言語を選択する |
クリーンアップするテキスト列 | 列の選択 | 必須 | StringFeature | クリーンアップするテキスト列を選択する | |
カスタム正規表現 | String | 省略可能 | カスタム正規表現を指定する | ||
カスタム置換文字列 | String | 省略可能 | カスタム正規表現のカスタム置換文字列を指定する | ||
ストップ ワードを削除する | Boolean | 必須 | true | ストップ ワードを削除する | |
レンマ化 | Boolean | 必須 | true | レンマ化を使用する | |
音声の一部で削除する | True False 型 | true false |
必須 | False | 特定の単語クラスを識別して削除するために、音声の一部分析を使用するかどうかを指定します |
名詞を削除する | Boolean | [音声の一 部でフィルター] オプションが 選択されている場合に適用されます | true | 名詞を削除する | |
形容詞を削除する | Boolean | [音声の一 部でフィルター] オプションが 選択されている場合に適用されます | true | 形容詞を削除する | |
動詞を削除する | Boolean | [音声の一 部でフィルター] オプションが 選択されている場合に適用されます | true | 動詞を削除する | |
文を検出する | Boolean | 必須 | true | 文終端記号 \"を追加して文を検出|||n-gram 特徴抽出モジュールで使用できる \" | |
大文字と小文字を正規化する | Boolean | 必須 | true | 大文字と小文字を正規化する | |
数値を削除する | Boolean | 必須 | true | 数値を削除する | |
特殊文字を削除する | Boolean | 必須 | true | 英数字以外の特殊文字を削除し、\"|\" 文字に置き換えます | |
重複する文字を削除する | Boolean | 必須 | true | 重複する文字を削除する | |
電子メール アドレスを削除する | Boolean | 必須 | true | 電子メールアドレスの削除 |
出力
名前 | 型 | 説明 |
---|---|---|
結果のデータセット | データ テーブル | 結果のデータセット |
例外
例外 | 説明 |
---|---|
エラー 0003 | 1 つ以上の入力が null または空の場合に、例外が発生します。 |
エラー 0030 | ファイルをダウンロードできない場合は例外が発生します。 |
エラー 0048 | ファイルを開けない場合、例外が発生します。 |
エラー 0049 | ファイルを解析できない場合、例外が発生します。 |
Studio (クラシック) モジュール固有のエラーの一覧については、「 Machine Learning エラーコード」を参照してください。
API 例外の一覧については、「 Machine Learning REST API のエラーコード」を参照してください。