Another (albeit long) internship report 11/05/2026
This will likely be a long log. I have had 2-3 meetings with Pim between now and the last log on this blog, and I will have another meeting with him tomorrow. It's a bit of a tight schedule, but we have to shift the meeting a little earlier due to the end-of-week holidays.
During the past couple of weeks, I have been exploring other methods of sentiment analysis -- namely, drawing some ideas from multivariable calculus and differential geometry -- and, last week, trying to gear myself back to the literature and research questions a little more.
It's really easy to get caught up in the methodology (guilty as charged!!) especially when I get to experiment with so many things, like trying to incorporate a little multivariable or differential geometry into it! That said, I do see myself being more of a research engineer than a researcher. I don't think I can commit to a PhD, or lead my own project for years in a way that a PhD would require, but I still love being involved in research! I also fancy the idea of being a part of a research project, and being able to be more methodology focused / experiment with it to yield results for different projects. This definitely makes me feel relieved, since I always thought research engineer positions would mean being complicit in evil finance or military companies!
Perhaps I should check out opportunities in the Baltics, since I have always wanted to move there.
I also received suggestions / took some meeting notes, and I will make those remarks clear in this log.
Based upon previously discussed research angles, I tried my best to investigate these three themes:
Crisis, Democracy, Fascism
Namely, looking at how often they were mentioned, and who (or which parties) mentioned these terms. Of course, there's always the question of context / if things were spoken of in alternative ways / whether everything gets counted, but I have discussed that with my supervisor. It does, after all, depend on whether we care for just the times things were mentioned, or for the context around it too. I also tried to look at how time was referred to or spoken of. However, I am still working with a definition-driven approach, than a data-driven approach, something I hope to work on based on the literature Pim sent me in our recent meeting.
past_terms = {"past", "history", "historical", "tradition", "heritage", "again", "back", "restore", "return", "former", "old"}
I also tried to define proxies of demagogy based on Juan Linz's four signs of demagogy: rejecting democratic rules, denying the legitimacy of political opponents, tolerating or encouraging violence, and being ready to curtail the civil liberties of opponents. (Quoting this from the research angles document).
demagogy_proxies = {"rejecting_democratic_rules":
{"rigged", "fraud", "illegitimate", "overturn", "betray", "traitor", "treason", "stolen", "corrupt", "undemocratic"}, "denying_opponent_legitimacy": {"enemy", "traitor", "treason", "betray", "betrayal", "illegitimate", "extremist", "saboteur", "subversive"},
(Also sorry, the formatting is really weird especially when I try to use the "chat" font)
But let's take things a few steps back. I started off by doing more "basic" work: normalized frequency counts of words relating to crisis, democracy, and fascism themselves. As these percentages are quite small, I scaled it to counts per million (though proportionally, the percentages still hold).
I can imagine that around 2020, for instance, "crisis" would refer to Covid. As for some pure speculation, the Gulf Wars around the 1990s? Involvement in the Middle East in the early 2000s? Strangely, the financial crisis of 2008 isn't reflected as prominently here. Plotting all the parties, I got the plot below. While I don't doubt the accuracy of Python's counts, I do have some reservations about what
While I don't doubt the accuracy of Python's counts, I have some reservations about what this data is showing. I guess we can all agree that UKIP is a big deal in this whole "undermining democracy" topic. However, with UKIP founded in 1993, in the latter half of the dataset, they would still have "less" overall data compared to, say, the Labor or Conservative parties. While this doesn't affect the normalized counts, it does affect the overall representation. As you can see in the following plot below, I tried to map "crisis" counts over time for the top 5 parties that have the highest number of those counts.
UKIP did not make the "most mentioned" cut, though we know UKIP is a big deal, and we know that they are extremely outspoken on issues such as Brexit. It is likely because they are a newer party, and that like the SNP, their more extremist views mean that they are more outspoken on fewer or more select matters.
Suggestion: show an isolated UKIP plot or manually add it. Britta also mentioned the fact that words are often not used in its direct form, which is very true!
I did the same for democracy.
I also displayed some df headers for words relating to democracy or democratic, so I can read around it and see the context a little more. However, this is difficult, as there are so many entries and the words are now lemmatized / cleaned up, so it doesn't make as much sense anymore! I might have to simply use this to locate speeches and manually look them up.
Going back to bigrams and collocations, I also looked at what words showed up around our terms of interest. The results do not show anything particularly surprising, especially with looking through the entire corpus for it.
Suggestion: look at this per party?
Building upon prior shenanigans...
I'm quite happy that I was able to build upon my more mathematical / multivariable / diff geo side quest and implement it in sentiment analysis! So, two weeks ago, I worked with the sample data set (70s / mid-80s) to reduce the computational load in testing out these things. In the previous week, I was able to look at rhetorical trajectories: I was able to track the changes over time, using the VADER module to give a bigger picture of positivity-negativity metrics held against NRC emotional scores like fear and trust.
The paths of the points for each party follow time changes. Though, when I ran this for the full dataset... good lord it was messy!! Next up, I produced multivariable plots where I could look at these metrics. I also then used some Gaussian filters to smooth it out later on.
Similarly, I looked at fear vs. trust vs. time for speeches concerning Ireland, for the Conservative part, for instance. I think this has an interesting data point.
Suggestion: extract the turning point and let the code point to what it is so I can read it up in the original speeches.
Ran this for the entire set as well!
That aside, I should email Pariza! Close readings were also mentioned in our last meeting, as well as the theme of "people" and reading around it / how people were represented. I also received many articles from Pim, which I am still reading to get a better idea of a data-driven approach.