memkompreneble

"Ekde kiam homoj la unuan fojon forlasis siajn kavernojn kaj renkontis aliulojn kun aliaj vidpunktoj kaj aliaj lingvoj ekzistas revo: mortigi ilin, por ke ni ne devu lerni ilian lingvon nek kompreni ilian vidpunkton." – citaĵo el la filmo "The Beast With a Billion Backs" de la usona tv-serio Futuramo – tiu ŝerco evidente celas al esperanto, ĉar en la sama filmo oni ankaŭ proponas senseksajn pronomojn "shklim" kaj "shkler" por la angla

trovi indikitajn enkodigojn per regesp 2010-01-05

Filed under: neenkategoriigitaj — memkompreneble @ 18:50
Tags:

Per la sekvaj regulaj esprimoj eblis trovi la enkodigojn indikitajn en parto de la elsuĉitaj paĝoj:

  • regesp_1 = (<[mM][eE][tT][aA] )([\s\S]*?)([cC][oO][nN][tT][eE][nN][tT]=)([\s\S]*?)([cC][hH][aA][rR][sS][eE][tT]=)([\s\S]*?)((/>)|(</[mM][eE][tT][aA]>))
  • regesp_2 = ([cC][hH][aA][rR][sS][eE][tT]=)([\s\S]*?)([ ‘”])
  • regesp_3 = (<\?[xX][mM][lL] )([\s\S]*?)([eE][nN][cC][oO][dD][iI][nN][gG]=)([\s\S]*?)(\?>)
  • regesp_4 = ((([eE][nN][cC][oO][dD][iI][nN][gG]=”)([\s\S]*?)(“))|(([eE][nN][cC][oO][dD][iI][nN][gG]=’)([\s\S]*?)(‘)))

La unua esprimo trovas enkodigoindikilojn en html-paĝoj kaj la dua eltranĉas la bezonatan parton el tiuj. Simile, la tria esprimo trovas enkodigoindikilojn en xml-paĝoj kaj la kvara eltranĉas ilin el tiuj.

Por ŝpari iomon da tempo kiam venontfoje bezonatos la serĉo, nova tabelo estis kreita por stori la rezultojn de tiuj serĉoj por ĉiuj dokumentoj en la kolekto.

El tiu rezulta tabelo evidentiĝis la sekva listo kun sume 94551 trovitaj indikiloj kaj sume 25 malsamaj indikiloj pri enkodigo kaj kun la kvanto da dokumentoj kun tia indiko:

88278 UTF-8
2052 iso-8859-1
1616 windows-1252
774 iso-8859-2
750
456 windows-1251
301 iso-8859-3
60 windows-1250
37 gb-utf-8
36 BIG5
36 ISO-8859-4
36 iso-8859-7
36 iso-8859-8-i
36 windows-1256
18 iso-8859-15
11 us-ascii
5 Shift_JIS
4 iso8859-2
2 EO-ASCII<br
2 utf8
1 GB2312
1 ISO-8859-1/ADVANCED_SEARCHFILTER
1 windows-1255
1 EUC-JP
1 windows-UTF-8

Kaj por ricevi la supran tabelon, la tuj sekva sql-esprimo estis uzita:

SELECT `enkodigo`,SUM(`kvanto`) AS `sumo` FROM (
 SELECT html_enkodigo AS `enkodigo`,COUNT(*) AS `kvanto`
 FROM tabelo_urlenkodigoj
 WHERE html_enkodigo IS NOT NULL
 GROUP BY html_enkodigo
UNION
 SELECT xml_enkodigo AS `enkodigo`,COUNT(*) AS `kvanto`
 FROM tabelo_urlenkodigoj
 WHERE xml_enkodigo IS NOT NULL
 GROUP BY xml_enkodigo
) AS `subpeto`
GROUP BY `enkodigo`
ORDER BY `sumo` DESC;

Ŝajnas ke la regulaj esprimoj malsukcesis trovi bonformitan indikilon pri uzita enkodigo ĉe kelkaj dokumentoj, kiuj aperas kun malplena enkodigo-kampo en la rezulta tabelo.

Ŝajnas cetere ke la okapi-filtrilo/segmentilo daŭre ne kontrolas, ke la indikita enkodigo kongruas kun la fakte trovita signostrio. Por eviti kelkajn esceptojn dum filtrado, necesos aŭ a) ekskludi la dokumentojn kun esceptoj dum filtrado el la kolekto, aŭ b) reskribi propran filtrilon. … Per tia supra kaj similaj raportoj espereble eblu trovi kaj korekti la problemojn.

 

eltranĉaĵo el la logo de la enkodigo-divenilo 2010-01-04

Filed under: raportoj — memkompreneble @ 00:54
Tags:
...

1200-a iteracio.
--------------------------------

nuna tempo .................. : 2010-01-04 00:39:12
iteracio .................... : 1200
url_id ...................... : 2190
ligilo ektrovita je ......... : 2009-12-20 17:18:10.0
aldonita al ripozejo je ..... : 2009-12-20 17:27:14.0
enhavo sucxita je ........... : 2009-12-20 17:27:14.0
longeco de url adreso ....... : 46
url adreso .................. : http://becxjo.blogspot.com/feeds/posts/default
ligiloj trovitaj eksteren ... : 0
ligiloj trovitaj cxi tien ... : 70
longeco de url enhavo ....... : 79717
longeco de url filtrita ..... : 34490
segmentoj (kun ripeteblo) ... : 217
segmentoj (sen ripeteblo) ... : 215
kodpagxoj trovitaj .......... : BASIC_LATIN, LATIN_EXTENDED_A


1201-a iteracio.
--------------------------------

nuna tempo .................. : 2010-01-04 00:39:12
iteracio .................... : 1201
url_id ...................... : 2191
ligilo ektrovita je ......... : 2009-12-20 17:18:10.0
aldonita al ripozejo je ..... : 2009-12-20 17:27:23.0
enhavo sucxita je ........... : 2009-12-20 17:27:23.0
longeco de url adreso ....... : 52
url adreso .................. : http://becxjo.blogspot.com/search/label/plenkreskula
ligiloj trovitaj eksteren ... : 171
ligiloj trovitaj cxi tien ... : 21
longeco de url enhavo ....... : 85856
longeco de url filtrita ..... : 10934
segmentoj (kun ripeteblo) ... : 40
segmentoj (sen ripeteblo) ... : 40
kodpagxoj trovitaj .......... : BASIC_LATIN, LATIN_EXTENDED_A, LATIN_1_SUPPLEMENT, ARABIC, GENERAL_PUNCTUATION

...
 

raporto pri nuna amplekso de la kolekto 2010-01-03

Filed under: raportoj — memkompreneble @ 00:12
Tags:

Ĝis nun ne ekzistas tute fidinda metodo por evalui la lingvon de donitaj segmentoj, krome atentindas pri usonaj patentoj koncerne efikan lingvorekonadon. Pro tio la sekva statistiko ankoraŭ estas tre kruda.

Tabelo_Url .............. : 290804
Tabelo_UrlEnhavoj ....... : 110575
Tabelo_RipozejDokumento . : 107607
Tabelo_UrlFiltritaj ..... : 58642
Tabelo_Segment .......... : 265109
Tabelo_UrlSegmentoj ..... : 499040

Ne ĉiuj adresoj taŭgas por elŝutado, pro tio enestas multe pli da enskriboj en la tabelo de ĉiuj konataj url-adresoj ol en la tabelo de elŝutitaj enhavoj.

La diferencon inter la grandecoj de la tabeloj kun enhavoj kaj ripozejodokumentoj kaŭzas la fakto, ke post sengvidita elŝutado de kelkaj dokumentoj evidentiĝis ke tia tipo ne dezirindas kaj konsekvence estis ekskludita el la ripozejo, tamen la jam suĉita enhavo restas en la db. La tabelo de filtritaj enhavoj ne montras liniojn, kie la filtrita enhavo havas longecon de nulo aŭ mem estas nulo. Krome, la filtrado okazas aparte de la elsuĉado de la enhavoj, do ĉiam estos malpli da filtritaj ol tutaj enhavoj.

La diferenco inter la grandecoj de la tabeloj de unikaj segmentoj kaj de indeksitaj url-segmentoj montras la kvanton de ripetiĝoj.

Segmentado daŭre estas problemo, ĉar la metodo uzita por segmenti la filtritajn enhavojn por krei la supran statistikon kelkfoje malfunkcias kaj redonas ege tro longajn segmentojn. Tamen, la kvoto de ripetado ŝajnas realisma, ke ĉiu enhavo troviĝos averaĝe almenaŭ dufoje ie en la reto.

 

krei novan eo-korpuson 2010-01-02

Filed under: neenkategoriigitaj — memkompreneble @ 23:12
Tags:

Celoj kaj sukceskriterioj:

  • sql-datumbazo/xml-dosiero (+ konvertilo inter ambaŭ) kun poluritaj kaj normitaj segmentoj kun akurata indiko de lingvokodo,
  • almenaŭ 50 milionoj da vortoj kun lingvokodo “eo”, sen ripetitaj segmentoj,
  • permeseblas ankaŭ aliaj lingvokodoj en la kolekto,
  • kie eblas, plurlingve tradukitaj segmentoj estu ligitaj en tradukunuoj laŭ tmx-stilo,
  • nur liberaj kaj permesitaj fontoj,

fine venu do libere elŝuteblaj versioj de la tuta rezultkolekto por nekomercaj celoj. Evidente ekzistas kelkaj fontoj: blogoj (blogspot, livejournal, ktp.), vikipedio, hejmpaĝoj, retejoj de eo-organizoj (fakaj, regionaj, religiaj, ktp.), kelkaj popularaj liberaj programoj (KDE, openOffice, ktp.), inkl. arkivoj kun historiaj eo-verkoj, kaj aliaj.

 

du aliaj korpusoj, fakte nur unu

Filed under: neenkategoriigitaj — memkompreneble @ 20:23
Tags:

Mi ĵus trovis ke jam ekzistas projekto kun ekzakte samaj celoj, nome krei eo-korpuson. Indas baldaŭ elŝuti kaj trarigardi la fontokodojn … Tamen ili anoncas sur la projektpaĝo ke ili uzas pretajn trarampilomodulojn … povus certe ŝpari manlaboran penon tiel, sed ĉu tiaj iloj vere pli bone kapablos trakti generitajn paĝarojn ol miaj memfaritaĵoj? Ni vidos. Iel ajn, ŝajne nur temas pri iloj por krei korpuson, ne pri korpuso mem – simila progreso kiel ĉi tie do …

Cetere, lige kun tiu antaŭa trovo okazis dua trovo: ja pli granda korpuso jam ekzistas en danio, tamen ankaŭ kopirajtita kaj ŝajne nur alirebla per la interfaco sur la retpaĝo kaj ne elŝutebla entute. Kaj en la publikaĵoj kiujn mi ĵus supraĵe tralegis oni ne multon mencias pri la kolektado sed ĉefe pri la procezado de la tekstoj. La kolekto enhavas la “korpuson de esperanto” kiun mi antaŭe jam menciis, do fakte temas daŭre nur pri unu menciinda korpuso konata al mi

Almenaŭ bona ideo estas uzi na la Google API por trovi aldonajn retpaĝojn, sed se uzata por semado oni verŝajne trafos tro malmultajn retregionojn kun sola aŭ nur kelkaj paĝoj en esperanto kaj kun la vasta majoritato en alia(j) lingvo(j). Menciante tion, ankaŭ indas mencii ke rekoni la lingvon de dokumentoj restas problemo – verŝajne ne solvebla, ĉar ofte aperas la tiel nomata lingva gulaŝo, kiam intermiksitaj frazoj el aliaj lingvoj malpurigas dokumenton.

Ŝajnas pli senchava unue purigi skriptaĵojn kaj etikedadon, poste segmenti la poluritan tekston laŭ heŭristika regularo, poste taksi la lingvecon de la segmentenhavoj per pluraj specialaj lingvorekoniloj kaj doni probablecojn. Okazos ripetaĵoj de pluroble la samaj segmentoj, kaj en samaj kaj en malsamaj dokumentoj. Ekzemple ĉe blogejoj aŭ aliaj generitaj retejoj ofte aperos segmentoj kiuj diras “tion ĉi artikolon skribis tiu aŭ iu”. Povas okazi ke la montrita lingvo de la interfaco de iu retejo ne estas tute tradukita, povas okazi ke uzanto agordis alian interfacolingvon, povas okazi ke aŭtoro skribis plurlingvajn artikolojn, per citado povas okazi pluroblaĵoj, ktp. Multaj ebloj.

Kaj multaj problemoj, ĉar segmentado trans pluraj lingvoj, enkodigoj kaj dosierformatoj povas ĝenegi. Almenaŭ ne eblas segmenti ĉion bone je la unua trapaso. Imageblas iteracia aliro, kie bonaj segmentoj estu rekonataj aŭ per homa juĝado aŭ per tre solida kalkulebla kriterio, poste el tiuj segmentoj per aŭtomata analizo venu listo kun kandidatoj por mallongigoj, propraj nomoj, datoj, serinumeroj, aliaj eble interesaj unuoj, kaj per tiu listo la iteracio komencu denove.

 

trovi ligilojn per regesp

Filed under: neenkategoriigitaj — memkompreneble @ 16:13
Tags:

Paŝoj por krei liberan eo-e-tekstaron:

1. Kolektis kelkajn komencigajn adresojn de grandaj senkopirajtaj eo-retejoj  per kutima guglado.

2. Kreis ujan datumbazon kaj manĝigis la liston el paŝo 1. al memskribita trarampilroboto.

3. Tiu nun rampas kaj rampas kaj daŭre faras la jenan iteracion:

4. Preni sekvan adreson el la sema listo kaj kontroli bonan aspekton de la URI.

5. Se bone, elŝuti enhavon de la dokumento kaj stori al datumbazo, se malbone daŭrigu ĉe 8.

6. Trovi ligilojn en la suĉita enhavo, normigi relativajn ligilojn per la URI de la dokumento mem, forigi fragmentajn partojn de ligiloj,

7. Aldoni al semolisto tiujn ligilojn, kiuj troviĝas en sama retregiono kiel iu antaŭa semo, kaj kiuj ne ligas al ne-elsuĉenda dokumentformato (.gif, .avi, .pdf, …), kaj kiuj ĝis nun ne aperis en la semolisto. La aliajn ligilojn tamen aldonu al listo de jam-provitaj ligiloj por ŝpari tempon kiam denove ĝi okazos.

8. Se restas komencigaj adresoj en la semolisto, daŭrigi la iteracion ĉe 4., alikaze finiĝis trarampado kaj pretas db kun elsuĉitaj enhavoj.

Kiel troveblis ligiloj en elsuĉitaj paĝoj ĉe paŝo ses? Sin prezentis du evidentaj vojoj: a) per la DOM aŭ b) mem brodi permane kaj per regesp ion taŭgetan. Avantaĝo de a) estus ke la API por DOM estas tiom standarda kaj havebla – tamen la granda malavantaĝo estas ke la traktotaj dokumentoj devas esti validaj kaj bonformitaj. Bedaŭrinde tio ofte ne estas la kazo, kaj ordinare la retumanto ne notas tion ĉar foliumiloj montras ankaŭ erarajn paĝojn. Do restas nur vojo b) kun manbroditaj regulaj esprimoj kiel alternativo.

Serĉinte iomete, mi tamen nur trovis duontaŭgajn regulajn esprimojn por kongrui kun ĉiuj deziritaj ligiloj kaj devis eksperimentadi kaj ĝis nun ne cent-el-cente certas ke la nuna serĉo vere redonas ĉion (antaŭdankon pro proponoj plibonigi).

  1. (<[aA] )([\s\S]*?)([hH][rR][eE][fF]=)([\s\S]*?)(>)([\s\S]*?)(</[aA]>)
  2. (<[fF][rR][aA][mM][eE] )([\s\S]*?)([sS][rR][cC]=)([\s\S]*?)(>)

Kelkfoje la uskleco uzita en la suĉitaj paĝoj ŝajnas stranga, pro tio la serĉesprimoj kongruu kun ĉiuj eblaj variaĵoj de uskleco. kelkaj paĝoj estas organizitaj en kradoj, necesas tial la dua esprimo.

Mi provis la esprimon (.*?) por ŝpareme kongrui kun ĉiuj ajn signoj inter malferma kaj ferma braketoj, tamen iam notis ke tiu serĉo ne trovis ligilojn kun internaj alineŝanĝoj, do ŝanĝis la esprimon al ([\s\S]*?) por ŝpareme kongrui kun ĉiuj signoj kiuj aŭ estas spacigaj aŭ ne-spacigaj, kaj tiel trovis kelkajn ligilojn pli.

Intertempe troviĝas nun kelkcentmil tieltrovitaj ligiloj en la trarampada datumbazo. Grandan problemon signifas dinamika generado de retpaĝoj fare de kelkaj retejoj, kie pro malbona funkciado de la normigo ĉe paŝo ses ekvenas rekursio, kiam fakte malbona adreso tamen elvokas respondon de la retejo kiu sekve produktas denove malbonajn adresojn kiuj sekve elvokas respondojn de la retejo kaj tiel plu ad nauseam.

Por trovi la liston kun eo-lingvaj blogoj el mia unua blogero sufiĉis serĉo en la tabelo de trovitaj ligiloj pri adresoj kiuj aspektas kiel la ĉefa paĝo de blogo, ekz.e http://ABCXYZ.wordpress.comhttp://ABCXYZ.blogspot.com, poste kontroli per rapida rigardo ĉu vere temas pri esperanto (ĉar ĝis nun mankas al mi rapida rimedo por aŭtomate decidi ĉu temas pri (parte) eo-lingva paĝaro aŭ ne), kaj rezultis la listo. Tiuj blogoj nun ankaŭ semos la trarampadon.

Glosaro:

[eo] regesp (regulaj esprimoj) = [en] regex (regular expressions) = standarda formato por formuli serĉojn de litersekvencoj, uzebla en multaj programlingvoj.

[eo] e-teksto = [eo] elektronika teksto = sekvo de literoj en komputila dosiero, kontraste al aŭdaj aŭ bildaj formatoj.

[eo] db = [eo] datumbazo = programaro por stori kaj administri amasojn da dataoj per minimumo da peno.

[eo] retregiona nomo = [en] domain name = ekz.e la majuskla parto de la sekva specimena adreso: http://WWW.XYZ.ABC/ktp/etc.htm.

[eo] trarampilo = [en] webspider; webcrawler; searchbot = komputila program(ar)o por aŭtomate kaj sen direkta homa gvido trafoliumi la interreton laŭ antaŭe deciditaj politikoj.

[eo] API (aplikaĵprograma interfaco) = [en] API (application programming interface) = standarda programbiblioteko kun pretaj metodoj kaj objektoj por certa celo en certa programlingvo.

[eo] DOM (dokument-objekt-modelo) = [en] DOM (document object model) = standarda modelo de la strukturo de retpaĝoj, uzebla en multaj programlingvoj.

[eo] URI (unuforma resurs-identigilo) = [en] URI (uniform resource identifier) = standarda formato de retadresoj laŭ normigoj de la W3C:

  foo://example.com:8042/over/there?name=ferret#nose
  \_/   \______________/\_________/ \_________/ \__/
   |           |            |            |        |
 skemo,   aŭtoritato,     pado,       enketo,  fragmento