単語の意味表現を作成し、次元を減らす単語埋め込みを作成する前に、どのようにして私たちの言語の本質の一部を捉える良い語彙を作成します。
世界中には異なる言語があり、各言語には異なる構造があります。 トルコ語のような凝集言語は、同じ最初の単語から別の意味を作成するために、各単語の凝集(上に追加)。 同様に、英語では、smart-estの接尾辞部分は、多くの単語で使用できるestです。たとえば、私たちの語彙では、loudestという単語はないかもしれませんが、loud-estとしてトークン化するときにloudという単語があるかもしれません。tokenの埋め込みはestの表現を持っているので、loudestという単語の情報を持っています。
子でも同様の構造が行われます。 子供は理解するためにすべての単語とその複数形を聞く必要はありません。 車、蜂や他のオブジェクトのようなオブジェクトの複数形の多くを聞いた後、子供の脳は、子供が帽子が何であるかを知っているとき、彼/彼女はそれを使 言語モデルはまた、私たちの語彙の構造的メカニズムをトークン化する必要があります。
BPEは、未知の単語を扱う方法を知っており、未知の単語から意味を推測することができる二つの利点を持っています
それはどのように動作します
私たちは、あなたがトークン化しようとしている言語の良い代表であるファイルが必要です。/p>
- を呼び出します。txtファイルは、文字列内の各単語を分割し、各単語の最後に</w>を追加します。 単語の頻度の辞書を作成します。
2. 語彙を取得し、語彙内の各単語で文字に各単語を分割し、ほとんどのペアの文字の周波数辞書を作成する関数を作成します。
3. 私たちのトレーニングプロセス中に、私たちは私たちの語彙を更新し続けます。 Th merge_vocabulary関数は、古い語彙辞書を取得し、最も頻繁な文字のペアでそれを更新します。
4. Getトークンは、後で入力文字列をトークン化するために使用されます
語彙を作成します
最初の語彙と単語の頻度 語彙からトークン化を作成するループを作成します。 各反復は、それが一緒に発生する文字を見つけて、語彙にそれらを追加します。
例では、語彙が
- 単語の終わりを追加しますトークン
- 最初のトークンは
- 語彙に移動してbigramsをチェックし、bigramsの頻度を数えますこの場合、’r’と'</w>’トークンディクショナリ
- 語彙に新しい文字を追加します’r</w>’
これを何回繰り返すかを決定します。 それは10.000または100にすることができます。000. あなたはあなたの語彙のサイズがどうあるべきかを決定します。
エンコードとデコード
最初に与えられた文をエンコードするには、トークン辞書を最長の単語から最短の単語に変換する必要があります。 文の各単語を分割し、単語の最後に</w></w></w>最後に。