Main Content

wordEmbedding

ベクトルへの単語のマッピングとその逆変換のための単語埋め込みモデル

説明

word2vec ライブラリ、GloVe ライブラリ、および fastText ライブラリで普及している単語埋め込みは、ボキャブラリ内の単語を実数ベクトルにマッピングします。

ベクトルは単語のセマンティクスを取得しようとするため、互いに類似する単語はベクトルも類似するようになります。一部の埋め込みでは、"king is to queen as man is to woman" (女王に対しての王は、女に対しての男に同じ) のような単語間の関係も取得されます。ベクトル形式では、この関係は king – man + woman = queen になります。

作成

fastTextWordEmbedding を使用して事前学習済みの埋め込みを読み込むか、readWordEmbedding を使用してファイルから埋め込みを読み取るか、trainWordEmbedding を使用して埋め込みに学習させて単語埋め込みを作成します。

プロパティ

すべて展開する

単語埋め込みの次元。正の整数として指定します。

例: 300

モデル内の一意の単語。string ベクトルとして指定します。

データ型: string

オブジェクト関数

vec2wordMap embedding vector to word
word2vec埋め込みベクトルへの単語のマッピング
isVocabularyWordTest if word is member of word embedding or encoding
writeWordEmbedding単語埋め込みファイルの書き込み

すべて折りたたむ

Text Analytics Toolbox™ Model for fastText English 16 Billion Token Word Embedding サポート パッケージをダウンロードしてインストールします。

コマンド ラインで fastTextWordEmbedding と入力します。

fastTextWordEmbedding

Text Analytics Toolbox Model for fastText English 16 Billion Token Word Embedding サポート パッケージがインストールされていない場合、関数によってアドオン エクスプローラーに必要なサポート パッケージへのリンクが表示されます。サポート パッケージをインストールするには、リンクをクリックして、[インストール] をクリックします。コマンド ラインで emb = fastTextWordEmbedding と入力して、インストールが正常に終了していることを確認します。

emb = fastTextWordEmbedding
emb = 

  wordEmbedding with properties:

     Dimension: 300
    Vocabulary: [1×1000000 string]

必要なサポート パッケージがインストールされている場合、関数によって wordEmbedding オブジェクトが返されます。

fastTextWordEmbedding を使用して、事前学習済みの単語埋め込みを読み込みます。この関数には、Text Analytics Toolbox™ Model for fastText English 16 Billion Token Word Embedding サポート パッケージが必要です。このサポート パッケージがインストールされていない場合、関数によってダウンロード用リンクが表示されます。

emb = fastTextWordEmbedding
emb = 
  wordEmbedding with properties:

     Dimension: 300
    Vocabulary: [1×1000000 string]

word2vec を使用して、"Italy"、"Rome"、および "Paris" という単語をベクトルにマッピングします。

italy = word2vec(emb,"Italy");
rome = word2vec(emb,"Rome");
paris = word2vec(emb,"Paris");

vec2word を使用して、ベクトル italy - rome + paris を単語にマッピングします。

word = vec2word(emb,italy - rome + paris)
word = 
"France"

事前学習済みの単語埋め込みを使用して、トークン化された文書の配列を単語ベクトルのシーケンスに変換します。

関数 fastTextWordEmbedding を使用して、事前学習済みの単語埋め込みを読み込みます。この関数には、Text Analytics Toolbox™ Model for fastText English 16 Billion Token Word Embedding サポート パッケージが必要です。このサポート パッケージがインストールされていない場合、関数によってダウンロード用リンクが表示されます。

emb = fastTextWordEmbedding;

工場レポート データを読み込み、tokenizedDocument 配列を作成します。

filename = "factoryReports.csv";
data = readtable(filename,'TextType','string');
textData = data.Description;
documents = tokenizedDocument(textData);

doc2sequence を使用して、文書を単語ベクトルのシーケンスに変換します。既定では、関数 doc2sequence はシーケンスを左にパディングして同じ長さになるようにします。高次元の単語埋め込みを使用して文書の大規模なコレクションを変換する場合、パディングのために大量のメモリが必要になる場合があります。関数がデータをパディングしないようにするには、'PaddingDirection' オプションを 'none' に設定します。あるいは、'Length' オプションを使用してパディングの量を制御できます。

sequences = doc2sequence(emb,documents,'PaddingDirection','none');

最初の 10 個のシーケンスのサイズを表示します。各シーケンスは DS 列の行列です。ここで、D は埋め込み次元、S はシーケンス内の単語ベクトルの数です。

sequences(1:10)
ans=10×1 cell array
    {300×10 single}
    {300×11 single}
    {300×11 single}
    {300×6  single}
    {300×5  single}
    {300×10 single}
    {300×8  single}
    {300×9  single}
    {300×7  single}
    {300×13 single}

単語の埋め込みの例を読み取ります。このモデルは、Wikipedia のテキストを解析して派生させました。

filename = "exampleWordEmbedding.vec";
emb = readWordEmbedding(filename)
emb = 
  wordEmbedding with properties:

     Dimension: 50
    Vocabulary: ["utc"    "first"    "new"    "two"    "time"    "up"    "school"    "article"    "world"    "years"    "university"    "talk"    "many"    "national"    "later"    "state"    "made"    "born"    "city"    "de"    ...    ] (1x9999 string)

word2vecvec2word を使用して単語埋め込みを調査します。

king = word2vec(emb,"king");
man = word2vec(emb,"man");
woman = word2vec(emb,"woman");
word = vec2word(emb,king - man + woman)
word = 
"queen"

単語埋め込みに学習させ、テキスト ファイルに書き込みます。

サンプル データを読み込みます。ファイル sonnetsPreprocessed.txt には、シェイクスピアのソネット集の前処理されたバージョンが格納されています。ファイルには、1 行に 1 つのソネットが含まれ、単語がスペースで区切られています。sonnetsPreprocessed.txt からテキストを抽出し、テキストを改行文字で文書に分割した後、文書をトークン化します。

filename = "sonnetsPreprocessed.txt";
str = extractFileText(filename);
textData = split(str,newline);
documents = tokenizedDocument(textData);

trainWordEmbedding を使用して単語埋め込みに学習させます。

emb = trainWordEmbedding(documents)
Training: 100% Loss: 2.64718  Remaining time: 0 hours 0 minutes.
emb = 
  wordEmbedding with properties:

     Dimension: 100
    Vocabulary: ["thy"    "thou"    "love"    "thee"    "doth"    "mine"    "shall"    "eyes"    "sweet"    "time"    "nor"    "beauty"    "yet"    "art"    "heart"    "o"    "thine"    "hath"    "fair"    "make"    "still"    ...    ] (1x401 string)

単語埋め込みをテキスト ファイルに書き込みます。

filename = "exampleSonnetsEmbedding.vec";
writeWordEmbedding(emb,filename)

readWordEmbedding を使用して単語埋め込みファイルを読み取ります。

emb = readWordEmbedding(filename)
emb = 
  wordEmbedding with properties:

     Dimension: 100
    Vocabulary: ["thy"    "thou"    "love"    "thee"    "doth"    "mine"    "shall"    "eyes"    "sweet"    "time"    "nor"    "beauty"    "yet"    "art"    "heart"    "o"    "thine"    "hath"    "fair"    "make"    "still"    ...    ] (1x401 string)

バージョン履歴

R2017b で導入