アマゾンネプチューン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
ortext_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 よりも比較的短いためです。
説明 & 要件 プロパティは通常、長いテキスト シーケンスです。 説明の平均の長さは約 192 語であり、これは、説明の最大入力長よりも長いです。 text_sbert
(128)。 使用できます text_sbert512
、ただし、推論が遅くなる可能性があります。 また、テキストは単一言語(英語)です。 したがって、私たちはお勧めします text_fasttext
en 推論が速く、入力の長さが制限されていないため、言語の価値があります。 のサンプルコード パラメータのエクスポート 以下のとおりであります。 の text_fasttext
エンコーディングは、を使用してカスタマイズできます 言語 & 最大長を選択します。 language
値が必要ですが、 max_length
オプションです。
ジョブ レコメンデーションのユース ケースの詳細については、 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 モデルを変更せずに、エンコーダー名を選択していくつかのエンコーダー属性を設定するだけです。
著者について
ジアニ・チャン AWS AI Research and Education (AIRE) の応用科学者です。 彼女は、機械学習アルゴリズム、特に自然言語とグラフ関連の問題を使用して、実世界のアプリケーションを解決することに取り組んでいます。