Amazon Neptune で多言語テキスト プロパティをエンコードして、予測モデル PlatoBlockchain Data Intelligence をトレーニングします。 垂直検索。 あい。

Amazon Neptune で多言語テキスト プロパティをエンコードして予測モデルをトレーニングする

アマゾンネプチューンML の機械学習 (ML) 機能です。 アマゾン海王星 これにより、グラフ データを正確かつ迅速に予測できます。 内部的には、Neptune ML はグラフ ニューラル ネットワーク (GNN) を使用して、グラフ構造とノード/エッジ プロパティを同時に利用して、目の前のタスクを解決します。 従来の方法では、プロパティのみを使用してグラフ構造を使用しない (XGBoost、Neural Networks など) か、グラフ構造のみを使用してプロパティを使用しない (node2vec、Label Propagation など)。 ノード/エッジのプロパティをより適切に操作するために、ML アルゴリズムではデータが正常に動作する数値データである必要がありますが、データベース内の生データには、生テキストなどの他のタイプを含めることができます。 これらの他のタイプのデータを利用するには、ネイティブ タイプから数値データに変換する特殊な処理手順が必要であり、ML の結果の品質は、これらのデータ変換の品質に大きく依存します。 生のテキストは、文章と同様に変換が最も難しいタイプの XNUMX つですが、自然言語処理 (NLP) の分野における最近の進歩により、複数の言語からのさまざまな長さのテキストを処理できる強力な方法が生まれました。

バージョン 1.1.0.0 以降、Neptune ML はサポートしています 複数のテキストエンコーダ (text_fasttext, text_sbert, text_word2vec, text_tfidf)、NLP の最近の進歩の利点をもたらし、多言語テキスト プロパティのサポートと、言語とテキストの長さに関する追加の推論要件を有効にします。 たとえば、仕事の推薦のユースケースでは、さまざまな国の求人情報をさまざまな言語で説明することができ、求人の説明の長さは大幅に異なります。 さらに、Neptune ML は オート データ内のテキスト機能の特性に基づいて最適なエンコード方法を自動的に選択するオプション。

この投稿では、各テキスト エンコーダーの使用法を説明し、長所と短所を比較して、ジョブ レコメンデーション タスクに適したテキスト エンコーダーを選択する方法の例を示します。

テキストエンコーダーとは何ですか?

テキスト エンコーディングの目標は、Neptune のテキストベースのエッジ/ノード プロパティを固定サイズのベクトルに変換して、ノード分類またはリンク予測タスクのダウンストリーム機械学習モデルで使用することです。 テキスト フィーチャの長さはさまざまです。 単語、語句、文、段落、または複数の文を含むドキュメントにすることもできます (Neptune では、55 つのプロパティの最大サイズは XNUMX MB です)。 さらに、テキスト機能はさまざまな言語にすることができます。 いくつかの異なる言語の単語を含む文もあるかもしれません。 コード切り替え.

1.1.0.0 リリース以降、Neptune ML では、いくつかの異なるテキストエンコーダーから選択できます。 各エンコーダーの動作はわずかに異なりますが、Neptune からのテキスト値フィールドを、Neptune ML を使用して GNN モデルを構築するために使用する固定サイズのベクトルに変換するという同じ目標があります。 新しいエンコーダーは次のとおりです。

  • text_fasttext (新規) – 用途 高速テキスト エンコーディング。 FastText は、テキスト表現を効率的に学習するためのライブラリです。 text_fasttext fastText がサポートする XNUMX つの言語 (英語、中国語、ヒンディー語、スペイン語、およびフランス語) のうちの XNUMX つだけを使用する機能には、 をお勧めします。 の text_fasttext メソッドはオプションで max_length このフィールドは、エンコードされるテキスト プロパティ値のトークンの最大数を指定します。その後、文字列は切り捨てられます。 トークンを単語と見なすことができます。 これにより、テキスト プロパティ値に長い文字列が含まれる場合のパフォーマンスが向上します。 max_length が指定されていない場合、文字列の長さに関係なく、fastText はすべてのトークンをエンコードします。
  • text_sbert (新規) – 文 BERT (スバート) エンコード方法。 SBERT は、文脈表現学習モデル BERT-Networks を使用した一種の文埋め込み手法です。 text_sbert 言語がサポートされていない場合に推奨されます text_fasttext. Neptune は XNUMX つの SBERT メソッドをサポートしています。 text_sbert128、指定するだけの場合のデフォルトです text_sbert, text_sbert512. それらの違いは、エンコードされるテキスト プロパティ内のトークンの最大数です。 の text_sbert128 encoding は最初の 128 トークンのみをエンコードしますが、 text_sbert512 最大 512 個のトークンをエンコードします。 その結果、 text_sbert512 よりも多くの処理時間が必要になる場合があります。 text_sbert128. どちらの方法もより遅い text_fasttext.
  • text_word2vec -用途 Word2古い テキストをエンコードするために Google によって最初に公開されたアルゴリズム。 Word2Vec は英語のみをサポートしています。
  • text_tfidf – 用語頻度-逆ドキュメント頻度 (TF-IDF) テキストをエンコードするためのベクトライザー。 TF-IDF エンコーディングは、他のエンコーディングではサポートされていない統計機能をサポートしています。 他のすべてのノードの中で、XNUMX つのノード プロパティ内の単語の重要性または関連性を定量化します。

注意してください text_word2vec & text_tfidf 以前にサポートされていた新しいメソッド text_fasttext & text_sbert 古い方法よりも推奨されます。

さまざまなテキスト エンコーダーの比較

次の表は、サポートされているすべてのテキスト エンコーディング オプションの詳細な比較を示しています (text_fasttext, text_sbert, text_word2vec). text_tfidf はモデルベースのエンコーディング方法ではなく、トークン (単語など) が他のノードまたはエッジのテキスト機能にどの程度関連しているかを評価するカウントベースの尺度であるため、含まれていません。 text_tfidf 比較のために。 使用をお勧めします text_tfidf 他のすべてのノードまたはエッジ プロパティの中で、XNUMX つのノードまたはエッジ プロパティのいくつかの単語の重要性または関連性を定量化したい場合)。

. . text_fasttext text_sbert text_word2vec
モデル機能 サポートされている言語 英語、中国語、ヒンディー語、スペイン語、フランス語 50以上の言語 英語
さまざまな言語の単語を含むテキスト プロパティをエンコードできます いいえ 有り いいえ
最大長のサポート 長さの上限なし テキスト シーケンスを最大長 128 および 512 でエンコードします。 長さの上限なし
時間コスト ローディング 約10秒 約2秒 約2秒
推論 尊大 遅く M

次の使用上のヒントに注意してください。

  • 英語、中国語、ヒンディー語、スペイン語、およびフランス語のテキスト プロパティ値の場合、 text_fasttext 推奨されるエンコーディングです。 ただし、同じ文に複数の言語の単語が含まれている場合は処理できません。 XNUMX つの言語以外の場合は、 fastText サポート、使用 text_sbert エンコーディング。
  • プロパティ値のテキスト文字列が多く、たとえば 120 トークンを超える場合は、 max_length 各文字列のトークン数を制限するフィールド text_fasttext エンコードします。

要約すると、ユースケースに応じて、次のエンコード方法をお勧めします。

  • テキスト プロパティがサポートされている XNUMX つの言語のいずれかである場合は、使用することをお勧めします text_fasttext 推論が速いからです。 text_fasttext 推奨される選択肢であり、使用することもできます text_sbert 次の XNUMX つの例外を除きます。
  • テキスト プロパティが異なる言語の場合は、使用することをお勧めします text_sbert これは、複数の異なる言語の単語を含むテキスト プロパティをエンコードできる唯一のサポートされている方法だからです。
  • テキスト プロパティが、サポートされている XNUMX つの言語のいずれでもない XNUMX つの言語である場合は、次を使用することをお勧めします。 text_sbert 50 以上の言語をサポートしているからです。
  • テキスト プロパティの平均の長さが 128 を超える場合は、 text_sbert512 or text_fasttext. どちらの方法でも、より長いテキスト シーケンスをエンコードできます。
  • テキスト プロパティが英語のみの場合は、 text_word2vec、しかし、使用することをお勧めします text_fasttext その高速な推論のために。

ユースケースのデモ: ジョブ レコメンデーション タスク

求人推薦タスクの目標は、以前の応募者、人口統計情報、および職歴に基づいて、ユーザーが応募する職種を予測することです。 この投稿では 開いている Kaggle データセット. データセットを XNUMX ノード タイプのグラフとして作成します。 ジョブ, user, シティ.

ジョブは、そのタイトル、説明、要件、所在地の都市、および州によって特徴付けられます。 ユーザーは、専攻、学位の種類、職歴の数、職歴の合計年数などのプロパティで記述されます。 このユース ケースでは、役職、職務内容、職務要件、専攻はすべてテキスト形式です。

データセットでは、ユーザーには次のプロパティがあります。

  • 都道府県 – たとえば、CA または广东省 (中国語)
  • 主要な – たとえば、人事管理または Lic Cytura Fisica (スペイン語)
  • 学位の種類 – たとえば、学士号、修士号、博士号、またはなし
  • 勤務履歴数 – たとえば、0、1、16 など
  • 合計経験年数 – たとえば、0.0、10.0、または NAN

ジョブには次のプロパティがあります。

  • 役職 – たとえば、管理アシスタントまたは Lic Cultura Física (スペイン語)。
  • 説明 – たとえば、「この管理アシスタントのポジションは、コミュニケーション分野でさまざまな事務および管理サポート機能を実行する責任があります…」 説明の平均単語数は約 192.2 です。
  • 要件 – たとえば、「仕事の要件: 1. 細部への注意。 2.ペースの速い環境で働く能力;3.請求…」
  • 都道府県: – たとえば、CA、NY など。

ノードの種類 シティ ワシントン DC やオーランド FL のように、各ノードの識別子しかありません。 次のセクションでは、さまざまなテキスト機能の特性を分析し、さまざまなテキスト プロパティに対して適切なテキスト エンコーダーを選択する方法を示します。

さまざまなテキスト エンコーダーを選択する方法

この例では、 主要な & 役職 プロパティは複数の言語で表示され、短いテキスト シーケンスがあるため、 text_sbert がおすすめ。 のサンプルコード パラメータのエクスポート 以下のとおりであります。 のために text_sbert タイプであり、他のパラメータ フィールドはありません。 ここで選択します text_sbert128 以外の text_sbert512、テキストの長さが 128 よりも比較的短いためです。

"additionalParams": {
    "neptune_ml": {
        "version": "v2.0",
        "targets": [ ... ],
        "features": [
            {
                "node": "user",
                "property": "Major",
                "type": "text_sbert128"
            },
            {
                "node": "job",
                "property": "Title",
                "type": "text_sbert128",
            }, ...
        ], ...
    }
}

  説明 & 要件 プロパティは通常、長いテキスト シーケンスです。 説明の平均の長さは約 192 語であり、これは、説明の最大入力長よりも長いです。 text_sbert (128)。 使用できます text_sbert512、ただし、推論が遅くなる可能性があります。 また、テキストは単一言語(英語)です。 したがって、私たちはお勧めします text_fasttext en 推論が速く、入力の長さが制限されていないため、言語の価値があります。 のサンプルコード パラメータのエクスポート 以下のとおりであります。 の text_fasttext エンコーディングは、を使用してカスタマイズできます 言語 & 最大長を選択します。 language 値が必要ですが、 max_length オプションです。

"additionalParams": {
    "neptune_ml": {
        "version": "v2.0",
        "targets": [ ... ],
        "features": [
            {
                "node": "job",
                "property": "Description",
                "type": "text_fasttext",
                "language": "en",
                "max_length": 256
            },
            {
                "node": "job",
                "property": "Requirements",
                "type": "text_fasttext",
                "language": "en"
            }, ...
        ], ...
    }
}

ジョブ レコメンデーションのユース ケースの詳細については、 Neptune ノートブックのチュートリアル.

デモンストレーションのために、「管理および人事」の修士号を取得しているユーザー 443931 という 50 人のユーザーを選択します。 ユーザーは、「人事 (HR) マネージャー」、「HR ゼネラリスト」、「人事マネージャー」、「人事管理者」、「シニア ペイロール スペシャリスト」という 10 つの異なる職種に応募しました。 推薦タスクのパフォーマンスを評価するために、ユーザーの適用ジョブ (エッジ) の XNUMX% を削除 (ここでは「人事管理者」と「人事 (HR) マネージャー」を削除) し、トップを予測しようとします。このユーザーが応募する可能性が最も高い XNUMX の仕事。

仕事の特徴とユーザーの特徴をエンコードした後、リレーショナル グラフ畳み込みネットワーク (RGCN) モデルをトレーニングして、リンク予測タスクを実行します。 Neptune ML モデルのトレーニングには、データ処理、モデルのトレーニング、エンドポイントの作成の 443931 つのステップが必要です。 推論エンドポイントが作成された後、ユーザー 10 に推奨事項を作成できます。ユーザー 443931 の予測された上位 10 のジョブ (つまり、「HR Generalist」、「Human Resources (HR) Manager」、「Senior Payroll Specialist」、「Human Resources Administrator」、「HR Analyst」など)、削除された XNUMX つのジョブが XNUMX の予測の中にあることがわかります。

まとめ

この投稿では、Neptune ML で新しくサポートされたテキストエンコーダーの使用法を示しました。 これらのテキスト エンコーダーは使いやすく、複数の要件をサポートできます。 要約すれば、

  • text_fasttext は、text_fasttext がサポートする XNUMX つの言語のうち XNUMX つだけを使用する機能に推奨されます。
  • text_fasttext がサポートしていないテキストには、text_sbert をお勧めします。
  • text_word2vec は英語のみをサポートし、あらゆるシナリオで text_fasttext に置き換えることができます。

ソリューションの詳細については、 GitHubレポ. 要件を満たすために、グラフ データでテキスト エンコーダーを使用することをお勧めします。 GNN モデルを変更せずに、エンコーダー名を選択していくつかのエンコーダー属性を設定するだけです。


著者について

Amazon Neptune で多言語テキスト プロパティをエンコードして、予測モデル PlatoBlockchain Data Intelligence をトレーニングします。 垂直検索。 あい。ジアニ・チャン AWS AI Research and Education (AIRE) の応用科学者です。 彼女は、機械学習アルゴリズム、特に自然言語とグラフ関連の問題を使用して、実世界のアプリケーションを解決することに取り組んでいます。

タイムスタンプ:

より多くの AWS機械学習