En ĉi tiu artikolo mi montras kiel simple akiri la plej uzitajn vortojn
de teksto. Ĉi-okaze mi uzos kiel montron la tekston de la oka libro de
la novelo Τῶν περὶ Χαιρέαν καὶ Καλλιρρόην,
eltirita el
https://www.perseus.tufts.edu/hopper/text?doc=Perseus%3Atext%3A2008.01.0668%3Abook%3D8.
Mi forigis la notojn, kiun ĝi havis inter kvadrataj krampoj, per
sed
:
sed -i 's/\[[^]]*\]//g' oka_libro.txt
La programo, kiu montras al ni ĉiujn vortojn estas jen, mi nomis ĝin
listo-de-vortoj.py
(mi klarigas sekve kiel ĝi funkcias):
archivo_texto = open('oka_libro.txt', 'r')
texto = archivo_texto.read()
archivo_texto.close()
palabras = texto.split()
for palabra in palabras:
print(palabra.strip('‘’:;,.').lower())
En la teksta dosiero, kiun mi nomis oka_libro.txt
(elŝuti), mi
supozas, ke vorto estas apartigita per blanka spaceto, do mi uzas la
split
-funkcion por akiri la liston de vortoj. Tamen kelkfoje estas
komoj, punktoj, citiloj, dupunktoj, punktokomoj antaŭ aŭ post la vortoj,
kaj kelkfoje ili komenciĝas per majuskloj. Por tiuj okazoj sufiĉas uzi
la strip()
-funkcion per la signoj, kiujn ni volas forĵeti inter
citiloj, kaj lower()
por minuskligi la vorton.
Nun mi volas, ke la vortoj, kiuj pleje aperas en la teksto, estu
montritaj en la ekrano, kun la nombro de fojoj, kiam ili aperas dekstre;
sed mi ne programos ĝin; mi uzos ilojn, kiuj ebligas fari tion en
GNU/Linukso: uniq
kaj sort
.
La kodo, kiun mi devas plenumi, estas jen (la antaŭa Python-programo
estas listo-de-vortoj.py
):
python3 listo-de-vortoj.py | sort | uniq -c | sort -n -r
La listo estas tre granda, do utilas vidi ĝin per less
. Se mi volas
eltiri nur la liston de la 20 plej uzitaj vortoj, mi aldonas tubon:
| head -n 20
:
python3 listo-de-vortoj.py | sort | uniq -c | sort -n -r | head -n 20
Ĉi tio liveras la jenan rezulton:
274 καὶ
193 δὲ
169 τὸν
105 τῷ
86 ἡ
84 ἐν
60 γὰρ
56 τῆς
52 εἰς
41 μὲν
40 τοῖς
35 χαιρέας
31 οὐ
30 ὡς
27 τοῦ
27 ὅτι
26 ἀπὸ
26 οὖν
24 πρὸς
22 αὐτὸν
Kompreneble, la plejparto de la vortoj, kiuj pleje ripetiĝas, estas konjunkcioj kaj prepozicioj ĉi-okaze, kaj en la malnova greka multaj vortoj estas deklinaciitaj. Se ni volas solvi tiujn problemojn, ni devus perfektigi la Python-programon.
Sed por via specifa problemo vi mem devos enprofundiĝi. Ĉi tie mi volas simple montri, ke nur per listo de vortoj vi povas kalkuli la oftecon, kiam ili aperas, kaj ordigi ilin per iloj de GNU Coreutils, kiuj jam estas instalitaj en GNU/Linukso. Mi uzis nenion krom programoj, kiujn mi jam havis instalitaj en mia operaciumo: ne necesas reinventi la radon nek uzi eksterajn kodotekojn.
Komentoj