I currently have a bunch of extracted news articles to perform news classification. However, the articles are unlabeled. There are about 160k articles therefore manually labeling them is impossible. I'm thinking of clustering the similar news articles together for easier labeling. Is this approach possible?

UPDATE: Now I only want to separate business related news and non-business related news apart.

  • 2
    $\begingroup$ Yes, it's possible. Google News does this. Get started. $\endgroup$ Jul 23, 2016 at 20:58
  • $\begingroup$ Manually labelling them is not impossible. It will either take a long time if done by one person, or cost money if done by many. Have you costed this process if performed by Amazon Mechanical Turk workers? $\endgroup$
    – Spacedman
    Jul 25, 2016 at 16:22

2 Answers 2


Simply clustering and then labeling all the texts in cluster will yield very noisy results (and you might learn your clustering similarity function rather that the "real" one). while there are some techniques that handle noisy labels (e.g- this NIPS paper: http://papers.nips.cc/paper/5073-learning-with-noisy-labels.pdf), there are several other options to consider:

  1. labeling a small amount of data (be sure to have label data from each category, assuming you know the categories), training a classifier, classifying new examples, adding the most certain one to the training set, than retraining the model and so on. For example, see this article: http://link.springer.com/article/10.1023/A:1007692713085
  2. Active Learning can be useful in this scenario. E.g: http://www.kamalnigam.com/papers/emactive-icml98.pdf
  3. Semi-supervised learning techniques. E.g: http://mlg.eng.cam.ac.uk/zoubin/papers/zglactive.pdf

It is a common practice to combine more than one method. Also, LDA might be useful here.

  • $\begingroup$ Currently, after some discussion with my colleagues we only want to cluster the news article into business and non-business. Do simply clustering still works? $\endgroup$
    – edwin
    Jul 26, 2016 at 4:15

A binary classification between business and non-business is very simple:

  1. Extract plain content from the news, for example using dragnet.

  2. Tokenize each text and represent them with vectors with the bag of words technique. A simple way to perform this is using TfidfVectorizer from sklearn.

  3. Clusterize them using some classification technique like k-NN(k nearest neighbors). You will find the k-NN sklearn implementation very helpfull.

To perform a multilabel classification like companies related news, you have to use TfidfVectorizer which weights more the rare words that appear only in few news, like Apple or Coca-Cola.


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.