NLP の使用例
NLP の使用例を使用して、両方のカテゴリのドキュメントのトレーニング セットが与えられた場合に、ドキュメントをカテゴリに分類するモデルをトレーニングできます。
Mac と PC の記事分類
このユース ケースでは、Macintosh ハードウェアに関する記事のフォルダーと IBM PC ハードウェアに関する記事のフォルダーから始めます。新しい記事が Mac ユーザー グループによって投稿されたのか、PC ユーザー グループによって投稿されたのかを判断できる分類器を構築します。
結果として得られるワークフローを以下に示します。この記事では、有意義な情報を取得するためのワークフローを構築する方法について説明します。
データセット
このデータは、人気のある Usenet グループからのメッセージを含む 20 Newsgroups データセットから取得したものです。次の 2 つのニュースグループ フォルダーのテキストを使用しています。
- comp.sys.mac.hardware
- comp.sys.ibm.pc.hardware
これらの各フォルダーには 1000 個のテキスト ファイルが含まれており、各ファイルには 1 つのメッセージが含まれています。データはプレーンテキスト形式です。利用可能な NLP オペレーターを使用して関連情報を解析します。
ワークフロー
TIBCO Data Science - Team Studio にアクセスするにはデータが HDFS 内に存在する必要があります。データを追加するには、SSH を使用してクラスターに接続し、テキスト ファイルを含むフォルダーを TIBCO Data Science - Team Studio がアクセス可能な場所にコピーします。
データ ソースでは、1 つのフォルダーに comp.sys.mac.hardware という名前を付け、2 番目のフォルダーに comp.sys.ibm.pc.hardware という名前を付けています。各フォルダーには、<number>.txt という形式のファイルが 1000 個含まれています。
インポートしたテキスト データを表形式に変換し、分類用の特徴を生成します。
クリーンアップされたデータには次のフィールドが必要です。
- computer_type カテゴリ変数。メッセージが Mac グループからのものであるか PC グループからのものであるかを示すために使用されます。
- N-Gram カウントなどの (NLP オペレーターからの) 数値特徴。これらは、TIBCO Data Science - Team Studio 分類オペレーターへと送られるものです。
さまざまなモデルをトレーニングするために、データセットから 2 つのランダムなサンプルを作成します。 1 つのサンプルはトレーニング セットで、もう 1 つのサンプルはテストセットです。
データ変換手順は以下のとおりです。
- 両方のフォルダーで テキスト抽出 (Text Extractor) オペレーターを使用します。この操作により、各フォルダー内のメッセージが 1
つのデータセット (記事ごとに 1 行) に統合されます。結果として得られたデータセットには、解析プロセスに関するいくつかのカラムが含まれています。
たとえば、comp.sys.mac.hardware ディレクトリでテキスト抽出プログラムを実行して、次の出力を取得できます。

オペレーターには、ファイル インデックス、パス、拡張子、記事の内容、解析に関連するエラーを含むカラムが含まれます。 (この例では、file_path と text_content に焦点を当てて分析します。)
ノート: 一部のドキュメントが不正な形式である場合、オペレーターは失敗しませんが、不正な形式のドキュメントは分析に含まれません。 - データは 2 つのデータセットに含まれていましたが、1 つのデータセットだけに含める必要がありました。これを実現するために、セット オペレーション (Set Operations) (DB)
オペレーターを使用しています。
メッセージが Mac グループからのものであるか、PC グループからのものであるかに関する情報を保持する必要があります。ドキュメントはすでに 2 つのフォルダーに分類されていました。分類に関する情報を 2 つのフォルダーに残し、2 つのフォルダーのそれぞれで個別に テキスト抽出 オペレーターを実行することで、分類に関する情報を保存できます。次に、セット オペレーション の Union All 設定を使用して、両方のフォルダーのデータを結合します。 (分かりやすくするために、オペレーターに Union All という名前を付けています。)

- データが 1 つのファイルになったので、ニュースグループのパスからコンピューターの種類を抽出し、変数 (DB) オペレーター の Pig
式を使用して、読みやすい computer_type 変数でタグ付けしています。
2 つのニュースグループの名前は comp.sys.mac.hardware と comp.sys.ibm.hardware であることに注意してください。ファイル パスの mac と ibm の部分のみに注目します。その部分を抽出するには、Pig 式
SUBSTRING(file_path,28,31)を使用しています。ヒント: TIBCO Data Science - Team Studio を使用して同様の ETL プロセスを設計できます。この例では、同じフォルダ内のすべての記事に、そのタイプを表す名前(たとえば、Mac_1.txt)を付けることができます。また、パスと各記事に関するいくつかのメタデータを含むデータセットを、テキスト フィーチャライザー の出力に結合することもできます。 - ランダム サンプリング (DB) オペレーターを使用して、データをトレーニング サンプルとテスト サンプルの 2 つのサンプルに分割します。サンプルをトレーニング サンプル用の 80% とテスト サンプル用の 20% に分割しています。
- 2 つの サンプル セレクター オペレーターを使用して、ランダムなサンプルをトレーニング セットとテスト
セットに分割します。これを実現するために、ランダム サンプリング オペレーターを 2 つのサンプル セレクター オペレーターに接続しています。
この時点でのワークフローは次のようになります。モデルを適用する準備ができました。

トレーニング セットとテスト セットを使用して、NLP オペレーターを使用してデータからいくつかの特徴を作成し、分類および混同行列を実行してモデルがどの程度うまく機能するかを確認します。
- トレーニング データでは、N-Gram 辞書ビルダー
を使用して、特徴の作成に使用される単語の辞書を作成します。トークン化と解析のオプションを指定します。辞書ビルダーは、トレーニング
コーパス内の N-Gram (単語またはフレーズ)
の辞書を作成します。モデルのトレーニングまたは予測のためにデータセットを特徴づけるときは、同じ N-Gram 辞書ビルダーを使用して、同じ N-Gram から特徴を作成していることを確認する必要があります。
N-Gram 辞書ビルダーは、ドキュメントをトークン化する方法も定義します。このトークン化は、トレーニング データとテスト データ全体で一貫している必要もあります。N-Gram 辞書ビルダーの構成オプションの詳細については、ヘルプ トピックを参照してください。ただし、この使用例では、デフォルトのオプションを使用しています。
N-Gram 辞書ビルダーの出力には、すべてのドキュメント内のすべての N-Gram、それらの N-Gram の出現頻度、および出現するドキュメントの数が表示されます。

また、すべてのドキュメントに関する統計も提供されます。

N-Gram 辞書ビルダーは テキスト フィーチャライザー以外の TIBCO Data Science - Team Studio オペレーターに接続できません。ただし、表形式の出力は HDFS に書き込まれます。この出力を使用するには、結果を保存するために指定した場所に移動し、その結果ファイルをワークフロー キャンバスにドラッグします。 (ここで辞書の結果を使用して実行できるもう 1 つの例は、並べ替えオペレーターを介して実行して、どの N-Gram が最も多くのドキュメントに出現したかを確認することです。)
- テキスト
フィーチャライザー オペレーターを使用して、最もよく使用される 500
語を辞書から選択します。次に、メッセージごとに、各単語が何回出現したかをスコア化します。
トレーニング セットとテスト セットの両方に機能を提供するために、次のことを行います。
- テキスト フィーチャライザー オペレーターをトレーニング データと N-Gram 辞書ビルダーの両方に接続します。
- テキスト フィーチャライザー オペレーターをテスト データおよび N-Gram 辞書ビルダーに接続します。
- 各オペレーターを次の設定で構成します。
設定 構成 テキスト カラム text_content N-Gram の選択方法 Appear in the Most Documents 選択する一意の N-Gram の最大数 (または特徴ハッシュ サイズ) 500 各 N-Gram とドキュメントの計算 Normalized N-Gram Count カラム名として N-Gram 値を使用する No 保存形式 CSV 出力ディレクトリ @default_tempdir/tsds_out 出力名 @operator_name_uuid 出力を上書き true 高度な Spark 設定の自動最適化 Yes トークン化された記事ごとに、選択した 500 個の N-Gram のそれぞれが出現した回数をカウントし、ドキュメント内のトークンの数に対してカウントを正規化します。したがって、記事の長さに比べてその単語がどのくらいの頻度で出現するかの指標を計算しています。 [保持するカラム] フィールドで computer_type カラムを選択することで、それを分類アルゴリズムの従属変数として使用します。
各テキスト フィーチャライザーの結果は、各行が 1 つの記事を表し、各カラムが数値特徴であるデータセットです。
最初のカラムは、保持するために選択した元のデータセットのカラムです。この場合、computer_type カラムの 1 つだけを保持することを選択しています。次の 4 つのカラムには、各記事に関する一般的な統計が含まれています。
- number_of_tokens - 記事内のトークン (単語) の数。
- normalized_number_tokens - すべての記事の平均トークン数に対して正規化された、記事内のトークンの数。
- number_unique_tokens - 記事内の固有の単語の数。
- normalize_number_unique_tokens - コーパスの平均に対して正規化された上記。

次の 500 カラムはそれぞれ、最もよく使用される N-Gram の 正規化されたカウント数を表します。 ngram1_count_normalized は、トレーニング コーパス内の最もよく使われる N-Gram のドキュメントごとの正規化されたカウント数です。
ngram1 はまだ不明です。これを調べるために、結果の [N-Grams to Column Names] セクションを確認します。
この例では、ngram1 が from のトークンであることに注意してください。

これで、各ドキュメント内の N-Gram の頻度を表す数値カラムと、そのドキュメントのカテゴリを含む 1 つのカテゴリー カラムを含むデータセットができました。この例では最も単純な分類アルゴリズムを使用していますが、テキスト データは TIBCO Data Science - Team Studio のほぼすべての分析能力と統合できます。TIBCO Data Science - Team Studio トランスフォーメーション オペレーターを使用して、データをさらにクリーンにして処理できます。サマリー統計などの探査オペレーターを使用して、コーパスのコンテンツを探索できます。ドキュメントを新しい、これまで知られていなかったカテゴリに分類できます。回帰アルゴリズムのいずれかを使用すると、一部の N-Gram の存在が他の N-Gram に依存しているかどうかを確認できます。トレーニングされた分類アルゴリズムの上にタッチポイントを構築して、新しいドキュメントを分類することもできます。
- ナイーブ ベイズを使用した分類モデリング
は、テキスト分類に使用される最も一般的なアルゴリズムの 1 つです。ここでは ナイーブ ベイズ
を特徴化されたデータセットに適用し、新しいドキュメントを Mac または IBM ユーザー
グループのいずれかに分類できる分類器を構築しています。
特徴化されたデータセットを ナイーブ ベイズ オペレーターに接続し、ドキュメント カテゴリを従属カラムとして使用し、独立変数としてテキスト特徴 (たとえば、Ngram1_normalize_count) または (Doc_count) を使用しています。
オプションで、エクスポートを使用してこのモデルをエクスポートできます。代わりに、ワークフローでこれを使用して、新しいドキュメントの題材を予測しています。
NLP データで予測子または分類子を使用するには、トレーニング データをクリーンアップしたのと同じ方法でテスト データをクリーンアップする必要があります。これは、トレーニング データで使用されたものと同じ N-Gram 辞書を使用し、トレーニング セットで使用されたものとまったく同じ方法で構成された テキスト フィーチャライザー を使用することを意味します。オペレーターをコピーして貼り付けて、同じ構成の別のオペレーターを取得できます。
- テキスト フィーチャライザー (テスト データ用): テキスト フィーチャライザーをテスト データと、トレーニング データ上で実行された N-Gram 辞書ビルダーに接続します。
- 分類器 (DB): 分類子 (または予測子) を特徴化されたテスト データセットとモデルに接続します。分類オペレーターは、ナイーブ ベイズ オペレーターからの入力とテスト セット内のデータを取得して、モデルを適用します。
- 混同行列: 混同行列またはその他の評価器を使用して、モデルの結果を評価します。混同行列オペレーターは、ナイーブ ベイズ オペレーターと分類器からの情報を混同行列に供給し、そこでモデルのパフォーマンスを評価し、モデルの精度、再現率、精度を報告します。
テスト データを特徴付けた後、それを分類器に接続し、次に混同行列に接続して、モデルを評価できるようにしています。
混同行列の結果を見ることで、モデルのパフォーマンスがどの程度優れているかが分かります。
98% の確率で正しいクラスを予測します。