3.自然言語処理(補足)
第1章で初めて述べた自然言語処理について,再検討する.これは初めてなので、何度も概念や実践を重ねて身につける必要があるので、このような過程を繰り返していきたいと思います.コンセプトと実践コードを参考にしたサイトは以下の通りです(https://wikidocs.net/32105)前処理
前処理で使用されるトークン(
単語埋め込み
単語imbeddingは、テキスト内の単語を密集ベクトル(density vector)に形成するものである.密集ベクトルは1つの熱ベクトルに対して、1つの熱ベクトルの多くはゼロの値を有し、1つの値のベクトルしかない.ベクトルの次元数は単語の数と等しい.
逆に、密集ベクトルもベクトルの形式を持っているが、0または1のほとんどの値が実数ではなく、相対的に低い次元を持っている.例えば、 .
このような密集ベクトルの形成過程を単語imbeddingと呼ぶ.主に円熱ベクトルが20000を超える次元とは異なり、単語imbeddingは256、512、1024の次元を有する.imbeddingベクトルは初期にランダム値を有するが,人工ニューラルネットワークの重み値は学習方法と同様に学習され変化する.
ケラスは最初のパラメータ=単語セットのサイズ.合計単語数 の2番目のパラメータ=imbeddingベクトルの出力次元.生成された埋め込みベクトルのサイズは である. input length=入力シーケンスの長さ
前処理で使用されるトークン(
Tokenizer
)は、符号化(単語のインデックス)のために使用される.その後、pad_sequence
が使用される.これは、トレーニングデータ全体において、各サンプルの長さが異なる可能性があるためである.各文章または各文章の字数はそれぞれ異なる.モデルの入力として使用するには、すべてのサンプルの長さが同じでなければならない場合があります.自然言語処理では、これをパディング操作と呼び、通常、数値0を加えることで異なる長さのサンプルの長さを調整する.ケラスはpad_sequence
を使用しています.pad_sequence
長さが所与の長さより大きいサンプル部分遮断値、長さが所与の長さより小さいサンプル取値0from tensorflow.keras.preprocessing.text import Tokenizer
t = Tokenizer()
text = "The earth is an awesome place live"
t.fit_on_texts([text])
print(f'word_index: {t.word_index}')
print(f'word_count: {t.word_counts}')
sequence = t.texts_to_sequences([text])[0]
print('sequnce: {}'.format(sequence))
from tensorflow.keras.preprocessing.sequence import pad_sequences
pad_sequences([[1, 2, 3], [3, 4, 5, 6], [7, 8]], maxlen=3, padding='pre') # pre는 앞에, post는 뒤에 0을 채우게 된다, 지우는 것도 앞에서 기준으로 지우게 된다
単語imbeddingは、テキスト内の単語を密集ベクトル(density vector)に形成するものである.密集ベクトルは1つの熱ベクトルに対して、1つの熱ベクトルの多くはゼロの値を有し、1つの値のベクトルしかない.ベクトルの次元数は単語の数と等しい.
[0 1 0 0 0 0 중략 0 0 0 0]
のような円熱ベクトル.単語数の階層がありますが、欠点は単語間の類似度が同じであることです逆に、密集ベクトルもベクトルの形式を持っているが、0または1のほとんどの値が実数ではなく、相対的に低い次元を持っている.例えば、
[0.1 -1.2 0.8 0.2 1.8]
の形態を有するこのような密集ベクトルの形成過程を単語imbeddingと呼ぶ.主に円熱ベクトルが20000を超える次元とは異なり、単語imbeddingは256、512、1024の次元を有する.imbeddingベクトルは初期にランダム値を有するが,人工ニューラルネットワークの重み値は学習方法と同様に学習され変化する.
ケラスは
Embedding
という層を提供し、総単語の長さと圧縮する次元についてパラメータとして受け入れられる.from tensorflow.keras.layers import Embedding
from tensorflow.keras.preprocessing.text import Tokenizer
t = Tokenizer()
t.fit_on_texts(text)
print(t.word_counts, t.word_index)
word_index
のように、周波数順で初めて並べ替えられたことがわかります.t.texts_to_sequences(text)
Embedding(classes, 2, input_length=5)
Reference
この問題について(3.自然言語処理(補足)), 我々は、より多くの情報をここで見つけました https://velog.io/@ingbeeeded/3.-자연어처리-보충テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol