word2vec as Implicit Matrix Factorization
Skip-gram's three objectives share one optimum up to offsets, shifted PMI; negative sampling fits it by a count-weighted logistic PCA; and since the loss sees only the product of word and context vectors, the optimizer's balance, not the objective, decides which similarities we get
Overview & Motivation
Train word2vec on the finance corpus with an eight-word window, five negative samples, and dimensions. Then take every pair of words that occurs together in the training text and compare the dot product of the first word’s vector with the second word’s context vector against the shifted pointwise mutual information of the distributional-semantics topic. For the pairs seen at least times, the two agree with correlation . For the pairs seen once, the correlation is . Word2vec never forms a co-occurrence matrix, yet it fits one, and how closely depends on how often the pair was seen.
Now take that trained model and change the basis of its vectors: replace the word vectors by and the context vectors by for an invertible matrix . Every word–context dot product, and therefore the training loss, is unchanged. The word–word similarities are not. Over five such factorizations of the one trained product, the score for grouping nouns by their planted sector ranges from to , and the nearest neighbors of strong change. The objective does not decide which words are similar.
This topic proves both halves of that picture.
- The objective chooses the matrix. Skip-gram’s three training objectives, a full softmax, noise-contrastive estimation, and negative sampling, all have optima equal to pointwise mutual information (PMI) up to row and column offsets. Negative sampling’s is exactly on observed pairs, and unobserved pairs have no optimum (Levy and Goldberg 2014).
- At low rank, negative sampling is a weighted logistic PCA. The loss is exactly a count-weighted sum of Bernoulli KL divergences, so frequent pairs are fitted closely and rare ones loosely. A truncated SVD of shifted PMI weights every entry alike.
- The optimizer chooses the factorization. The loss sees only the product , so it fixes word similarity only up to a change of basis. Gradient flow conserves , and balanced factors are the square-root weighting of the distributional-semantics topic, with word plus context vectors equal to the positive part of a symmetric product.
Then we test what the factorization buys on the planted-sector benchmark, and the finance case study asks whether it finds a polarity direction that the window counts do not carry.
Three objectives, one matrix
Fix a window context, the two-word window L2 or the eight-word window L8, and write for the distributional-semantics topic’s pair counts (its Definition 1), , and . With L8 there are pair occurrences over observed cells, of the possible pairs; with L2, over , . The smoothed context distribution is , with the context counts taken as column sums.
A word gets a vector and, separately, every word gets a context vector . They are the rows of two matrices ; in this topic always means the context matrix. The score of a pair is , so the matrix of all scores is , a matrix of rank at most . Each objective below asks this matrix to predict the counts.
Definition 1 (Skip-gram with a full softmax).
The skip-gram model predicts each context from its word by a softmax over all contexts (Mikolov et al. 2013a), and is trained by minimizing
The softmax needs a sum over the whole vocabulary for every training pair. Negative sampling replaces it with a few binary decisions.
Definition 2 (Skip-gram with negative sampling).
Let and . Each observed pair is a positive example, and for each one we draw negative contexts independently from the noise distribution . The sampled loss of the pair is . Its expectation, summed over all pairs, is the negative-sampling objective
Here is the expected number of times the pair is drawn as a negative (Mikolov et al. 2013b; Goldberg and Levy 2014). Word2vec’s exponent is , the same smoothing the distributional-semantics topic studied in its Proposition 4.
Definition 3 (Noise-contrastive estimation).
Noise-contrastive estimation (NCE) treats as an unnormalized and trains a classifier to tell data pairs from noise pairs, with logit (Gutmann and Hyvärinen 2010, 2012; Mnih and Teh 2012). Its objective is with replaced by .
The difference between the two binary objectives is a single subtracted term. To see what it changes, we find each objective’s optimum when the scores are unconstrained, one free number per cell. The softmax comes first.
Proposition 1 (The softmax optimum).
For a word with , the row’s loss attains its infimum exactly when for every context . Its minimizers are then
for an arbitrary constant . If some , the infimum is approached as and never attained.
Proof.
With , the row’s loss is times the cross-entropy of relative to . That is at least times the entropy of , with equality exactly when (Gibbs’ inequality; formalML, KL Divergence, Propositions 1–3). The softmax takes every value in the open simplex and is unchanged by adding a constant to , so the infimum is attained exactly when has no zeros, at the stated . If , no softmax reaches it, and the loss decreases toward its infimum as .
∎An unseen context has no best score, only better and better ones. This is the neural-language-models topic’s Corollary 1, that a never-seen target has no maximum-likelihood fit, applied one context at a time. Negative sampling inherits the same phenomenon in a sharper form.
Theorem 1 (The negative-sampling optimum).
For , the function is strictly concave on , with unique maximizer . For , increases strictly toward as and has no maximizer. Hence, for unconstrained scores, separates into one such function per cell, it has a minimizer exactly when every pair is observed, and on observed pairs the minimizer is
Proof.
Since , we get and . The equation says , so . For , everywhere, and as . Finally, with and , , which is the distributional-semantics topic’s Definition 2.
∎This is Levy and Goldberg’s (2014) theorem, and its matrix is the one the distributional-semantics topic named and did not prove anything about: the unclipped shifted PMI. The theorem has a reading in terms of classifiers. is the probability that a pair with these counts came from the data rather than from the noise, when the prior odds of data to noise are . So the optimal score is the log density ratio of data pairs to noise pairs plus the log prior odds, the identity of formalML’s Density Ratio Estimation (its Theorem 4). That page states the identity for the Bayes classifier; Theorem 1 is the proof that the logistic loss reaches it, cell by cell. Each cell is a logistic regression with a canonical link (formalStatistics, Generalized Linear Models, Theorem 1), which is why the optimum is unique.
Proposition 2 (NCE and negative sampling fit one matrix up to offsets).
Under Theorem 1’s hypotheses, NCE’s optimum is , with no free row constant, and
an offset that depends on the context alone. Every optimum is (with ) plus a matrix constant along rows plus a matrix constant along columns:
| objective | row offset | column offset |
|---|---|---|
| full softmax | (any) | |
| noise-contrastive estimation | ||
| negative sampling |
So every optimum has rank at most .
Proof.
Theorem 1 applied to the logit gives , so . Subtracting gives the offset. The table follows from and , and a row-constant or column-constant matrix has rank one.
∎Negative sampling is NCE with the noise correction dropped (Dyer 2014). The two do not estimate the same thing: NCE recovers the conditional distribution itself (Mnih and Kavukcuoglu 2013), and negative sampling recovers an association score. But they differ by a context offset, and a model with a bias term per context could absorb it. This is the neural-language-models topic’s Theorem 6 in another guise: a log-bilinear model with biases has a score matrix of rank at most , and all three objectives ask for PMI in that form, which is the third part of the distributional-semantics topic’s Theorem 3.
The binary objective also differs from the softmax contrastive loss that formalRAG studies. There, the optimal critic of InfoNCE is PMI only up to a constant per query (formalRAG, InfoNCE and the Contrastive Objective, the proof of Theorem 1). Negative sampling’s logit is pinned: its constant is , and nothing else.
What negative sampling minimizes at low rank
Theorem 1 describes a model with one free number per cell. Word2vec has numbers for cells, with against , and of the cells at the eight-word window have no optimum at all. So what does it fit?
Theorem 2 (Negative sampling is a weighted logistic PCA).
Let , and let be the Bernoulli entropy. For every score matrix ,
So , and fitting a rank- matrix is a weighted KL projection of the target onto the rank- matrices. On an observed cell, each term is times the Bregman divergence of the softplus ,
and the cell’s loss has curvature at its optimum.
Proof.
Factor out of one cell: , a Bernoulli cross-entropy, which equals (formalML, KL Divergence, Proposition 1). The Bernoulli family in its natural parameter has log-partition and mean , and for an exponential family the KL divergence between members is the Bregman divergence of the log-partition (formalML, Information Geometry, Definition 8, in the natural coordinates of its Theorem 5), with . The curvature is , and .
∎An exponential-family PCA (Collins, Dasgupta, and Schapire 2001) is a low-rank fit of natural parameters under the family’s own divergence. With the Bernoulli family it is logistic PCA, and Landgraf and Bellay (2017) observed that negative sampling is exactly this, with a weight on every cell. The weights are what separate it from the distributional-semantics topic’s SVD.
Corollary 1 (Against the truncated SVD).
A truncated SVD of minimizes over rank- matrices, with equal weight on every cell (Eckart and Young 1936; formalML, Singular Value Decomposition, Theorem 2). Negative sampling minimizes , and it differs in three ways.
- It weights by counts. Near the optimum, , a least-squares fit with weight , and .
- It pushes unobserved cells down instead of clipping them. An unobserved cell has and pays , which keeps decreasing as .
- It keeps negative targets. An observed pair with is fitted at , not at .
Proof.
Part 1 is the second-order Taylor expansion of the cell’s loss at its optimum (formalCalculus, The Hessian, Theorem 3), with Theorem 2’s curvature; that theorem gives a remainder of , and since the cell’s loss is infinitely differentiable, Taylor’s theorem with the third derivative bounds it by . The bounds follow from and . Parts 2 and 3 are Definition 2 with , and Theorem 1.
∎So a pair seen once can count for no more than once, however large its PMI, while the SVD weighs its clipped PMI like any other entry. The corpus shows the predicted ordering. Train the model described in the overview (L8, , , , epochs) and compare with on every observed pair, grouped by count.
| times the pair was seen | pairs | correlation of with | mean |
|---|---|---|---|
| once | |||
| to | |||
| to | |||
| to | |||
| or more |
The correlation rises and the error falls with every band. The ordering is Corollary 1’s; the levels are partly unfinished training, since the correlation for pairs seen once was after epochs. Most observed pairs, , are seen once, so most of the matrix is fitted loosely. The unobserved cells, which have no target, are pushed far down: over all million of them the mean score is , against for observed pairs, and of them score below the median observed pair.
Training has not finished: the loss was still falling when it stopped, from per pair after epochs to after . It ends per pair above Theorem 2’s floor of , but not all of that gap is unfinished training. The floor is an infimum that no finite score attains: the unobserved cells reach it only at , and of the gap sits on them; a rank- matrix cannot reach every observed target either.
Where does come from? The product’s top singular vectors have one sign on every word and the opposite sign on every context, so the leading term is negative in every entry. It carries of , its leading singular value is times the next, and its mean entry is , the level of the unobserved cells. Word2vec has no bias terms, but Proposition 2 says its optimum wants offsets, and Theorem 1 says the of cells that were never observed want . The model spends one of its dimensions on a near-constant offset, negative in every entry, that pushes everything down.
The algorithm
So far the objective has been the expectation of what word2vec computes. Here is what it computes.
Definition 4 (Word2vec's stochastic gradient descent).
Each epoch visits the observed pairs in a fresh random order, in minibatches of . Each pair draws negatives from , and the parameters take one gradient step on the minibatch’s summed sampled loss. The step size decays linearly from to over training. Initialization follows the word2vec C code: the entries of are uniform on , and .
The sampled loss is an unbiased estimate of , by linearity of expectation over the negatives, so its gradient is an unbiased estimate of the objective’s gradient. Two departures from the C code are worth stating. The code updates after every pair, from several threads without locks, while we sum the gradients of a minibatch; and we train for epochs (the comparison grid below, ), many more than the C code’s default of five, because our corpus is small.
Remark.
The shipped word2vec also samples each window’s width uniformly from to and discards frequent words at random before forming windows. Both change the counts , the first by weighting a pair at distance by , and leave the form of the objective alone. Levy, Goldberg, and Dagan (2015) showed that both transfer to count-based methods. We train on the distributional-semantics topic’s unweighted counts so that Theorem 1’s target is exactly that topic’s matrix.
Gauge and balance
Every objective above is a function of the product . That leaves something undetermined.
Proposition 3 (Every factorization of one product).
If and all four matrices have full column rank , then and for a unique invertible . Consequently every objective of Definitions 1–3 determines the matrix of word–word dot products only up to with an arbitrary positive definite matrix, and word–word dot products are preserved exactly when is orthogonal.
Proof.
The columns of and of both span the column space of the product, so for some , invertible because both have rank . Then , and multiplying by a left inverse of gives , so . Finally, with of full column rank forces .
∎The same freedom appears in every model whose score is an inner product of two learned embeddings, including the dual encoders of retrieval (formalRAG, Dense Retrieval and Dual Encoders, Theorem 2, for the rank ceiling such scores share). For word vectors it matters, because word similarity is a cosine between rows of , which no part of the loss sees. The trained model shows how much it matters. Take its product, with singular value decomposition , and refactor it four ways: the distributional-semantics topic’s eigenvalue weights , for , and a random with condition number . All five have the same product to ten digits, and so the same loss.
| factorization of the one product | test AUC | test nearest neighbor | nearest neighbors of strong |
|---|---|---|---|
| as trained | weak, unfavorable, solid, soft, healthy | ||
| unfavorable, weak, soft, resilient, disappointing | |||
| weak, unfavorable, solid, resilient, soft | |||
| weak, unfavorable, solid, healthy, efficient | |||
| random , condition number | adverse, healthy, unfavorable, solid, confident |
The scores are those of the planted-sector benchmark of the next section. So which factorization does training produce? The answer comes from the optimizer, and it is cleanest for gradient flow, the limit of gradient descent with infinitesimal steps (formalCalculus, First-Order ODEs), where a conservation law found for deep linear networks applies verbatim (Du, Hu, and Lee 2018; Arora, Cohen, and Hazan 2018).
Theorem 3 (Gradient flow conserves the imbalance).
Let for a differentiable , and write . Along the gradient flow , , the matrix
is constant. A gradient step of size , with and for any matrix , including a minibatch’s sampled gradient, changes it by exactly
Proof.
, and , the same matrix. For the step, expand : the first-order terms are from both products and cancel, and the second-order terms are as stated.
∎If training starts balanced, with , gradient flow keeps it balanced. Balance determines the factorization up to a rotation.
Lemma 1 (Balanced factorizations).
Let have rank and distinct singular values, and let with . Then and for an orthogonal matrix .
Proof.
Let , which is positive definite since has rank . Then . Write the thin SVD ; then and , which must equal . Both are eigendecompositions of one matrix with distinct eigenvalues, so and for a diagonal sign matrix , and with orthogonal. The same argument with gives . Then forces , so .
∎Corollary 2 (Balanced word vectors are the square-root weighting).
For balanced factors of :
- , the distributional-semantics topic’s Definition 3 with , applied to the matrix negative sampling fitted. Cosines between word vectors are those of .
- If is symmetric, then , the positive part of .
Proof.
Part 1: by Lemma 1, . Part 2: for symmetric the singular vectors can be taken as and , so , as in the distributional-semantics topic’s Corollary 1, and cancels in .
∎This is the precise sense of that topic’s promise. Adding context vectors to word vectors, the heuristic of Levy, Goldberg, and Dagan (2015), is the projection onto the positive eigenspace, exactly for balanced factors of a symmetric product, and only up to a rotation that no cosine can see. We check the whole chain on a small symmetric instance. Gradient descent at full rank, started balanced, fits the optimum to , and misses by at most with step and with step : the error shrinks with the step, as Theorem 3 predicts.
The corpus is less tidy, and the page should say how. Word2vec’s initialization is nearly balanced: is of the final . But minibatch SGD with word2vec’s step sizes is not gradient flow. Theorem 3’s second-order terms add up: grows -fold in the first epoch, keeps growing, and ends at of . What cosines depend on, though, is the basis change in , which is orthogonal exactly for balanced factors. Its singular values lie in after the first epoch, in after the last, and in at every checkpoint, so it is nearly orthogonal throughout, and its smallest singular value lies mostly along the offset direction found above. The trained vectors score against for the exactly balanced . The balanced reading holds, approximately. With the target is not symmetric, so the corpus can check part 1 of Corollary 2 but not part 2.
Recovering the planted sectors
The distributional-semantics topic built a benchmark with a known answer: nouns that the corpus generator drew from exactly one of six sector vocabularies, split into dev nouns for choosing settings and test nouns for scoring (its Definition 4). The pair AUC is the probability that a same-sector pair of nouns has a higher cosine than a cross-sector pair, and the nearest-neighbor accuracy is the share of nouns whose nearest other noun shares their sector; chance for the latter is . That topic’s best setting was a truncated SVD of at the eight-word window with , which is the matrix negative sampling with and fits. So the first comparison holds the matrix and the rank fixed and changes only the method.
| the same matrix, | dev AUC | dev nearest neighbor | test AUC | test nearest neighbor |
|---|---|---|---|---|
| negative sampling, epochs | ||||
| truncated SVD, (that topic’s selection) | ||||
| truncated SVD, |
On the test nouns, negative sampling trails the SVD by in AUC, with a jackknife standard error of , and by in nearest-neighbor accuracy, with a paired standard error of . Averaging word and context vectors changes nothing here ( either way). The rarer sector nouns, seen two to four times and never used for any choice, give the same verdict: AUC for negative sampling against for the SVD, and nearest-neighbor accuracy against .
Corollary 1 predicts the direction. On the benchmark nouns’ rows, pairs seen at most four times are of the observed pairs, and they carry of the squared mass of , which the SVD fits with equal weight. They carry only of negative sampling’s weight . A noun’s sector shows mostly in rare pairs with other sector words: pairs with a noun of the same sector carry of that squared mass, and of their share sits in pairs seen at most four times. Negative sampling, by design, trusts rare pairs less. Training longer helps: the same configuration trained for epochs instead of scores .
A small grid gives negative sampling its own choice of window and dimension, selected on dev nouns by the same rule as before, with epochs each.
| window, dimension | dev AUC | dev nearest neighbor | test AUC | test nearest neighbor |
|---|---|---|---|---|
| L2, | ||||
| L2, | ||||
| L8, (selected) | ||||
| L8, |
The wider window wins, as it did for counts, because sector is a property of whole documents. The selected model beats the distributional-semantics topic’s best sparse matrix () in AUC and trails its SVD by (standard error ). On this corpus, at this budget, the count-based method with a truncated SVD is the better reader of planted sectors.
One cell, and the factorization training picks
The laboratory makes both halves of the topic concrete. Panel A shows one cell of the objective: pick one of six contexts of revenue, its most associated context in each count band, from a pair seen once to a pair seen times, plus the most frequent context it never meets, and the curve is that cell’s loss. Its minimum sits at and moves by when you change from to ; its width is set by the weight ; and the dot marks what the trained model actually learned. The pair seen once, revenue with plantline, has weight and is fitted badly (learned , target ); revenue with fiscal, seen times, is fitted almost exactly. The context outlook, never seen with revenue, has no minimum at all. Panel B follows training: drag the epoch slider and watch frequent pairs reach the diagonal first while rare pairs stay scattered and unobserved cells sink. Its second view shows the five factorizations of one product, with their scores and the neighbors of strong and loans.
Changing k slides the minimum by −log k; the curve's width falls as the weight grows, so frequent pairs are pinned and rare ones are not. The dot is the score the trained model learned (filled at the setting it was trained with): close to x* for a pair seen dozens of times, far from it for a pair seen once. A context never seen with revenue has no minimum, only a push toward −∞.
revenue·plantline is not among the sampled pairs; its count band is highlighted. At epoch 0 every score is 0, since the context vectors start at zero. Frequent pairs reach the diagonal first; pairs seen once stay scattered, as their small weight predicts, and unobserved cells sink. The imbalance grows well above zero, because SGD is not gradient flow, but the gauge stays near orthogonal from the first epoch on.
Finance case study: polarity isn’t a direction
Where this goes next
- GloVe. GloVe fits by weighted least squares with explicit biases and a weight that grows with the count, the same structure as Corollary 1’s local fit with a different weight. The next topic compares the two and takes up the linear structure behind word analogies, which is a statement about word–word geometry and so, by Proposition 3, about the gauge.
- Contextual embeddings. One vector per word type cannot tell strong from weak by their windows. Contextual embeddings give each token its own vector, trained by a masked-language-model objective that is again a softmax over the vocabulary.
- Knowledge-graph embeddings. TransE and its successors train with negative sampling over corrupted triples, and Theorem 1’s per-cell analysis applies to their scores as well.
- Contrastive retrieval. formalRAG’s hard-negative mining asks which negatives to draw for a dual encoder; here the noise distribution decides what the optimum factorizes.
Honest caveats
Implementation
The companion notebook (notebookPath) imports word2vec_implicit_factorization.py, which owns every number on this page. It imports the distributional-semantics topic’s module for the co-occurrence counts, the PMI matrices, the SVD baselines, the benchmark, and the semantic-orientation scores, and the neural-language-models topic’s module for its log-softmax and gradient checkers. Running it as a script trains five negative-sampling models in NumPy and executes a harness of assertion-based tests in under a minute on a laptop CPU. The tests cover:
- Proposition 1, Theorem 1, and Proposition 2 against unconstrained L-BFGS (
scipy.optimize) on random instances, and Theorem 1 exactly on every observed pair of the corpus; the hand-written gradients against complex-step and central differences; the unbiasedness of the sampled loss. - Theorem 2 on random instances, against
scipy.stats.entropy, with its curvature and weight bounds; the fit by count band and the offset direction on the corpus. - Proposition 3 on random instances and on the trained model; Theorem 3’s step identity on real minibatches and its drift as the step shrinks; Lemma 1 and Corollary 2 on random instances and end to end from a balanced start; the near-balance of the trained model.
- The controlled comparison, the grid and its selection, the weight mechanism, and the finance case study.
The laboratory reads its data from a JSON file that one of those tests requires to equal the module’s viz_payload() exactly, so the figure cannot drift from the code.
References & Further Reading
- paper Efficient Estimation of Word Representations in Vector Space — Tomas Mikolov, Kai Chen, Greg Corrado, and Jeffrey Dean (2013) arXiv:1301.3781. Skip-gram, Definition 1
- paper Distributed Representations of Words and Phrases and Their Compositionality — Tomas Mikolov, Ilya Sutskever, Kai Chen, Greg Corrado, and Jeffrey Dean (2013) NeurIPS 2013. Negative sampling and its unigram-to-the-0.75 noise, Definition 2
- paper Noise-Contrastive Estimation: A New Estimation Principle for Unnormalized Statistical Models — Michael Gutmann and Aapo Hyvärinen (2010) Proceedings of AISTATS 2010, PMLR 9: 297–304. Noise-contrastive estimation, Definition 3
- paper Noise-Contrastive Estimation of Unnormalized Statistical Models, with Applications to Natural Image Statistics — Michael U. Gutmann and Aapo Hyvärinen (2012) Journal of Machine Learning Research 13: 307–61. Noise-contrastive estimation, Definition 3
- paper A Fast and Simple Algorithm for Training Neural Probabilistic Language Models — Andriy Mnih and Yee Whye Teh (2012) Proceedings of ICML 2012. NCE for language models and self-normalization, Proposition 2
- paper Learning Word Embeddings Efficiently with Noise-Contrastive Estimation — Andriy Mnih and Koray Kavukcuoglu (2013) NeurIPS 2013. NCE-trained word embeddings, Proposition 2
- paper word2vec Explained: Deriving Mikolov et al.'s Negative-Sampling Word-Embedding Method — Yoav Goldberg and Omer Levy (2014) arXiv:1402.3722. The negative-sampling objective, Definition 2
- paper Neural Word Embedding as Implicit Matrix Factorization — Omer Levy and Yoav Goldberg (2014) NeurIPS 2014. Theorem 1
- paper Notes on Noise Contrastive Estimation and Negative Sampling — Chris Dyer (2014) arXiv:1410.8251. Negative sampling as NCE without its correction, Proposition 2
- paper Improving Distributional Similarity with Lessons Learned from Word Embeddings — Omer Levy, Yoav Goldberg, and Ido Dagan (2015) Transactions of the ACL 3: 211–25. Adding context vectors, the eigenvalue weight, and word2vec's sampling as count reweighting
- paper A Generalization of Principal Components Analysis to the Exponential Family — Michael Collins, Sanjoy Dasgupta, and Robert E. Schapire (2001) NeurIPS 2001. Exponential-family PCA, Theorem 2
- paper word2vec Skip-Gram with Negative Sampling Is a Weighted Logistic PCA — Andrew J. Landgraf and Jeremy Bellay (2017) arXiv:1705.09755. Theorem 2
- paper Algorithmic Regularization in Learning Deep Homogeneous Models: Layers Are Automatically Balanced — Simon S. Du, Wei Hu, and Jason D. Lee (2018) NeurIPS 2018. The conserved imbalance, Theorem 3
- paper On the Optimization of Deep Networks: Implicit Acceleration by Overparameterization — Sanjeev Arora, Nadav Cohen, and Elad Hazan (2018) Proceedings of ICML 2018. Balancedness under gradient flow, Theorem 3
- paper The Approximation of One Matrix by Another of Lower Rank — Carl Eckart and Gale Young (1936) Psychometrika 1 (3): 211–18. The SVD side of Corollary 1
- paper DeepWalk: Online Learning of Social Representations — Bryan Perozzi, Rami Al-Rfou, and Steven Skiena (2014) Proceedings of KDD 2014, 701–10. Skip-gram on random walks
- paper GloVe: Global Vectors for Word Representation — Jeffrey Pennington, Richard Socher, and Christopher D. Manning (2014) Proceedings of EMNLP 2014, 1532–43. A weighted least-squares fit to log counts, the next topic
- paper Enriching Word Vectors with Subword Information — Piotr Bojanowski, Edouard Grave, Armand Joulin, and Tomas Mikolov (2017) Transactions of the ACL 5: 135–46. fastText, skip-gram over character n-grams
- paper Thumbs Up or Thumbs Down? Semantic Orientation Applied to Unsupervised Classification of Reviews — Peter D. Turney (2002) Proceedings of ACL 2002, 417–24. Semantic orientation, the finance case study's baseline