Four words

Determine which of four words is the odd one out.

Data is read from a comma-separated file with four columns where the fourth column contains the odd-one-out. The task is to identify that one (without using the fact that it is in this specific column)


In [1]:
from everything import *
from dasem.semantic import Semantic
from dasem.wikipedia import Word2Vec
from dasem.data import four_words as four_words_data

In [2]:
# Load semantic method
semantic = Semantic()

In [3]:
# Read dataset
four_words = four_words_data()

In [4]:
four_words.head()


Out[4]:
word1 word2 word3 word4
0 æble pære kirsebær stol
1 stol bord reol græs
2 græs træ blomst bil
3 bil cykel tog vind
4 vind regn solskin mandag

In [5]:
# Identify outlier
outliers = []
for idx, words in four_words.iterrows():
    sorted_words = semantic.sort_by_outlierness(words.values[:4])
    outliers.append(sorted_words[0])

four_words['outlier'] = outliers

In [6]:
# Accuracy
mean(four_words.word4 == outliers)


Out[6]:
0.78000000000000003

In [7]:
four_words


Out[7]:
word1 word2 word3 word4 outlier
0 æble pære kirsebær stol stol
1 stol bord reol græs græs
2 græs træ blomst bil bil
3 bil cykel tog vind vind
4 vind regn solskin mandag mandag
5 mandag tirsdag søndag tømrer tømrer
6 tømrer vvs-mand snedker barn barn
7 barn far mormor lampe lampe
8 lampe stearinlys lommelygte jern jern
9 jern guld magnesium sjov sjov
10 sjov dårlig vanvittig papir vanvittig
11 papir ringbind blyant vagt vagt
12 vagt politimand fængselsbetjent by vagt
13 by landsby købstad småkage småkage
14 småkage citronmåne kringle dør kringle
15 dør væg vindue klaver klaver
16 klaver trumpet blokfløjte fandens fandens
17 fandens fuck sgu vand fandens
18 vand jord ild hukommelse hukommelse
19 hukommelse intelligens emotion Niels Bohr Niels Bohr
20 Niels Bohr H.C. Ørsted Ole Rømer Lars Løkke Rasmussen H.C. Ørsted
21 Lars Løkke Rasmussen Poul Nyrup Rasmussen Anders Fogh Rasmussen Peter Schmeichel Peter Schmeichel
22 Peter Schmeichel Kasper Schmeichel Brian Laudrup Caroline Wozniacki Caroline Wozniacki
23 Caroline Wozniacki Steffi Graf Serena Williams Monaco Steffi Graf
24 Monaco Paris Milano Pia Pia
25 Pia Lone Marianne Ole Marianne
26 bold fjerbold puck mave mave
27 mave bryst ryg hat hat
28 hat kasket hue ishockey ishockey
29 ishockey skiløb skihop fodbold fodbold
30 løbe kravle sidde sidde
31 rød blå violet himmel himmel
32 Finland Sverige Norge Kina Kina
33 Kina Japan Sydkorea Irland Irland
34 humor komedie comedy beskidt beskidt
35 vaskemaskine strygejern tørretumbler beskidt strygejern
36 restaurant café bar øl øl
37 øl vin spiritus køkken køkken
38 køkken baderum stue øl øl
39 wing back forward vinge vinge
40 vinge landingsstel propel kartoffel kartoffel
41 kartoffel frikadelle salat pejs pejs
42 Viborg Randers Hobro Kattegat Kattegat
43 Kattegat Øresund Alssund Sjælland Alssund
44 eg lærketræ æbletræ slange lærketræ
45 hugorm pyton snog hund pyton
46 ko so hest krappe krappe
47 ugle krage måge hund hund
48 hund ræv ulv krappe krappe
49 spilletid halvleg dommer ræv ræv

Word2Vec


In [8]:
w2v = Word2Vec()

In [9]:
# Identify outlier
outliers = []
for idx, words in four_words.iterrows():
    try:
        outlier = w2v.doesnt_match([word.lower() for word in words[:4]])
    except:
        outlier = ''
    outliers.append(outlier)

four_words['Word2vec outlier'] = outliers

In [10]:
mean(four_words.word4 == four_words['Word2vec outlier'])


Out[10]:
0.64000000000000001

In [11]:
four_words


Out[11]:
word1 word2 word3 word4 outlier Word2vec outlier
0 æble pære kirsebær stol stol stol
1 stol bord reol græs græs reol
2 græs træ blomst bil bil bil
3 bil cykel tog vind vind tog
4 vind regn solskin mandag mandag mandag
5 mandag tirsdag søndag tømrer tømrer tømrer
6 tømrer vvs-mand snedker barn barn barn
7 barn far mormor lampe lampe lampe
8 lampe stearinlys lommelygte jern jern jern
9 jern guld magnesium sjov sjov sjov
10 sjov dårlig vanvittig papir vanvittig papir
11 papir ringbind blyant vagt vagt vagt
12 vagt politimand fængselsbetjent by vagt by
13 by landsby købstad småkage småkage småkage
14 småkage citronmåne kringle dør kringle dør
15 dør væg vindue klaver klaver klaver
16 klaver trumpet blokfløjte fandens fandens fandens
17 fandens fuck sgu vand fandens vand
18 vand jord ild hukommelse hukommelse hukommelse
19 hukommelse intelligens emotion Niels Bohr Niels Bohr emotion
20 Niels Bohr H.C. Ørsted Ole Rømer Lars Løkke Rasmussen H.C. Ørsted
21 Lars Løkke Rasmussen Poul Nyrup Rasmussen Anders Fogh Rasmussen Peter Schmeichel Peter Schmeichel
22 Peter Schmeichel Kasper Schmeichel Brian Laudrup Caroline Wozniacki Caroline Wozniacki
23 Caroline Wozniacki Steffi Graf Serena Williams Monaco Steffi Graf monaco
24 Monaco Paris Milano Pia Pia pia
25 Pia Lone Marianne Ole Marianne ole
26 bold fjerbold puck mave mave fjerbold
27 mave bryst ryg hat hat hat
28 hat kasket hue ishockey ishockey ishockey
29 ishockey skiløb skihop fodbold fodbold fodbold
30 løbe kravle sidde sidde sidde
31 rød blå violet himmel himmel himmel
32 Finland Sverige Norge Kina Kina kina
33 Kina Japan Sydkorea Irland Irland irland
34 humor komedie comedy beskidt beskidt beskidt
35 vaskemaskine strygejern tørretumbler beskidt strygejern beskidt
36 restaurant café bar øl øl bar
37 øl vin spiritus køkken køkken køkken
38 køkken baderum stue øl øl baderum
39 wing back forward vinge vinge vinge
40 vinge landingsstel propel kartoffel kartoffel kartoffel
41 kartoffel frikadelle salat pejs pejs pejs
42 Viborg Randers Hobro Kattegat Kattegat kattegat
43 Kattegat Øresund Alssund Sjælland Alssund sjælland
44 eg lærketræ æbletræ slange lærketræ æbletræ
45 hugorm pyton snog hund pyton hund
46 ko so hest krappe krappe so
47 ugle krage måge hund hund hund
48 hund ræv ulv krappe krappe krappe
49 spilletid halvleg dommer ræv ræv ræv

In [ ]: