1. 概要
ほとんどのNLPコース、チュートリアル、および教科書は、単語をベクトルに変換する方法を説明しています。
ただし、実際には、通常、文、段落、ドキュメントなどのより複雑なテキスト構造を扱います。これらのテキスト構造では、機械学習モデルで処理するためにベクトル表現も必要です。
次の行では、テキストシーケンスをベクトルとして表すための最も重要な手法を学習します。
このチュートリアルを理解するには、RNN、CNN、トランスフォーマーなどの一般的なディープラーニング手法に精通している必要があります。
2. 単語ベクトルの集約
テキスト内の単語のベクトルがすでにある場合は、 単語の埋め込みをテキスト全体を表す単一のベクトルに集約することは理にかなっています。
これは、多くの実践者によって選択された優れたベースラインアプローチであり、単語ベクトルがすでにあるか、簡単に取得できる場合は、おそらく最初に採用する必要があります。
集約のための最も頻繁な操作は次のとおりです。
- 平均化
- 最大プーリング
平均化の例を見てみましょう。
3. トピックモデリング
トピックモデリングは、より野心的なアプローチに従います。各次元がトピックを表す隠しベクトルを取得する。
たとえば、3次元が「恐竜」、「遊園地」、「絶滅」を表すベクトルを持つことができます。
「ジュラシックパーク」のストーリーラインは、恐竜やテーマパークに完全に関連しているが、絶滅にわずかに関連している映画であるため、[1.0、0.6、0.05]のようなベクトルでモデル化できます。 対照的に、「白亜紀-第三紀の絶滅」に関する文書は、恐竜や絶滅と強く関連しているが、遊園地とはまったく関係がないため、[0.8、0.0、1.0]になる可能性があります。
この例は方法を説明するための単なる方法ですが、トピックはトレーニング中に実際に発見され、潜在的ディリクレ割り当てに関する記事で説明されているように、それらが何を意味するのか実際にはわかりません。
実際の場合、トピック1、2、および3があり、各トピックの最も代表的なドキュメントに表示される単語の頻度を分析することで、それらが何を表しているかを理解できます。
4. 再発モデル
これは、テキスト内の各単語のベクトルを前提条件として持つ必要があるもう1つのケースです。
このアプローチでは、エンコーダーの最終状態を取得することにより、リカレントニューラルネットワークの固有の機能を利用して入力状態を表現します。
これらのモデルは通常、エンコーダーとデコーダーで構成され、エンコーダーはシーケンスの意味を蓄積し、その内部の最終状態が埋め込みとして使用されます。
RNNエンコーダーの図を見てみましょう。
ご覧のとおり、各単語ベクトルはRNNシーケンスの入力になり、エンコーダーの最終状態 y(m)はシーケンスベクトルになります。
5. 言葉の袋
Bag of Words(BOW)手法は、語彙の単語ごとに1つの次元を使用して、テキストをベクトルとしてモデル化します。各値は、テキスト内のその単語の重みを表します。
これらの文の例を見てみましょう。
(1) John likes to watch movies. Mary likes movies too. (2) Mary also likes to watch football games.
これが私たちの語彙になります(「to」などのストップワードを削除します)。
V = {John, likes, watch, movies, Mary, too, also, football, games}
そして、元の文は、各文が語彙に含まれる単語の数を数えることによって、これらのベクトルに変換できます。
(1) [1, 2, 1, 2, 1, 1, 0, 0, 0] (2) [0, 1, 1, 0, 1, 0, 1, 1, 1]
BOWモデルの背後にある考え方は、順序と構文が失われたとしても、テキスト内の単語の重みがテキストの意味を表すのに役立つということです。
5.1. Nグラムのバッグ
前のポイントで、BOWモデルの問題の1つは、語順が失われることです。 この問題を軽減するための1つの解決策は、単語の組み合わせが特定の順序で表示されるため、n-gramを使用することです。
単一の単語(1グラム)またはnグラムを単独で使用することも、一緒に使用することもできます。 (1グラム+ 2グラムが一般的な選択です)。
bag of n-grams という名前のこの拡張モデルは、単一の単語の代わりにn-gramを使用することに他なりません。
この手法の主な問題は、非常に長いベクトルをもたらす組み合わせ爆発であり、より大きなn-gramを使用するとますます悪化します。
6. BOW戦略
すべての単語を特定したら、それらからベクトルを生成する方法についていくつかの戦略を見てみましょう。
6.1. 言葉の存在戦略
最も基本的な戦略は、単語が語彙に存在するかどうかに基づいて1または0を設定することです。
(1) [1, 1, 1, 1, 1, 1, 0, 0, 0] (2) [0, 1, 1, 0, 1, 0, 1, 1, 1]
このアプローチでは、すべての単語が等しく関連しています。
(1) John(1), likes(1), watch(1), movies(1), Mary(1), too(1) (2) likes(1), watch(1), Mary(1), also(1), football(1), games(1)
6.2. 単語数戦略
これは、概要セクションで使用した戦略であり、ドキュメント内の各単語の出現回数をカウントするだけです。
(1) [1, 2, 1, 2, 1, 1, 0, 0, 0] (2) [0, 1, 1, 0, 1, 0, 1, 1, 1]
現在、一部の単語は他の単語よりも関連性があります(値が高いほど、関連性が高いことを意味します)。
(1) likes(2), movies(2), John(1), watch(1), Mary(1), too(1) (2) likes(1), watch(1), Mary(1), also(1), football(1), games(1)
6.3. 期間頻度戦略
別の戦略は、ドキュメント内の単語の相対的な頻度を維持することです。
まず、用語頻度(TF)とは何かを思い出してみましょう。
したがって、ベクトルは次のようになります。
(1) [1/8, 2/8, 1/8, 2/8, 1/8, 1/8, 0/8, 0/8, 0/8] (2) [0/6, 1/6, 1/6, 0/6, 1/6, 0/6, 1/6, 1/6, 1/6]
あれは:
(1) [0.12, 0.25, 0.12, 0.25, 0.12, 0.12, 0.00, 0.00, 0.00] (2) [0.00, 0.16, 0.16, 0.00, 0.16, 0.00, 0.16, 0.16, 0.16]
各文の単語の重みは最後の戦略と比較したままですが、それらの値はベクトル間で異なります。
(1) likes(0.25), movies(0.25), John(0.12), watch(0.12), Mary(0.12), too(0.12) (2) likes(0.16), watch(0.16), Mary(0.16), also(0.16), football(0.16), games(0.16)
6.4. TF-IDFスコア戦略
広く使用されている手法は、TF-IDFスコアの計算です。
Inverse Document Frequency(IDF)は、ドキュメント全体で非常に頻繁に発生する用語の重みを減らし、めったに発生しない用語の重みを増やします。
これらは語彙のIDF値になります:
[ln(2/1), ln(2/2), ln(2/2), ln(2/1), ln(2/2), ln(2/1), ln(2/1), ln(2/1), ln(2/1)]
または:
[0.69, 0.0, 0.0, 0.69, 0.0, 0.69, 0.69, 0.69, 0.69]
したがって、TF-IDFベクトルは次のようになります。
(1) [0.12*0.69, 0.25*0.00, 0.12*0.00, 0.25*0.69, 0.12*0.00, 0.12*0.69, 0.00*0.69, 0.00*0.69, 0.00*0.69] (2) [0.00*0.69, 0.16*0.00, 0.16*0.00, 0.00*0.69, 0.16*0.00, 0.00*0.69, 0.16*0.69, 0.16*0.69, 0.16*0.69]
または:
(1) [0.08, 0.00, 0.00, 0.17, 0.00, 0.08, 0.00, 0.00, 0.00] (2) [0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.11, 0.11, 0.11]
非常に頻繁な単語はそれほど関連性がないため、ゼロが付いていることに注意してください。したがって、各ベクトルに関連する単語は次のとおりです。
(1) Movies(0.17), John(0.08), too(0.08) (2) also(0.11), football(0.11), games(0.11)
7. Doc2Vec
この方法は、ドキュメントのコーパスがあり、どれが類似しているかを知る必要がある場合に使用できます。
この手法はword2vecと非常に似ていますが、シーケンス全体を表すテキストの先頭に特別なトークンDを使用します。
前の図で見たように、「同じ文脈で出現する単語は同じような意味を持つ傾向がある」という分布仮説を利用します。
各段落は異なるDベクトルを生成し、トレーニングの最後に、各段落(ドキュメント)に1つずつ、Dベクトルの配列が作成されます。
または、逆の方法でトレーニングすることもできます。段落ベクトルからコンテキストを予測します。
8. BERT
現在最も広く使用されているモデルの1つは、BERTまたは「Transformerからの双方向エンコーダー表現」エンコーダーモデルです。
ここで説明されているように、 BERTはそれ自体で、シーケンス全体およびシーケンス内のすべてのトークンのベクトルを生成します。 シーケンスはトークン[CLS]で表されます。これは、入力の開始時に必要な特別なトークンです。
次の図では、すべての入力トークンベクトルを確認できます。最初の1つ[CLS]はシーケンス全体を表しています。
または、シーケンス内の残りのトークンを集約することによってシーケンスベクトルを取得することもできます(平均化またはプーリングを適用)。
9. 文BERT
Sentence-BERT(またはSBERT)は、文を比較するための効率的な方法が必要な場合に使用されるBERTの変形です。
10000の例で最も類似した2つの文を見つけたいと想像してください。 BERTでは両方の文を入力としてまとめる必要があるため、約5,000万回の推論計算(10000個の要素のセットから2個の要素の組み合わせ)が必要になり、実行に数日かかる可能性があります(論文レポート65彼らのシステムでの時間)。
シャムおよびトリプレットネットワーク構造を使用して意味的に意味のある文の埋め込みを導出すると、コサイン類似性を使用して文を比較できます。
これはトレーニングアーキテクチャです。
そして、これは私たちが推論のためにそれを使用する方法です:
これにより、BERT 10000ベクトルを取得し、それらの間にコサイン類似性を適用できます。
10. InferSent
InferSentはFacebookによって作成され、(彼ら自身の言葉で)「セマンティックセンテンス表現を提供するセンテンス埋め込みメソッドです。 自然言語の推論データでトレーニングされており、さまざまなタスクにうまく一般化できます。」
この監視された手法は、スタンフォード自然言語推論タスクでさまざまなアーキテクチャのNNエンコーダーをトレーニングすることで構成されています。
論文は、主にGRU、LSTM、およびBiLSTMに集中したさまざまなエンコーダアーキテクチャを提案しています。
最初のアプローチでは、事前にトレーニングされた単語の埋め込みにGloVeベクトルを使用していましたが、最近のバージョン(InferSent2)ではfastTextに変更されました。
11. ユニバーサルセンテンスエンコーダ
これはGoogleによって作成された手法であり、文表現学習の2つの可能なモデルが含まれており、どちらもマルチタスク学習を可能にするように設計されています。
1つ目は、Transformerモデルエンコーダーです。
他の可能なモデルは、Deep Averaging Network(DAN)です。
このモデルでは、単語とバイグラムの入力埋め込みが最初に平均化され、次にフィードフォワードニューラルネットワークを通過して文の埋め込みが生成されます。
12. 結論
前の行では、文またはドキュメントからベクトルを生成するための最も関連性の高い手法を学びました。
今度は、これらの方法を深く掘り下げて、優れたNLP実践者になるために習得する必要があります。