タグ付けされた質問 「word-embeddings」

単語の埋め込みとは、NLPにおける一連の言語モデリングおよび特徴学習手法の総称であり、単語は、語彙サイズと比較して、低次元空間の実数のベクトルにマッピングされます。

2
ニューラルネットワークの埋め込み層とは何ですか?
多くのニューラルネットワークライブラリには、KerasやLasagneのような「埋め込み層」があります。 ドキュメントを読んでも、その機能を理解しているかどうかはわかりません。たとえば、Kerasのドキュメントには次のように記載されています。 正の整数(インデックス)を固定サイズの密ベクトルに変換します。[[4]、[20]]-> [[0.25、0.1]、[0.6、-0.2]] 知識のある人がそれが何をするのか、いつそれを使うのかを説明できますか? 編集:ドキュメントの貼り付けに関して、ドキュメントから貼り付けることはあまりないので、私の質問です。私はそれがどのような変換を行うのか、なぜそれを使用すべきなのか理解していません。 とにかく、これはケラスで説明されている方法です: 埋め込み keras.layers.embeddings.Embedding(input_dim、output_dim、init = 'uniform'、input_length = None、weights = None、W_regularizer = None、W_constraint = None、mask_zero = False)正の整数(インデックス)を固定サイズの密ベクトルに変換します、たとえば [[4]、[20]]-> [[0.25、0.1]、[0.6、-0.2]] 入力形状:形状を持つ2Dテンソル:(nb_samples、sequence_length)。出力形状:形状を持つ3Dテンソル:(nb_samples、sequence_length、output_dim)。引数: input_dim:int> =0。語彙のサイズ。1+入力データで発生する最大整数インデックス。output_dim:int> =0。密な埋め込みの次元 そして、それはラザニアでそれがどのように説明されるかです: 単語を埋め込むためのレイヤー。入力は整数型のテンソル変数でなければなりません。 パラメーター:incoming:Layerインスタンスまたはタプル このレイヤーに入力するレイヤー、または予想される入力形状。 input_size:int さまざまな埋め込みの数。最後の埋め込みのインデックスはinput_size-1です。 output_size:int 各埋め込みのサイズ。 W:Theano共有変数、式、numpy配列または呼び出し可能 埋め込み行列の初期値、式または初期化子。これは、形状(input_size、output_size)の行列でなければなりません。詳細については、lasagne.utils.create_param()を参照してください。 例 >>> from lasagne.layers import EmbeddingLayer, InputLayer, get_output >>> import theano >>> x …

2
Keras「埋め込み」レイヤーはどのように機能しますか?
Kerasライブラリの「埋め込み」レイヤーの動作を理解する必要があります。Pythonで次のコードを実行します import numpy as np from keras.models import Sequential from keras.layers import Embedding model = Sequential() model.add(Embedding(5, 2, input_length=5)) input_array = np.random.randint(5, size=(1, 5)) model.compile('rmsprop', 'mse') output_array = model.predict(input_array) 次の出力が得られます input_array = [[4 1 3 3 3]] output_array = [[[ 0.03126476 0.00527241] [-0.02369716 -0.02856163] [ 0.0055749 0.01492429] [ 0.0055749 0.01492429] …

3
文書全体に単語の埋め込みを適用して、特徴ベクトルを取得します
ワード埋め込みを使用して、教師あり学習での使用に適した特徴ベクトルにドキュメントをマッピングするにはどうすればよいですか? ワード埋め込みは各ワードをマップベクターにここで、一部ではない余りに多数(例えば、500)です。人気のある単語の埋め込みには、word2vecとGloveが含まれます。V ∈ Rの Dの DwwwV ∈Rdv∈Rdv \in \mathbb{R}^dddd 教師あり学習を適用してドキュメントを分類したい。現在、bag-of-words表現を使用して各ドキュメントを特徴ベクトルにマッピングし、市販の分類器を適用しています。単語の埋め込みに含まれるセマンティック知識を活用するために、単語の特徴ベクトルを既存の事前学習済みの単語の埋め込みに基づくものに置き換えたいと思います。それを行う標準的な方法はありますか? いくつかの可能性を想像できますが、最も意味のあるものがあるかどうかはわかりません。私が検討した候補アプローチ: ドキュメント内の各単語のベクトルを計算し、それらすべてを平均化することができました。ただし、これは多くの情報を失う可能性があるようです。たとえば、word-of-words表現では、分類タスクに非常に関連性のある単語がいくつかあり、ほとんどの単語が無関係である場合、分類子はそれを簡単に学習できます。文書内のすべての単語のベクトルを平均すると、分類子にはチャンスがありません。 すべての単語のベクトルを連結しても機能しません。これは、固定サイズの特徴ベクトルにならないためです。また、単語の特定の配置に過度に敏感になるため、悪い考えのように思えます。 単語の埋め込みを使用して、すべての単語の語彙をクラスタの固定セット、たとえば1000個のクラスタにクラスタ化できます。この場合、ベクトルのコサイン類似度を単語の類似度の尺度として使用します。次に、バッグオブワードの代わりに、バッグオブクラスターを使用することができます。分類器に提供する特徴ベクトルは、1000 番目のベクトルにすることができ、番目のコンポーネントはドキュメント内の単語の数をカウントしますクラスター一部です。私私私i私私i 単語与えられると、これらの単語の埋め込みにより、上位20個の最も類似した単語とそれらの類似度スコアセットを計算できます。これを使用して、単語のような特徴ベクトルを適応させることができました。私は単語を見たとき、単語に対応する要素インクリメントに加えて、により、Iはまた、単語に対応する要素増分ができによって、単語に対応する要素増分により、というように。w 1、… 、w 20 s 1、… 、s 20 w w 1 w 1 s 1 w 2 s 2wwww1、… 、w20w1、…、w20w_1,\dots,w_{20}s1、… 、s20s1、…、s20s_1,\dots,s_{20}wwwwww111w1w1w_1s1s1s_1w2w2w_2s2s2s_2 文書の分類に適した特定のアプローチはありますか? パラグラフ2vecまたはdoc2vecを探していません。それらは大規模なデータコーパスのトレーニングを必要とし、私は大規模なデータコーパスを持っていません。代わりに、既存の単語埋め込みを使用したいと思います。


3
R:データセットにNaNがないにもかかわらず、「Forest function call」エラーでNaN / Infをスローするランダムフォレスト[非公開]
キャレットを使用して、データセットに対してクロス検証されたランダムフォレストを実行しています。Y変数は要因です。データセットにNaN、Inf、またはNAはありません。ただし、ランダムフォレストを実行すると、 Error in randomForest.default(m, y, ...) : NA/NaN/Inf in foreign function call (arg 1) In addition: There were 28 warnings (use warnings() to see them) Warning messages: 1: In data.matrix(x) : NAs introduced by coercion 2: In data.matrix(x) : NAs introduced by coercion 3: In data.matrix(x) : NAs introduced by …

1
センチメント分析に段落ベクトルを使用した最新のパフォーマンスが報告されていますか?
LeとMikolovによるICML 2014の論文「Sentences and Documentsの分散表現」の結果に感銘を受けました。「パラグラフベクトル」と呼ばれる彼らが説明する技術は、word2vecモデルの拡張に基づいて、任意の長さのパラグラフ/ドキュメントの教師なし表現を学習します。この技術は、この手法を使用したセンチメント分析に関する最新のパフォーマンスを報告しています。 従来のバッグオブワード表現に代わるものとして、他のテキスト分類問題でこの手法を評価したいと考えていました。しかし、私はword2vec Googleグループのスレッドで2番目の著者の投稿を見つけて、一時停止しました。 夏の間にQuocの結果を再現しようとしました。IMDBデータセットのエラー率は、約9.4%〜10%に達する可能性があります(テキストの正規化の程度によって異なります)。しかし、Quocの論文での報告に近いものは得られませんでした(7.4%のエラー、これは大きな違いです)...もちろん、Quocにコードについて尋ねました。彼はそれを公開すると約束したが、今のところ何も起こっていない。... Quocの結果は実際には再現性がないと考え始めています。 これらの結果を再現することに成功した人はいますか?

1
word2vecでネガティブサンプリングはどのように機能しますか?
私はword2vecのコンテキストでネガティブサンプリングの概念を理解しようと懸命に努力しています。[ネガティブ]サンプリングのアイデアを消化できません。たとえば、ミコロフの論文では、負のサンプリング期待値は次のように定式化されています。 ログσ(⟨ W 、C ⟩ )+ K ⋅ EcN〜PD[ ログσ(- ⟨ W 、CN⟩ )] 。ログ⁡σ(⟨w、c⟩)+k⋅EcN〜PD[ログ⁡σ(−⟨w、cN⟩)]。\log \sigma(\langle w,c\rangle ) + k \cdot \mathbb E_{c_N\sim PD}[\log\sigma(−\langle w,c_N\rangle)]. 私は左の用語理解していますが、ネガティブな単語とコンテキストのペアをサンプリングするアイデアを理解できません。ログσ(⟨ W 、C ⟩ )ログ⁡σ(⟨w、c⟩)\log \sigma(\langle w,c\rangle)



3
頻度の低い単語に対しては階層的なソフトマックスが優れているのに対し、頻度の高い単語に対してはネガティブサンプリングが優れているのはなぜですか?
word2vecのCBOWモデルとskip-gramモデルで、階層的なソフトマックスが頻度の低い単語に対して優れているのに対し、ネガティブサンプリングが頻繁な単語に対して優れているのはなぜかと思います。https://code.google.com/p/word2vec/で申し立てを読みました。

3
Word2Vecのスキップグラムモデルはどのように出力ベクトルを生成しますか?
Word2Vecアルゴリズムのスキップグラムモデルを理解できません。 連続する単語のバッグでは、基本的にワンホットエンコーディング表現と入力行列Wを乗算した後にそれらを平均化するため、ニューラルネットワークでコンテキストワードがどのように「適合する」かを簡単に確認できます。 ただし、スキップグラムの場合、ワンホットエンコーディングと入力行列を乗算して入力ワードベクトルを取得するだけで、コンテキストワードのC(=ウィンドウサイズ)ベクトル表現を乗算して、出力行列W 'を使用した入力ベクトル表現。 つまり、サイズボキャブラリとサイズエンコーディング、入力行列、およびエンコーディングがあります。出力行列として。ワード所与ワンホットエンコーディングとコンテキスト言葉ではと(ワンホット担当者が有する及びあなたが乗算場合)、入力行列によってあなたが得る、これからスコアベクトルをどのように生成しますか?VVVNNNW∈RV×NW∈RV×NW \in \mathbb{R}^{V\times N}W′∈RN×VW′∈RN×VW' \in \mathbb{R}^{N\times V}wiwiw_ixixix_iwjwjw_jwhwhw_hxjxjx_jxhxhx_hxixix_iWWWh:=xTiW=W(i,⋅)∈RNh:=xiTW=W(i,⋅)∈RN{\bf h} := x_i^TW = W_{(i,\cdot)} \in \mathbb{R}^NCCC

1
パフォーマンスの観点からの単語埋め込みアルゴリズム
約6000万のフレーズをベクトル空間に埋め込み、それらの間のコサイン類似度を計算しようとしています。CountVectorizerユニグラムとバイグラムを生成するカスタムビルドのトークナイザー関数でsklearnを使用してきました。意味のある表現を得るには、行数に比例した膨大な数の列を許可する必要があることがわかります。これは、非常にまばらな行列につながり、パフォーマンスを低下させます。約10,000列しかなかったとしてもそれほど悪くはありません。これは、単語の埋め込みにはかなり妥当だと思います。 私はword2vecそれがはるかに低次元でより高密度の埋め込みを生成すると確信しているので、Googleを使用しようと考えています。しかしその前に、最初に見ておくべき他の埋め込みがありますか?重要な要件は、約6,000万のフレーズ(行)をスケーリングできることです。 私は単語埋め込みの分野にかなり慣れていないので、アドバイスがあれば助かります。 また、パフォーマンスを向上させるために、特異値分解をすでに使用していることも付け加えておきます。

2
次元を削減するためのt-SNEのパラメーターを決定する方法は?
私は単語の埋め込みに非常に慣れていません。学習後のドキュメントの様子を視覚化したい。私はt-SNEがそれを行うためのアプローチであると読みました。埋め込みサイズとして250次元の100Kドキュメントがあります。同様に利用可能ないくつかのパッケージがあります。 ただし、t-SNEの場合、何回反復するか、アルファの値または永続性の値をよく学習するために維持する必要があるかわかりません。 これらのハイパーパラメータはありますか、それともいくつかの属性によって決定できますか?

1
SVDの前に単語共起行列に個別の相互情報を適用することの長所と短所は何ですか?
単語の埋め込みを生成する1つの方法は次のとおりです(ミラー)。 コーパスを取得します。たとえば、「飛行が好きです。NLPが好きです。ディープラーニングが好きです。」 それから単語共起行列を作成します。 でSVDを実行し、Uの最初の列を保持します。XXXkkk 部分行列の各行は、その行が表す単語を埋め込んだ単語になります(行1 = "I"、行2 = "like"、…)。U1:|V|,1:kU1:|V|,1:kU_{1:|V|,1:k} ステップ2と3の間に、点ごとの相互情報が適用される場合があります(A. HerbelotとEM Vecchiなど。2015。共有世界の構築:モデル理論的意味空間への分布のマッピング。自然言語処理における経験的方法に関する2015年会議の議事録。リスボン、ポルトガル。) SVDの前に単語共起行列に個別の相互情報を適用することの長所と短所は何ですか?

2
言葉の連続袋についての質問
この文を理解できません。 最初に提案されたアーキテクチャは、フィードフォワードNNLMに似ています。非線形の隠れ層が削除され、投影層がすべての単語(投影行列だけでなく)で共有されます。したがって、すべての単語が同じ位置に投影されます(それらのベクトルは平均化されます)。 投影層と投影行列とは何ですか?すべての単語が同じ位置に投影されるとはどういう意味ですか?そして、なぜそれはそれらのベクトルが平均化されることを意味するのですか? この文は、ベクトル空間での単語表現の効率的な推定(Mikolov et al。2013)のセクション3.1の最初のものです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.