I'm trying read in a whole article, separate the article by sentences, and then words. Then I pass this into the Word2vec Model and the output comes out.

However, my goal is to find the positive or negative sentiment of the article. The input is unsupervised in that it does not have a label.

Do I need to perform some sentiment scoring on the article before inputting into the word2Vec. I don't understand how word2vec actually helps with sentimental analysis. All it tells me is that words are close together/ have same context, but not actually whether the words are positive or negative.

I've read articles claiming to "use word2vec for sentimental analysis", but none actually do, so I'm not sure if I am misreading something here.

I'm wondering how I should go about this. Thanks.


1 Answer 1


In general, you need labeled data to perform Sentiment Analysis. In case you don't have, you need to improvise. I found one article where the author claims that his implementation of unsupervised learning worked adequately.

The post: Unsupervised Sentiment Analysis

I quote some parts of it:

The main idea behind this approach is that negative and positive words usually are surrounded by similar words. This means that if we would have movie reviews dataset, word ‘boring’ would be surrounded by the same words as word ‘tedious’, and usually such words would have somewhere close to the words such as ‘didn’t’ (like), which would also make word didn’t be similar to them. On the other hand, it would be unlikely to have happened, that word ‘tedious’ had more similar surrounding to word ‘exciting’, than to word ‘boring’. With such assumption, words could form clusters (based on similarity of their surrounding) of negative words that have similar surroundings, positive words that have similar surroundings, and some neutral words that end up between them (such as ‘movie’).

So what he actually did was to use word2vec to transform his texts to vectors and then a simple K-Means with K=2. He expected that positive words will gather in one cluster and negative words in the other cluster.

Then using gensim’s most_similar method he compared a word with each of the clusters.

It's nice to experiment like this, but nowadays, it is super easy to find a labeled dataset to use in almost any language.

  • $\begingroup$ Thanks for this. I did perform a Keane on the data but the clusters weren’t always correct. Not sure if that’s due to small training size of word2vec. When you say he uses a negative word and does most similar, is there some threshold say >0.5 are negative words, or he just transfer the cluster, because my cluster has scattered points of 1 cluster inside another. $\endgroup$
    – user218030
    Jul 3, 2021 at 23:21
  • $\begingroup$ As I said, I would advice to use a pre-labeled training set. But if you want an unsupervised model, you should read the linked article. It mentions there that he creates a sentiment_coef which is based on the distance the word has from the cluster. Then based on that, you the threshold it works mostly in your case. $\endgroup$
    – Tasos
    Jul 4, 2021 at 11:32
  • $\begingroup$ Thanks, I don’t understand what he means by the “inverse of the distance that is closest to the cluster”. For example the similar method returns a value below 1, so not sure how he got 1.3 for a sentiment score. Unless this was the Euclidean distance from the point to the cluster centroid $\endgroup$
    – user218030
    Jul 4, 2021 at 23:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.