Apparently, this is the Election time for voting the nominated candidates for the Council who will spearhead the program for the next session. Since I am new to the program reading about everyone's election campaign and hearing about what they will do for the program was not giving me any clear motivation to vote for anyone specific. Though this wasn't anything super important, I still thought since I have a bit of time in my hand why not do something interesting about it.
This is my own impartial way of voting for those candidates.
How the voting works:
Each of the candidates was asked a specific number of questions and they all answered in a public forum for all of us to read and evaluate those answers. We are supposed to vote for the person whose answers resonates well with what we want from the program. You can read more about the process here.
The Q&A was put on public discourse for us to evaluate.
What I did:
Since I realized quite a few people I know are also running for candidacy and have answered questions there. I first collected all their Q&A text and then anonymized them (keeping a map for myself so that I know who to vote for at the end).
Then I analyzed all their answers to look for personality traits. The need for anonymization was so that I cannot let my personal knowledge of the candidates bias me towards the output I was getting at this stage.
The "voodoo" behind it
What I tried to achieve was a Frankenstein effect between what psychologists say and what modern NLP can do. An accepted theory of psychology is that language reflects the personality, thinking style and emotional states. Usage of certain words can provide clues to these (Fast & Funder, Yarkoni).
Also if we are able to find these markers from the text that will lead is to perceived facts like people who score high on excitement seeking are more likely to respond to queries than those who scored more as cautious (Mahmud et al). Which essentially for me translates if I have someone with high excitement marker, he is more likely to respond to various queries by others.
Armed with this I started scoring our Reps.
For this blogpost I will anonymize the names (so that nobody else gets influenced by this).
Rep 1: mal
Rep 2: vja
Rep 3: mli
Rep 4: mle
Rep 5: yan
Rep 6: pan
Casting my Vote:
Once I had a base matrix ready for everyone, I started looking into them to figure out what I want to see in my ideal candidate.
The interesting part if you look at their personality traits is that form the given text what I could find had a lot of similarity between them. So that is probably a good thing.
The first thing I started to look for is co-operation since the council will work a lot with reps. And almost everyone scores high on it. So I decided to take everyone who is more than 80% on it. I also someone who will take a risk and be adventurous, along with challenging authority. Both of the traits are prevalent among everyone. Since this is essentially a campaign pitch and how the system works, I knew Cautiousness will be high among everybody, so I did not look for it. However, I did look for sympathy, trust and openness to change.
And after considering everyone (and my own subconscious mind nitpicking on other traits) I decide on Rep 1: mal
And after considering everyone (and my own subconscious mind nitpicking on other traits) I decide on Rep 1: mal
Rep 1 has 97% sympathy and trust, 82% co-operation, 98% adventurous,100% authority-challenge (oops) and 72% chance to embrace openness. The other traits are also comparable. -> 6 in voting
Next will be Rep5: yan with again high degree of co-operation, sympathy and trust. Followed by Rep4: mle, Rep3:mli,Rep2:vja and Rep6:pan
Once that is out of the way now we can delve into the more technical parts.
Shut up and just show me the code!
Before I point you to github.
What we wanted to do here is very similar to what these guys did on twitter . Essentially here we first tokenize the input text to develop a representation in an n-dimensional space. Then we use GLoVe to get the vector representation for the words in the input text. Then it uses bigfive and needs to determine value characteristics.
I am still cleaning up the code, but since it's almost 5:05 am here, I'll probably clean the code little later and remove all hard referencing. And then post the code and tweet it out maybe.
Disclaimer: This is in no way probably a good or even sane way to vote. Just something I came up with since I was clueless. Also probably it's horribly wrong to profile (or even try) somebody from their writing. So please do not take this as an ideal or even inspiring way.
With that out of the way. Do let me know what you think :)
Update: After almost 16 hours since this was first published. We now have our council members/winners. And I am super freaked out to say that somehow Rep1 won the election and Rep5 got the second highest vote (exactly how I cast my votes). Even though it's by pure coincidence it's curious to see others voters also went with a similar selection. I was careful enough to not divulge the names of this blogpost. Now I can though. So the names were constructed with the first letter of the first name and last two letter of last name concatinated.
And you can see the winners here (if you have access to reps portal)
Comments
Post a Comment