Skip to content


The workflow follows the algorithm suggested in the paper and has following stages:

Filtering (

Get rid of cruft in the input data:

  • empty text fields
  • requires at least 20 characters of text
  • remove unprintable unicode characters
  • filter for english language using Googles cld2 tool

Generate aspects (

Extracts promising phrases (i.e., nouns described by adjectives) using spacy.

Aggregate aspects into topics (

Takes the output of the phrase extraction, maps them to wordnet (via and produces the list of clustered aspects important dependencies:

  • sklearn for clustering
  • nltk for the wordnet
  • networkx for the semantic tree
  • pretrained word-vectors (via
  • vaderSentiment for sentiment analysis

Analyze descriptors (

Cluster the associated adjectives using constant radius clustering.

To make the output more useful, we want to link the topics back to the original texts and vice versa.

The whole code produces one csv file.