This project was for the 2018-2019 course 'Knowledge and the Web' at KU Leuven.
The term "fake news" is associated with journalism that deliberately spreads deceitful or inaccurate information. In the past years, the use of the term has increased drastically, interfering in major areas within a community. The importance is such that Italian schools have implemented "fake news detection" as part of the school curriculum. In the political sphere, it is not uncommon to see allegations of fake news and misinformation. Those calls that often target sources, reporters and organizations, instead of assessing the arguments themselves. This paper will discuss the possibility to detect fallacies, primarily on the ad hominem. Ad hominem literally means "to the person", and the term is used when an argument directs to the person instead of assessing the argument itself.
The datasets are sourced from UKPLab/argotario and UKPLab/naacl2018-before-name-calling-habernal-et-al.
During the project, several classifiers and network architectures were reviewed. The results are incorporated in the paper. The final, best performing network is a bidirectional GRU neural network, with the following features:
- Pre-trained word embeddings (word2vec).
- Document embeddings.
- Part-of-speech tags (NLTK).
These features are combined into a classification network, resulting in a labeling as ad hominem or no ad hominem.
The network had the following confusion matrix as output, when it was trained on X and tested on 8018 paragraphs.
This project uses Pipenv. So start with to create a virtual folder on your machine.
pipenv install
Afterwards, use:
pipenv shell
And if you want to exit the env, use:
exit
# install dependencies
npm install
# serve with hot reload at localhost:8080
npm run dev
# build for production with minification
npm run build
For detailed explanation on how things work, consult the docs for vue-loader.