Placeholder Image

Subtitles section Play video

  • (bell rings)

  • - Hello, welcome to a new session from, I don't know,

  • is it the Machine Learning Course,

  • is it the Programming with Text Course, I don't know?

  • I'm just here.

  • I'm just a person who's here.

  • And this session which will be a whole bunch of videos,

  • is about a topic, word2vec.

  • (bell rings)

  • I'm ringing the bell way too much.

  • So, first of all, I want to mention something very important.

  • I've known about word2vec.

  • And I've used it in projects for a little while,

  • but I don't think I ever really understood it.

  • (laughs)

  • And I don't even know that I really do understand it.

  • But I definitely improved my understanding of it vastly,

  • after reading this amazing tutorial by Allison Parrish.

  • It's posted as a Gist on Github.

  • It's a Python Notebook, Understanding Word Vectors,

  • by Allison Parrish.

  • You know, honestly, if I'm being truthful,

  • you should just stop this video right now

  • and read this instead.

  • But, you know if you, some people seem

  • to like listening to me prattle on.

  • Which is fine, you could keep watching if you so choose.

  • Read this after then, at the very least.

  • And so this tutorial is released under Creative Commons

  • by 4.0 license.

  • The code itself is the Creative Commons Zero license.

  • So you can re-use this material,

  • which is what I'm doing right now.

  • I don't usually do this.

  • I mean my stuff is always based on other people's stuff,

  • but this first video I'm really going to like,

  • talk through what's in this tutorial in my own words.

  • But if you do the same please reference

  • with attribution according to the license.

  • Okay, so I also want to mention

  • that Allison Parrish has a wonderful Talk,

  • it's on YouTube, I will link to it,

  • called Experimental Creative Writing

  • with the Vectorized Word.

  • From the Strange Loop Conference.

  • So I also encourage you to take a look

  • at that as inspiration and background

  • for what it is I want to show you.

  • My end goal with this tutorial is to get to the point

  • where I have a P5 JavaScript sketch in the browser,

  • where I can do stuff with word2vec.

  • What is word2vec?

  • The point of this video that you're watching right now,

  • which I'm taking a very long time to start,

  • is just to answer the question what is word2vec?

  • By the end of it, I want to use word2vec in the projects

  • to make weird stuff happen with text on a web page.

  • All right.

  • How are we feeling?

  • So, all right.

  • So let me come over here for a second.

  • Because I've written word2vec up here,

  • and that's going to help me.

  • The idea of word2vec and others,

  • this is a machine learning process,

  • similar to other things that I've done

  • that looked at like, classification.

  • Is this image a cat or a dog?

  • Or a regression analysis.

  • What's the, what's, can you predict the price of this house

  • based on certain properties of that house?

  • These are classic machine learning examples.

  • Word2vec is a particular machine learning model

  • that produces something called a word embedding.

  • Now, and that's a very, very fancy term.

  • And what it means is that any given word,

  • like apple, can be associated

  • with numbers, a vector.

  • This we can basically somehow come up

  • with this sort of like numeric mathematical

  • essence of this word, as some array of numbers.

  • Like 0.7 and 1.2

  • and -0.345, et cetera, et cetera.

  • And there's going to be some amount of numbers in here.

  • This seems like a crazy thing.

  • Why would I ever want to have a word

  • associated with an array of numbers?

  • Well one of the things that one can do

  • with arrays of numbers is math.

  • Linear algebra, multiplying,

  • subtracting, averaging, adding.

  • So, we know we can do that with arrays of numbers.

  • And this is the kind of thing that happens

  • in lots of my other tutorials with programming graphics,

  • and pixel processing and machine learning.

  • But one thing we wouldn't know how to do

  • is how would we say, you know,

  • apple plus, I was going to say plus orange, but that could be.

  • I was trying to like come up with something, a good example.

  • This is what happens when you don't plan

  • these tutorials in advance.

  • I could come up with an example on the fly.

  • Apple plus purple,

  • could this equal plum, maybe, right?

  • Like, in other words, like, I'm trying to come up

  • with some like pseudo math.

  • Like, let's take these two words and add them together.

  • like cat plus cute maybe that equals kitten.

  • And can I take, like, we're not talking about

  • concatenation, apple-purple.

  • We're taking apple plus purple.

  • Could I get that sort of mathematical essence

  • of these words, add them together and get a new word?

  • Well, the theory, the prompt, the idea here,

  • the argument that I am making to you

  • is that word2vec is a mechanism.

  • By which you can do stuff like this.

  • Right there in your code.

  • If I could quantify the word apple

  • as a series of numbers and I could quantify

  • the word purple as a series of numbers,

  • then couldn't I just add all those numbers together?

  • I would get a new series of numbers.

  • And then I might look and find which word,

  • or has a set of numbers that is most close

  • to this set of numbers.

  • How could I find the similarity?

  • I could calculate a similarity score

  • between any two sets of numbers.

  • I could find the word that is the most similar

  • to this plus this and maybe it would be plum.

  • Why would it be plum?

  • Is that magic?

  • Is it because of what data that's word2vec model

  • was trained on?

  • Well, yes, it's the latter.

  • But, and so I want to get to all of that.

  • Okay, this is my sort of like zoomed out view

  • of why we're doing this.

  • Let's come over and look at what Allison

  • has in her particular tutorial here.

  • Which is a really nice example.

  • If I look at this, we can say like,

  • well imagine like a really simple case, right?

  • I was sort of saying, over here, each word

  • gets a list of maybe 100 numbers, maybe its 300 numbers,

  • maybe its 1000 numbers.

  • This is up to us to sort of figure out and decide

  • based on what we're trying to do.

  • But what if we simplify that.

  • And here's Alison's example.

  • Where each word gets essentially two numbers.

  • And those numbers are data properties of that word.

  • Like a cuteness score from zero to 100,

  • and a size from zero to 100.

  • So you could say kitten is 95, 15.

  • A hamster is 80 comma eight, right?

  • There are these numbers that sort of like,

  • the label is tied to a set of data properties.

  • So if that's the case, then we can look,

  • we could graph all of those and we could say something like,

  • oh, you know, like a horse and a dolphin

  • are kind of like similar in terms of like size and cuteness.

  • And then we could start to do things by,

  • but actually like, we could do a mathematical analysis.

  • Like what is the actual Euclidean distance.

  • Euclidean distance means the number of,

  • well in this case pixels or units,

  • between these two words right here.

  • These are very similar because they're

  • physically close to each other.

  • And we can also do things, you can think of those as,

  • and this is a nice demonstration of this idea.

  • This is why we talk about it as vectors, right?

  • I have a whole set of tutorials about vectors,

  • describing as, describing points in space.

  • So, for example, a vector, a velocity vector,

  • if I have a particle in a particle system,

  • and I want it to go from here to here,

  • this is its velocity.

  • Its change in location.

  • In essence, this is basically what I'm doing

  • with an operation like this.

  • For example what if I said,

  • okay, well apple is over here.

  • And then I'm going to add purple to it.

  • I'm going to move by purple's numbers,

  • and over here I now find plum.

  • So when we look at this in two dimensions,

  • it kind of makes, we can sort of like,

  • our brains can understand that.

  • Two dimensions is like the easiest dimension.

  • I mean I actually find two dimensions

  • to be easier than one dimension.

  • One dimension is weird sometimes.

  • So, what Allison is showing here

  • is by moving from let's say,

  • one word to another word physically in space,

  • we can establish this idea of word relationships.

  • Chicken is to kitten as tarantula is to hamster.

  • Now this is all very arbitrary,

  • with like hard-coded word vectors.

  • So, but this is just for demonstration purposes

  • in two dimensions so that our brains

  • can kind of process it.

  • Ultimately, if we have a lot more information, somehow,

  • about all of these words in higher dimensional space,

  • in vectors that have 100 dimensions, 100 numbers,

  • we can't visualize that so easily.

  • There are interesting techniques

  • called dimension reductionality.

  • Reducing the dimensionality that we could then draw,

  • like word clusters and stuff.

  • And maybe I'll get to that later.

  • But what I'm trying to say here

  • is that we can establish sophisticated

  • complex relationships between words

  • in higher dimensional space.

  • But in order to do that it's useful

  • to look at a single example that ties words

  • to numbers in a low dimensional space,

  • that we can either visualize or if we like,

  • put into our brains.

  • And so, I've kind of described to you

  • what word2vec is.

  • What the model looks like when it's complete.

  • I haven't looked at all about the training process, right?

  • The animals example is hard-coded.

  • I'm going to show you.

  • I'm going to do a port of one of Allison's examples

  • of words associated with colors associated

  • with numbers, right?

  • A word red is 255,0,0 that's a word to a vector.

  • And that's going to be from a dataset.

  • And then the third thing that I'm going to do

  • is look at what is traditionally thought

  • of as word2vec.

  • These higher dimensional large dictionaries

  • of words and their associated vectors.

  • Those word embeddings.

  • So that's going to be the journey here.

  • I don't know how many videos it's going to be.

  • Three, four, five, 471.

  • Something like that.

  • And then at some point I'll try to also,

  • do some projects with that.

  • So in the next video I'm going to do a port

  • of Allison's project which you can find all in Python,

  • all of the code in Python on that tutorial

  • that's linked in the description.

  • And I'm going to do a JavaScript port of it.

  • Okay, so I'll see you there.

  • Maybe, maybe not.

  • Go read that page, its excellent.

  • Okay, goodbye.

  • (upbeat music)

(bell rings)

Subtitles and vocabulary

Click the word to look it up Click the word to find further inforamtion about it