Le 31 de decembre 2015 e
“Como facite” es mi tentativa de traducer le anglese The making of. Que esseva facite? Un dictionario basic interlingua-nederlandese. Con le mesme 2500 parolas que es explicate in le dictionario basic unilingue.
Le idea io habeva durante le conferentia de interlingua in Benidorm, in septembre 2015: habente ja un grande dictionario in le forma de un file de texto, e le lista de 2500 parolas equalmente in iste formato, il deberea ser possibile lassar le computer facer le labora, con un resultato complete quasi preste a usar.
Le lista continerea le argumentos de cerca pro grep
,
pro seliger le lineas pro un parve dictionario, ex le multe
lineas del grande dictionario.
Alora io ja comprendeva que isto solmente es le theoria, que alcun tractamento manual serea tamen necesse.
Me mancava tunc le tempore, e il habeva ancora problemas in le derivation del material pro le grande dictionario, que io debeva solver primo.
Le 27 de novembre 2015 io essayava realisar mi idea. In circa un hora e medie io habeva obtenite un resultato que era, ben que imperfecte, tamen usabile in principio. Lo que io faceva esseva le sequente:
Obtener le lista del parolas, sin le explicationes:
fetch
https://www.interlingua.com/archivos/Interlingua-dictionario-basic-2500-parolas.txt
Extraher del lista solmente le entratas, in
altere parolas, remover le extra information como le categorias
(vb., sb., adj., adv., etc.) del parolas.
sed -E 's/([a-zA-Z]+)( .+)/\1/'
Interlingua*.txt | tee primeparola.txt
Le commando tee
servi pro rapidemente vider le resultatos
al schermo ma tamen guardar los in un file. In vice de sed
io
poterea anque haber usate awk '{print $1}'
ben que le resultato non es identic. Le resultato de sed
es iste lista basic
ancora plus basic.
Alcun modification manual monstrava se necesse. In vice de explicar le
detalios que io ja oblidava, io monstra qui le
resultato, le file
srch.txt
.
Istos es le
differentias, ergo le manipulationes que io apponeva.
Le proxime passo de labor es adder al comencio de cata parola de
cerca le symbolo ^ (vide anque iste explication), assi:
sed -E 's/^(.+)/^\1/' srch.txt > cerc.txt
No, illo non es correcte, proque naturalmente un argumento de cerca
‘^a’ anque trova lineas que comencia con ‘ab’,
‘abandonar’ etc. etc. Nos besonia un spatio post le parola
clave, assi:
sed -E 's/^(.+)/^\1 /' srch.txt >
cerc.txt
.
(Le spatio al fin de cata linea on vide solmente quando on selectiona
texto con le mus.)
In iste puncto, ancora al 27 de novembre 2015, io habeva attingite
al momento solemne de lassar facer le computator su travalio penose:
time grep -f cerc.txt $PATH_TO_DICTFILE/ianl-8859-1.htm > selection.txt
Le programma time
es un typo de chronometro, que
reporta:
29.430u 0.329s 0:52.89 56.2% 197+314k 0+3io 1pf+0w
Isto vole dicer que le CPU (central processor unit,
entitate central pro processar datos) de mi servitor web que io usa
pro isto, ha empleate 0,329 secundas pro activitates del systema (isto
es: leger datos del disco e scriber los), e 29,430 secundas pro
activitates pro le usator, isto es, le comparationes in le programma
grep
.
56,2% indica que solmente iste percentage es usate, de un maximo de 60% del potentia de un nucleo, que es virtualmente disponibile pro me, del probabilemente quatro nucleos de processor que es physicamente presente.
Quasi 30 secundas, medie minuta! Contrari a lo que forsan pensa alcuno
qui ha mirate MS Windows facer su lanceamento initial, 30 secundas
pro un processor moderne es un duration colossal. Iste longe tempore
se explica ex le inefficientia del methodo que io ha applicate pro le
selection del lineas pro le dictionario basic: pro cata del 150.681
lineas del grande dictionario ia>nl
de Piet Cleij,
grep
debe verificar si un del 2500 parolas basic es in
le initio. Proque generalmente le comparationes non ha un resultato
positive (le grande dictionario ha multe plus parolas que le lista
basic, ergo le majoritate non es seligite), il es necesse quasi
150.681 * 2500 comparitiones de parolas, plus que 375 milliones!
Naturalmente un algorithmo plus efficiente es possibile, comparante claves de duo files alphabeticamente ordinate, ma illo non vale le pena, proque le execution del operation es solmente incidental.
Le file resultante contine 394.514 bytes e 7641 lineas. Sin le
exemplos de uso:
echo '--' > dashes;
grep -v -f dashes selection.txt > sinexempl.txt
remane 246.143 bytes e 5080 lineas. Solo considerante le parolas
clave e ordinante los unicamente assi:
awk '{print $1}' sinexempl.txt | sort -u | wc
le numeration resulta in 2468 lineas. Ergo circa 2500: mi methodo pare haber
essite correcte.
Le 27 de novembre io non habeva plus tempore. Io continuava le
13 decembre 2015, con un controlo plus accurate:
awk '{print $1}' selection.txt | sort -f -u > presente.txt
diff srch.txt presente.txt
In theoria le duo files deberea ser identic. Ma il non esseva, multe
parolas basic mancava. Le causa es, que in le grande dictionario,
multe parolas clave es sequite per un comma o per ‘(I)’,
‘(II)’ etc. Dunque in de file pro le selection il non
basta haber un spatio al fin del lineas, anque le comma e parenthese
debe esser permittite, assi:
sed -E 's/^(.+)/^\1[ ,(]/' srch.txt >
cerca.txt
Le dur travalio de novo:
time grep -f cerca.txt $PATH_TO_DICTFILE/ianl-8859-1.htm > selection.txt
Le resultatos ora es:
29.956u 0.129s 0:53.53 56.1% 197+314k 0+13io 0pf+0w
con 37.100 lineas e 1.760.632 bytes.
Ergo multo plus lineas, que es explicabile per le inclusion del
exemplos que previemente non esseva seligite, proque le comma mancava
in le patronos de cerca. De novo le controlo (ora non con awk
,
ma per sed
, pro eliminar le ‘[ ,(]’
),
assi:
sed -E 's/^([a-zA-Z-]+)([ ,(])(.+)/\1/' selection.txt |
sort -fu >
presente.txt
diff srch.txt presente.txt
Ancora le resultato non es bon, il manca alcun parolas: al alicun contactar cuje del Deo developpar dextre etc hallo haltar illas illos immediatemente incostose iste las los me molliate nonne nos nostre novo pantalones parentes prohibir quandocunque sparniar sr sra srta te trenta ubicunque un vacantias vespere vos W.C.
Le plus facile me semblava adder istes a mano.
Al 15 de decembre io pensava haber arrivata al finish, ma un die plus tarde io discoperiva plus irregularitates, trovante con le patrono $ spatios al fin de explicationes (illo non es problematic), ma anque circa 20 entratas sin explicationes, trovate con le patrono : $. (Cercar los ora non los trova, proque intertanto le problemas es solvite.)
Ille 20 casos esseva causate per formatationes inexpectate in le material de Wikia. Al 29 de decembre 2015 io trovava le tempore pro reparar le problemas manualmente. Le spatios final anodin io removeva in MS Word: ‘ ^p’ deveniva ‘^p’. Finalmente, le file pro le ‘compulsator’ era preste.
Ma ancora non un dictionario basic interlingua-nederlandese pro imprimer.