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)