chars2vecライブラリは、略語、スラング、タイプミス、またはその他の特定のテキストデータセットを含むテキストを扱っている場合に非常に便利です。 chars2vec言語モデルは、単語の象徴的な表現に基づいています。モデルは、各単語を固定長のベクトルにマッピングします。これらのベクトル表現はカスタムニューラルネットワークで取得され、後者は類似の単語と非類似の単語のペアで訓練されています。このカスタムニューラルネットには、LSTMが含まれ、単語の文字のシーケンスを読み取り、その部分として読み取ります。モデルは、近位ベクトルに対して同様に書かれた単語をマッピングします。このアプローチにより、キャラクターのシーケンスにベクトル空間に埋め込むことができます。 chars2vecモデルは、埋め込みの辞書を維持しませんが、前処理されたモデルを使用して埋め込みベクターを介して生成します。
英語には、次元50、100、150、200、300の寸法モデルがあります。ライブラリは、任意の文字セットのモデルをトレーニングするための便利なユーザーAPIを提供します。 CHARS2VECのアーキテクチャの詳細を読む:ハッカー正午のスペルエラーと人間のスラングを備えた現実世界のテキストを処理するための文字ベースの言語モデル。
>> python setup.py install >> pip install chars2vecfunction chars2vec.load_model(str path)ディレクトリからモデルを初期化し、 chars2vec.Chars2Vecオブジェクトを返します。寸法を持つ5つの前処理された英語モデルがあります。50、100、150、200、300。
import chars2vec
# Load Inutition Engineering pretrained model
# Models names: 'eng_50', 'eng_100', 'eng_150', 'eng_200', 'eng_300'
c2v_model = chars2vec . load_model ( 'eng_50' )メソッドchars2vec.Chars2Vec.vectorize_words(words) numpy.ndarray of shape (n_words, dim)単語の埋め込みで返します。
words = [ 'list' , 'of' , 'words' ]
# Create word embeddings
word_embeddings = c2v_model . vectorize_words ( words )関数chars2vec.train_model(int emb_dim, X_train, y_train, model_chars)は、新しいchars2vecモデルを作成およびトレーニングし、 chars2vec.Chars2Vecオブジェクトを返します。
パラメーターemb_dimはモデルの次元です。
パラメーターX_trainは、単語ペアのリストまたはnumpy.ndarrayです。パラメーターy_trainは、単語の近接性を説明するターゲット値のリストまたはnumpy.ndarrayです。
トレーニングセット( X_train 、 y_train )は、「類似」と「似ていない」単語のペアで構成されています。 「同様の」単語のペアには、0のターゲット値が0で、「類似していない」のペアが1でラベル付けされます。
Parameter model_chars 、モデルのCharsのリストです。 model_charsリストにない文字は、モデルによって無視されます。
chars2vecトレーニングの詳細と、chars2vecに関する記事でトレーニングデータセットの生成を読んでください。
function chars2vec.save_model(c2v_model, str path_to_model)トレーニングモデルをディレクトリに保存します。
import chars2vec
dim = 50
path_to_model = 'path/to/model/directory'
X_train = [( 'mecbanizing' , 'mechanizing' ), # similar words, target is equal 0
( 'dicovery' , 'dis7overy' ), # similar words, target is equal 0
( 'prot$oplasmatic' , 'prtoplasmatic' ), # similar words, target is equal 0
( 'copulateng' , 'lzateful' ), # not similar words, target is equal 1
( 'estry' , 'evadin6' ), # not similar words, target is equal 1
( 'cirrfosis' , 'afear' ) # not similar words, target is equal 1
]
y_train = [ 0 , 0 , 0 , 1 , 1 , 1 ]
model_chars = [ '!' , '"' , '#' , '$' , '%' , '&' , "'" , '(' , ')' , '*' , '+' , ',' , '-' , '.' ,
'/' , '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , ':' , ';' , '<' ,
'=' , '>' , '?' , '@' , '_' , 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' ,
'j' , 'k' , 'l' , 'm' , 'n' , 'o' , 'p' , 'q' , 'r' , 's' , 't' , 'u' , 'v' , 'w' ,
'x' , 'y' , 'z' ]
# Create and train chars2vec model using given training data
my_c2v_model = chars2vec . train_model ( dim , X_train , y_train , model_chars )
# Save your pretrained model
chars2vec . save_model ( my_c2v_model , path_to_model )
# Load your pretrained model
c2v_model = chars2vec . load_model ( path_to_model )使用およびトレーニングモデルの完全なコードの例example_usage.pyおよびexample_training.pyファイルを参照してください。