14 comments

[ 6.6 ms ] story [ 46.0 ms ] thread
Great slideshow. Word embeddings are already indispensable in NLP, but I'm wondering if it is right to assign just a unique vector per word. Instead, each word should have a vector based on context, for disambiguation and nuance.

I see word meaning as an action similar to object recognition in vision - we have to infer meaning because the actual word itself is a family of meanings. Most of the time it's used one word - one embedding, even in word2vec which is the standard method used in papers.

Of course word sense disambiguation is an old topic of research and there are many methods. The translation task is probably the ultimate word-disambiguation application - it shows how much work is still to do after word embedding, in order to understand the meaning of words. If words had unique meanings, we could have done translation with simple dictionary substitutions.

Sense2Vec is a thing; Spacy has a demo https://demos.explosion.ai/sense2vec/?word=natural%20languag...

For many downstream tasks it doesn't seem to improve things though. NLP is hard - lots of things should work but don't because of the sparse training data. Like this slide deck says: most sentences occur only once.

I realized after posting that I was naive. LSTMs are practically word embedding combinators. Training LSTMs should solve the problem of combining words and interpreting them in context.
I thought Spacy only did part of speech disambiguation rather than sense disambiguation. ie. it would be confused if a word has multiple meanings, all of which are nouns.
> Instead, each word should have a vector based on context, for disambiguation and nuance.

You do realize even under vanilla Word2vec, each word embedding is a sum of both the word vector and a vector of a surrounding window of words? Each embedding results from maximizing the likelihood of a small surrounding context given the word. Thus, context is factored in.

This is true, but the context implicit in the vector is the average of the training data.

Vanilla Embedding based models don't handle word order well (as some of the examples upon this slide deck show).

Side note: You may not want to open this on mobile data. It was downloading at 1mb/sec and I had to force close the browser immediately.

Edit: Not sure how big is it in total though. Maybe someone not on mobile can share.

On desktop Safari it was almost 10MB in total for me, 7.7MB of which is the PDF slides.

Edit: Images in the slides are downloaded as you navigate to them, they’re no more than 200KB per slide.

I edited the page. Now there's a download button and a preview button. If you click the preview button, the javascript document viewer embedding the pdf will be loaded, otherwise it won't be loaded.