このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
wordEmbedding
ベクトルへの単語のマッピングとその逆変換のための単語埋め込みモデル
説明
word2vec ライブラリ、GloVe ライブラリ、および fastText ライブラリで普及している単語埋め込みは、ボキャブラリ内の単語を実数ベクトルにマッピングします。
ベクトルは単語のセマンティクスを取得しようとするため、互いに類似する単語はベクトルも類似するようになります。一部の埋め込みでは、"king is to queen as man is to woman" (女王に対しての王は、女に対しての男に同じ) のような単語間の関係も取得されます。ベクトル形式では、この関係は king – man + woman = queen になります。
作成
fastTextWordEmbedding
を使用して事前学習済みの埋め込みを読み込むか、readWordEmbedding
を使用してファイルから埋め込みを読み取るか、trainWordEmbedding
を使用して埋め込みに学習させて単語埋め込みを作成します。
プロパティ
Dimension
— 単語埋め込みの次元
正の整数
単語埋め込みの次元。正の整数として指定します。
例: 300
Vocabulary
— モデル内の一意の単語
string ベクトル
モデル内の一意の単語。string ベクトルとして指定します。
データ型: string
オブジェクト関数
vec2word | Map embedding vector to word |
word2vec | 埋め込みベクトルへの単語のマッピング |
isVocabularyWord | Test if word is member of word embedding or encoding |
writeWordEmbedding | 単語埋め込みファイルの書き込み |
例
fastText サポート パッケージのダウンロード
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 個のシーケンスのサイズを表示します。各シーケンスは D 行 S 列の行列です。ここで、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)
word2vec
と vec2word
を使用して単語埋め込みを調査します。
king = word2vec(emb,"king"); man = word2vec(emb,"man"); woman = word2vec(emb,"woman"); word = vec2word(emb,king - man + woman)
word = "queen"
ファイルへの Word 埋め込みの書き込み
単語埋め込みに学習させ、テキスト ファイルに書き込みます。
サンプル データを読み込みます。ファイル 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 で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)