kais@praktika1 ~/public_html/DHtehnoloogiad/estnltk $ cd A2
kais@praktika1 ~/public_html/DHtehnoloogiad/estnltk/A2 $ ls
A2_2018_II.txt A2_2018_I.txt
kais@praktika1 ~/public_html/DHtehnoloogiad/estnltk/A2 $ python3.5
Python 3.5.2 (default, Nov 12 2018, 13:43:14)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from estnltk import Text
>>> A2_1 = Text(open("A2_2018_I.txt").read())
>>> A2_1.get.word_texts.lemmas.postags.postag_descriptions.as_dataframe
word_texts lemmas postags postag_descriptions
0 Tere tere I hüüdsõna
1 Mari mari S nimisõna
2 . . Z lausemärk
3 Ma mina P asesõna
4 tahan tahtma V tegusõna
5 kutsuda kutsuma V tegusõna
6 sulle sina P asesõna
7 jalutame jalutama V tegusõna
8 Vanalinn vanalinn S nimisõna
9 mööda mööda D määrsõna
10 . . Z lausemärk
11 Me mina P asesõna
12 kohtume kohtuma V tegusõna
13 kaubamajas kaubamaja S nimisõna
14 kell kell S nimisõna
15 kuus kuus N põhiarvsõna
16 . . Z lausemärk
17 Me mina P asesõna
18 käime käima V tegusõna
19 vaatame vaatama V tegusõna
20 vana vana A omadussõna algvõrre
21 linn linn S nimisõna
22 . . Z lausemärk
23 See see P asesõna
24 vaga vaga A omadussõna algvõrre
25 ilus ilus A omadussõna algvõrre
26 linn linn S nimisõna
27 . . Z lausemärk
28 Seal seal D määrsõna
29 palju palju D määrsõna
... ... ... ... ...
1705 jalutad jalutama V tegusõna
1706 vana vana A omadussõna algvõrre
1707 linnas linn S nimisõna
1708 , , Z lausemärk
1709 käima käima V tegusõna
1710 muuseumise muuseumine S nimisõna
1711 , , Z lausemärk
1712 kinnose kinnos|kinnose S nimisõna
1713 minna minema V tegusõna
1714 , , Z lausemärk
1715 ja ja J sidesõna
1716 palju palju D määrsõna
1717 erinevad erinema V tegusõna
1718 asju asi S nimisõna
1719 . . Z lausemärk
1720 Kui kui D|J
1721 sa sina P asesõna
1722 soovid soovima V tegusõna
1723 minuga mina P asesõna
1724 tulla tulema V tegusõna
1725 siis siis D määrsõna
1726 kirjuta kirjutama V tegusõna
1727 mulle mina P asesõna
1728 kirju kiri S nimisõna
1729 tagasi tagasi K kaassõna
1730 . . Z lausemärk
1731 Sinnu Sinnu|Sinnud H pärisnimi
1732 sőbrana sőbrana S nimisõna
1733 Polina Polina H pärisnimi
1734 ! ! Z lausemärk
[1735 rows x 4 columns]
>>> A2_sonaliigid1 = A2_1.get.word_texts.lemmas.postags.postag_descriptions.as_dataframe
>>> from collections import Counter
>>> Counter(Text(A2_1).postags)
Counter({'V': 360, 'S': 325, 'Z': 315, 'P': 264, 'D': 124, 'A': 101, 'H': 98, 'J': 65, 'I': 26, 'K': 17, 'D|J': 15, 'N': 8, 'O': 8, 'U': 3, 'Y': 2, 'O|P': 2, 'G': 1, 'A|V': 1})
>>> import pandas as pd
>>> A2_sonaliigid1.groupby("postags").postags.count()
postags
A 101
A|V 1
D 124
D|J 15
G 1
H 98
I 26
J 65
K 17
N 8
O 8
O|P 2
P 264
S 325
U 3
V 360
Y 2
Z 315
Name: postags, dtype: int64
>>> A2_liigisagedused1 = A2_sonaliigid1.groupby("postags").postags.count().to_frame()
>>> A2_liigisagedused1
postags
postags
A 101
A|V 1
D 124
D|J 15
G 1
H 98
I 26
J 65
K 17
N 8
O 8
O|P 2
P 264
S 325
U 3
V 360
Y 2
Z 315
>>> A2_liigisagedused1["sonaliik"] = A2_liigisagedused1.index
>>> A2_liigisagedused1.head()
postags sonaliik
postags
A 101 A
A|V 1 A|V
D 124 D
D|J 15 D|J
G 1 G
>>> A2_liigisagedused1 = A2_liigisagedused1.rename(columns = {"postags":"sagedus"})
>>> A2_liigisagedused1.head()
sagedus sonaliik
postags
A 101 A
A|V 1 A|V
D 124 D
D|J 15 D|J
G 1 G
>>> A2_2 = Text(open("A2_2018_II.txt").read())
>>> A2_sonaliigid2 = A2_2.get.word_texts.lemmas.postags.postag_descriptions.as_dataframe
>>> A2_sonaliigid2.head()
word_texts lemmas postags postag_descriptions
0 See see P asesõna
1 on olema V tegusõna
2 sőiduauto sőiduauto S nimisõna
3 Toyota Toyota H pärisnimi
4 . . Z lausemärk
>>> A2_liigisagedused2 = A2_sonaliigid2.groupby("postags").postags.count().to_frame()
>>> A2_liigisagedused2
postags
postags
A 111
A|V 10
C 2
D 57
D|J 11
H 77
I 7
J 56
K 14
N 94
O 11
P 179
S 423
V 310
Y 30
Z 311
>>> A2_liigisagedused2["sonaliik"] = A2_liigisagedused2.index
>>> A2_liigisagedused2 = A2_liigisagedused2.rename(columns = {"postags":"sagedus"})
>>> A2_liigisagedused2.head()
sagedus sonaliik
postags
A 111 A
A|V 10 A|V
C 2 C
D 57 D
D|J 11 D|J
>>> A2_liigisagedused1 = A2_liigisagedused1.rename(columns = {"sagedus":"sagedus_A2_1"})
>>> A2_liigisagedused2 = A2_liigisagedused2.rename(columns = {"sagedus":"sagedus_A2_2"})
>>> v6rdlus = A2_liigisagedused1.merge(A2_liigisagedused2, how = "left", left_on = "sonaliik", right_on = "sonaliik").fillna(0)[["sonaliik", "sagedus_A2_1", "sagedus_A2_2"]]
>>> v6rdlus.head()
sonaliik sagedus_A2_1 sagedus_A2_2
0 A 101 111.0
1 A|V 1 10.0
2 D 124 57.0
3 D|J 15 11.0
4 G 1 0.0
>>> v6rdlus.sagedus_A2_1.sum()
1735
>>> v6rdlus.sagedus_A2_2.sum()
1701.0
>>> v6rdlus["osakaal_A2_1"] = v6rdlus.sagedus_A2_1 / v6rdlus.sagedus_A2_1.sum()
>>> v6rdlus["osakaal_A2_2"] = v6rdlus.sagedus_A2_2 / v6rdlus.sagedus_A2_2.sum()
>>> v6rdlus.head()
sonaliik sagedus_A2_1 sagedus_A2_2 osakaal_A2_1 osakaal_A2_2
0 A 101 111.0 0.058213 0.065256
1 A|V 1 10.0 0.000576 0.005879
2 D 124 57.0 0.071470 0.033510
3 D|J 15 11.0 0.008646 0.006467
4 G 1 0.0 0.000576 0.000000
>>> v6rdlus["osakaaluvahe"] = v6rdlus.osakaal_A2_1 - v6rdlus.osakaal_A2_2
>>> v6rdlus.sort_values("osakaaluvahe")
sonaliik sagedus_A2_1 sagedus_A2_2 osakaal_A2_1 osakaal_A2_2 \
13 S 325 423.0 0.187320 0.248677
9 N 8 94.0 0.004611 0.055262
16 Y 2 30.0 0.001153 0.017637
0 A 101 111.0 0.058213 0.065256
1 A|V 1 10.0 0.000576 0.005879
10 O 8 11.0 0.004611 0.006467
17 Z 315 311.0 0.181556 0.182834
4 G 1 0.0 0.000576 0.000000
11 O|P 2 0.0 0.001153 0.000000
8 K 17 14.0 0.009798 0.008230
14 U 3 0.0 0.001729 0.000000
3 D|J 15 11.0 0.008646 0.006467
7 J 65 56.0 0.037464 0.032922
6 I 26 7.0 0.014986 0.004115
5 H 98 77.0 0.056484 0.045267
15 V 360 310.0 0.207493 0.182246
2 D 124 57.0 0.071470 0.033510
12 P 264 179.0 0.152161 0.105232
osakaaluvahe
13 -0.061357
9 -0.050651
16 -0.016484
0 -0.007042
1 -0.005303
10 -0.001856
17 -0.001277
4 0.000576
11 0.001153
8 0.001568
14 0.001729
3 0.002179
7 0.004542
6 0.010870
5 0.011217
15 0.025247
2 0.037960
12 0.046929
>>> v6rdlus.sort_values("osakaaluvahe").head(3)
sonaliik sagedus_A2_1 sagedus_A2_2 osakaal_A2_1 osakaal_A2_2 \
13 S 325 423.0 0.187320 0.248677
9 N 8 94.0 0.004611 0.055262
16 Y 2 30.0 0.001153 0.017637
osakaaluvahe
13 -0.061357
9 -0.050651
16 -0.016484
>>> v6rdlus.sort_values("osakaaluvahe").tail(3)
sonaliik sagedus_A2_1 sagedus_A2_2 osakaal_A2_1 osakaal_A2_2 \
15 V 360 310.0 0.207493 0.182246
2 D 124 57.0 0.071470 0.033510
12 P 264 179.0 0.152161 0.105232
osakaaluvahe
15 0.025247
2 0.037960
12 0.046929
>>> v6rdlus["osakaalusuhe"] = v6rdlus.osakaal_A2_1 / v6rdlus.osakaal_A2_2
>>> v6rdlus.sort_values("osakaalusuhe")[["sonaliik", "osakaal_A2_1", "osakaal_A2_2", "osakaalusuhe"]]
sonaliik osakaal_A2_1 osakaal_A2_2 osakaalusuhe
16 Y 0.001153 0.017637 0.065360
9 N 0.004611 0.055262 0.083439
1 A|V 0.000576 0.005879 0.098040
10 O 0.004611 0.006467 0.713021
13 S 0.187320 0.248677 0.753265
0 A 0.058213 0.065256 0.892079
17 Z 0.181556 0.182834 0.993013
7 J 0.037464 0.032922 1.137968
15 V 0.207493 0.182246 1.138533
8 K 0.009798 0.008230 1.190490
5 H 0.056484 0.045267 1.247786
3 D|J 0.008646 0.006467 1.336914
12 P 0.152161 0.105232 1.445958
2 D 0.071470 0.033510 2.132808
6 I 0.014986 0.004115 3.641499
4 G 0.000576 0.000000 inf
11 O|P 0.001153 0.000000 inf
14 U 0.001729 0.000000 inf
>>> v6rdlus.to_csv("A2_sonaliigid_vordlus.txt", index=False)
>>> exit()
kais@praktika1 ~/public_html/DHtehnoloogiad/estnltk/A2 $ python3.5 sonaliigikolmikud.py
Z-P-V: 91
S-Z-P: 52
A-S-Z: 51
P-V-V: 50
V-S-Z: 33
P-V-S: 30
S-Z-D: 27
Z-D-P: 27
D-P-V: 25
P-V-P: 23
V-A-S: 22
S-Z-S: 21
H-Z-P: 20
D-A-S: 20
J-P-V: 19
V-H-Z: 17
S-Z-V: 16
V-D-A: 16
S-S-Z: 16
P-V-H: 16
kais@praktika1 ~/public_html/DHtehnoloogiad/estnltk/A2 $ python3.5 sonaliigikolmikud.py
Z-P-V: 64
S-Z-P: 56
Z-S-V: 44
S-Z-S: 41
Z-P-S: 39
P-S-V: 39
N-S-Z: 32
P-V-V: 28
V-P-S: 28
A-S-Z: 26
S-V-N: 26
P-S-Z: 25
S-V-A: 25
V-S-Z: 23
Z-S-S: 21
V-V-P: 20
S-S-V: 19
V-A-Z: 18
S-V-H: 17
V-N-S: 17
kais@praktika1 ~/public_html/DHtehnoloogiad/estnltk/A2 $ python3.5
>>> import pandas as pd
>>> A2_sonakolmikud1 = pd.read_csv("A2_1_sonaliigikolmikud.txt", sep = ":")
>>> A2_sonakolmikud1.head()
Sonaliigikolmik Sagedus_A2_1
0 Z-P-V 91
1 S-Z-P 52
2 A-S-Z 51
3 P-V-V 50
4 V-S-Z 33
>>> A2_sonakolmikud2 = pd.read_csv("A2_2_sonaliigikolmikud.txt", sep = ":")
>>> A2_sonakolmikud2.head()
Sonaliigikolmik Sagedus_A2_2
0 Z-P-V 64
1 S-Z-P 56
2 Z-S-V 44
3 S-Z-S 41
4 Z-P-S 39
>>> kolmikuv6rdlus = A2_sonakolmikud1.merge(A2_sonakolmikud2, how = "left", left_on = "Sonaliigikolmik", right_on = "Sonaliigikolmik").fillna(0)
>>> kolmikuv6rdlus
Sonaliigikolmik Sagedus_A2_1 Sagedus_A2_2
0 Z-P-V 91 64.0
1 S-Z-P 52 56.0
2 A-S-Z 51 26.0
3 P-V-V 50 28.0
4 V-S-Z 33 23.0
5 P-V-S 30 0.0
6 S-Z-D 27 0.0
7 Z-D-P 27 0.0
8 D-P-V 25 0.0
9 P-V-P 23 0.0
10 V-A-S 22 0.0
11 S-Z-S 21 41.0
12 H-Z-P 20 0.0
13 D-A-S 20 0.0
14 J-P-V 19 0.0
15 V-H-Z 17 0.0
16 S-Z-V 16 0.0
17 V-D-A 16 0.0
18 S-S-Z 16 0.0
19 P-V-H 16 0.0
>>> kolmikuv6rdlus = A2_sonakolmikud1.merge(A2_sonakolmikud2, left_on = "Sonaliigikolmik", right_on = "Sonaliigikolmik").fillna(0)
>>> kolmikuv6rdlus
Sonaliigikolmik Sagedus_A2_1 Sagedus_A2_2
0 Z-P-V 91 64
1 S-Z-P 52 56
2 A-S-Z 51 26
3 P-V-V 50 28
4 V-S-Z 33 23
5 S-Z-S 21 41
>>> A2_sonakolmikud1.Sagedus_A2_1.sum()
592
>>> A2_sonakolmikud2.Sagedus_A2_2.sum()
608
>>> kolmikuv6rdlus["Osakaal_A2_1"] = kolmikuv6rdlus.Sagedus_A2_1 / A2_sonakolmikud1.Sagedus_A2_1.sum()
>>> kolmikuv6rdlus["Osakaal_A2_2"] = kolmikuv6rdlus.Sagedus_A2_2 / A2_sonakolmikud2.Sagedus_A2_2.sum()
>>> kolmikuv6rdlus
Sonaliigikolmik Sagedus_A2_1 Sagedus_A2_2 Osakaal_A2_1 Osakaal_A2_2
0 Z-P-V 91 64 0.153716 0.105263
1 S-Z-P 52 56 0.087838 0.092105
2 A-S-Z 51 26 0.086149 0.042763
3 P-V-V 50 28 0.084459 0.046053
4 V-S-Z 33 23 0.055743 0.037829
5 S-Z-S 21 41 0.035473 0.067434
>>> kolmikuv6rdlus.sort_values("Osakaaluvahe")
Sonaliigikolmik Sagedus_A2_1 Sagedus_A2_2 Osakaal_A2_1 Osakaal_A2_2 \
5 S-Z-S 21 41 0.035473 0.067434
1 S-Z-P 52 56 0.087838 0.092105
4 V-S-Z 33 23 0.055743 0.037829
3 P-V-V 50 28 0.084459 0.046053
2 A-S-Z 51 26 0.086149 0.042763
0 Z-P-V 91 64 0.153716 0.105263
Osakaaluvahe
5 -0.031961
1 -0.004267
4 0.017914
3 0.038407
2 0.043385
0 0.048453
>>> kolmikuv6rdlus["Osakaalusuhe"] = kolmikuv6rdlus.Osakaal_A2_1 / kolmikuv6rdlus.Osakaal_A2_2
>>> kolmikuv6rdlus.sort_values("Osakaalusuhe")[["Sonaliigikolmik", "Osakaal_A2_1", "Osakaal_A2_2", "Osakaalusuhe"]]
Sonaliigikolmik Osakaal_A2_1 Osakaal_A2_2 Osakaalusuhe
5 S-Z-S 0.035473 0.067434 0.526038
1 S-Z-P 0.087838 0.092105 0.953668
0 Z-P-V 0.153716 0.105263 1.460304
4 V-S-Z 0.055743 0.037829 1.473561
3 P-V-V 0.084459 0.046053 1.833977
2 A-S-Z 0.086149 0.042763 2.014553
>>> kolmikuv6rdlus.to_csv("A2_sonaliigikolmikud_vordlus.txt", index=False)