14 min read

Idazketa prozesua masiboki aztertzeko tresna

Laburpena

Hurrengo lerroetan azaltzen dut egin daitekeen proiektu ustez emonkorra.Datu batze prozesua erraztuko luke lagin handiak erabiltzea ahalbidetuta. Zenbait ikerketa eremu eta lerro zabal ditzake gure taldeak egin dezan, zein, komunikazio lana egin ondoren, beste batzuek beste hizkuntza batzuetan egokitzeko.Idazketa on-line aztertzeko tresna.

Proposamena

Azterketa zientifikorako erreminta bat eraikitzea proposatzen dut, zehazki, ordenagailuko idazketa prozesua aztertzeko prozedura eta erreminta. Honelakoak azter litezke kodea garatutakoan:

  • Gaitasun linguistikoan: hautuen erabilera zuzena, zuzendua eta hausnartua.
  • Gaitasun pragmatikoan: Testuaren (edo esaldiaren) osaketa eta antolaketa prozesua. Hautu zuzenak eta zuzenduak
  • Gaitasun soziolinguistikoa:…

Bestelako ikerketa aukerak:

  • Testuen zuzenketa: aukera
  • Idazkuntza kolaboratiboaren egituraketa

Neur litezkeen aldagaiak

  • Tipeatutakoa hurrenez hurren
    • Idatzitakoa
    • Ezabatutakoa
    • Lekuz aldatutakoa
  • Denbora (segunduka-edo)
  • Egilea

Bitartekoa

Aipatu ikerketa aukera horiek aurrera eramateko, dagoeneko baden software libre eta irekia dekodeketa berezi bat eraikitzea proposatzen da. Eta, akaso, software horren egokitzapenaren bat egitea ere bai, helburuen arabera.

Aipatzen den softwarea Etherpad1da. Etherpad 2008an argitaratu zen eta Googlek 2009an erosi zuen, Google Docs-en oinarrian dago eta egin daitezkeen erabilera standarrak ezagunak dira irakurlearentzat. Idazketa kolaboratiborako garatu zen; toki askotatik idatz dezakete hainbat egilek. Egun ere hainbat instantzia daude Interneten erabilgarri: euren web orrian eskaintzen dutena, Mozillaren instantzia, eta RiseUpekoa.

Software libre eta irekia izateak ahalbidetzen du erabiltzea eta aldatzea norberaren beharretara egokituta. Ikerkuntza helburuetara ere bai. Instantzia batetik bestera aldea dagoen arren, oro har, formatu desberdinetan jaits daiteke idatzitako testua: aberastutako testuan (.rtf edo .html formatuetan), testu soilean, .txt formatuan eta Etherpadeko berezko formatuan, .etherpad.

Aipatu den azken formatu horretan idatzitako dokumentuak, Etherpad programak berak darabilena, testu lauko datuak ditu eta edizio historia osoa gordetzen du. Hain zuzen ere, goiko atalean aipatutako aldagaietakoa da .etherpad formatuko fitxategiak duen informazioa.

Informazio hori, berriz, helburu informatikoekin dago kodetuta eta ez da erraz interpretatzen ez kudeatzen bere horretan.

.etherpad formatuko artxiboa gordinik

.etherpad formatuko artxiboa gordinik

Aurreko irudian ikus daiteke testu lau ikuspegia, oraindik dekodetu beharrekoa.

Etherpadek bere erabilera standard-ean erakuts ditzake idazketa prozesua urratsez urrats, testu prozesatzaile batek prozesua gordetzen duen antzera. Software libre eta irekiaren filosofiarekin bat etorrita, prozesu guzti horiek erabiltzailearen esku daude. Googleko eta beste testu prozesatzaile batzuek ere uzten dute erabiltzen, baina ez dute informazio hori gordetzen duen artxiborik eta dokumentaziorik ematen, ikerlariaren beharretara egokitzea de facto galerazita.

Garatzekoak

Etherpadeko berezko artxiboen kodea ulertu eta erabiltzea izan behar litzateke ikerlariaren xedea.

Lehenengo helburu bat izan behar da artxiboaren kodeketa banatzea; denbora identifikatzea, egilea identifikatzea eta pausurik pasu berreraikitzea idazketa prozesua. Horretarako, beharrezkoa da Etherpadek erabiltzen duen kodeketa ulertzea eta dekodifikatzailea eraikitzea, ikerketa helburuen arabera.

Helburua zein den, berreraiki behar litzateke idazkuntza prozesua, aldakuntzak nabarmenduta, denbora lerroan kokatuta edo dena delakoa eginda.

Beste helburu era batek ere eska dezake norberaren zerbitzarietan Etherpad egokitua instalatzea, zuzentzeko testuak-edo hasieratik eskainita.

Jarraian, adibide baten bitartez, Etherpad erakutsi eta dituen aukerak iradokitzen dira.

Adibide bat:
Zelan erabili behar litzatekeen informazioa batzeko

Hurrengo testuan azaltzen da zein litzatekeen ikergaia lortzeko prozesua. Deskripzio horren lehenengo bertsio bat Etherpad-en idatzita hemen azter daiteke.

Prozesua honela laburbil daiteke:

  1. Etherpad izeneko web aplikazioa zabaldu
  2. Dokumentu bat sortu web orretan 2.
  3. Helbide hori gorde (?)
  4. Idatzi dokumentua
  5. Web helbidea ikerlariari pasatu

Ikerlariak, web helbide hori duela, idatzitakoa zein idazketa prozesu osoa gordetzen duen dokumentua jaits ditzake eta, baliabidea sortuz gero, analizatu.

Jaisteko:

  1. Joan informatzaileak emandako web helbidera eta goian agertzen diren ikonoetariko batean dokumentua hainbat formatutan deskargatzeko aukera ematen du.
    Mozillak eskaintzen duenak, esate baterako, .txt, .html eta .etherpad formatuetan jaisteko aukera ematen du.
  2. .etherpad formatuduna jaitsi.
  3. Aztertzeko tresnarekin erabili.

Aztertzeko tresna hori da oraindik garatzeko dagoena.

Aurreko testuaren bideoa:

Aurreko testuaren lehenengo bertsioaren idazketa ikus daiteke segidako bideoan. Gainean klik eginda pantaila osoan ikusteko aukera ere ematen du.

Prozesu horretako bideoan hainbat norabide aldaketa ikusten dira:

  • Hurrenkera bat eraikitzen ari denean, 72. pausuan, enter bat gehitu zerrendatutako elementu biren artean.
  • Markatu gabeko letrak sartzea, bat edo beste ordezkatzea edo soberako bat edo beste kentzea
  • Aurrez idatzitako testuari azalpenezko nabardurak idaztea (202. pausuaren inguruan).
  • Testuaren birformulazioa (211. pausuan hasten da ezabatzen)
  • Ortografia zuzenketa, 289. pausuan hasita.
  • Gramatika autozuzenketa, 348. pausuan hasita.
  • Egokitasun zuzenketa, 372. pausuan hasita.
  • Informazio osagarria gehitzea, 469. pausuan hasita.

Elementu guzti horiek aztergarri uzten ditu .etherpad formatuko dokumentuak, ikerketa eremuaren arabera, ikertzaile bakoitzak egokitzeko.

Irakurgarri egiteko scripta

Librezale foroko informatikari baten ekarpenei esker, goiko irudiko testu lau eta trinkoa irakurgarriago egitea lortu da, pasatutako script baten bitartez:

#!/usr/bin/python
import json
import sys

json.dump(json.load(sys.stdin), sys.stdout, indent=4)

Honako agindua erabili behar da segidako irteera lortzeko: cat aztertzeko-artxiboaren-izena.etherpad | ./scriptaren-izena

Kodean aztertzeko scripta pasatuta

Kodean aztertzeko scripta pasatuta

Aurreko irudian ikus daitekeenez, testuaren garapena askoz handiagoa da goian irakurritako adibideko testua baino.

Script horrek testuaren kodea zabaldu egiten du eta barruko elementuak aztertzeko aukera eskuragai ipini ere bai. Dokumentu hori osorik hemen ikus daiteke.

Ikuspegi orokorragoa eta erabilgarriagoa lor daiteke hurrengo scriptarekin, datuen sailkapena ematen duen scriptarekin.

Datuak antolatuta aztertzeko scriptaren bila

Aurrez azaldutako foroan Maider erabiltzaileak idatzitako scriptak informazioa antolatzen du eta kalkulu orri formatuan itzultzen, intereseko aldagaiak banatuta: pausua (Revision), unea (Timestamp), egilea (Author), aldaketa (Changeset).

Scripta:

import json
import argparse
import csv

parser = argparse.ArgumentParser(description="Etherpad bateko aldaketak CSV batera pasa.")
parser.add_argument('etherpad_fitxategia', help="Exportatu nahi den etherpad fitxategia")
parser.add_argument('izena', help="pad-aren izena")
parser.add_argument('csv_fitxategia', help="CSV fitxategiaren izena")


def extract_changesets(name, data):
    pad_name = "pad:{0}".format(name)
    metadata = data[pad_name]
    changesets = [(
        "Revision",
        "Timestamp",
        "Author",
        "Changeset",
#        "atext",
    )]
    for revision in range(metadata["head"] + 1):
        revision_name = "{0}:revs:{1}".format(pad_name, revision)
        revision_data = data[revision_name]
        changesets.append((
            revision,
            revision_data["meta"]["timestamp"],
            revision_data["meta"]["author"],
            revision_data["changeset"],
 #           revision_data["atext"],
        ))

    return changesets


def main(etherpad_filename, name, csv_filename):
    with open(etherpad_filename, 'r') as etherpad_filename:
        data = json.load(etherpad_filename)

    changesets = extract_changesets(name, data)


    with open(csv_filename, 'w') as csvfile:
        csvwriter = csv.writer(csvfile, delimiter=",", quotechar='"', quoting=csv.QUOTE_ALL)
        for line in changesets:
            csvwriter.writerow(line)


if __name__ == '__main__':
    args = parser.parse_args()
    main(args.etherpad_fitxategia, args.izena, args.csv_fitxategia)

Script horren izena extract_etherpad_changesets.py dela, honelako aginduaz lortzen da irteera antolatuko artxiboa, begiratzeko.csv izenarekin

python extract_etherpad_changesets.py Etherpad-idazketa-aztertzeko-tresna.etherpad Etherpad-idazketa-aztertzeko-tresna begiratzeko.csv

Horren erabilera erakusteko, segidan erakusten dira begiratzeko.csv fitxategiaren lehenengo 20 lerroak. Kontuan izan behar da fitxategi horrek denera 574 lerro dituela.

Table 1: Prozesua honela laburbil daiteke
Revision Timestamp Author Changeset
1 15350938546 a.ao3KA1J3ReC4HCmy Z:6c<6b|5-6b$
2 15350938827 a.ao3KA1J3ReC4HCmy Z:1>1*0+1$P
3 15350938833 a.ao3KA1J3ReC4HCmy Z:2>2=1*0+2$ro
4 15350938837 a.ao3KA1J3ReC4HCmy Z:4>1=3*0+1$z
5 15350938843 a.ao3KA1J3ReC4HCmy Z:5>2=4*0+2$es
6 15350938847 a.ao3KA1J3ReC4HCmy Z:7>2=6*0+2$ua
7 15350938900 a.ao3KA1J3ReC4HCmy Z:9>1=8*0+1$
8 15350938914 a.ao3KA1J3ReC4HCmy Z:a>2=9*0+2$ho
9 15350938919 a.ao3KA1J3ReC4HCmy Z:c>2=b*0+2$ne
10 15350938925 a.ao3KA1J3ReC4HCmy Z:e>1=d*0+1$l
11 15350938930 a.ao3KA1J3ReC4HCmy Z:f>2=e*0+2$a
12 15350938935 a.ao3KA1J3ReC4HCmy Z:h>2=g*0+2$la
13 15350938940 a.ao3KA1J3ReC4HCmy Z:j>2=i*0+2$bu
14 15350938945 a.ao3KA1J3ReC4HCmy Z:l>1=k*0+1$r
15 15350938950 a.ao3KA1J3ReC4HCmy Z:m>2=l*0+2$bi
16 15350938955 a.ao3KA1J3ReC4HCmy Z:o>1=n*0+1$l
17 15350938961 a.ao3KA1J3ReC4HCmy Z:p>1=o*0+1$
18 15350938966 a.ao3KA1J3ReC4HCmy Z:q>3=p*0+3$dai
19 15350938971 a.ao3KA1J3ReC4HCmy Z:t>3=s*0+3$tek
20 15350938976 a.ao3KA1J3ReC4HCmy Z:w>1=v*0+1$e

Taulako lehenengo zutabean adierazten da zenbatgarren pausua den, bigarrenean noiz egin den, hirugarrenak nork eta azken zutabean zein izan den aldaketa. Azken zutabearen $ karakterearen ondoren irakurtzen dena da edizioaren informazioa.

Dekodetzea prozesua

Aurreko scriptaren emaitzarekin oinarrituta jatorrizko testua berreskura daiteke, baldintza batzuk betetzen badira. Lehen, kodearen irakurgarritasuna hobetutakoan erakutsi denez, karaktere eta elementuen kokapena erraz antzematen dira. Edizioa gehitzera mugatzen den kasuetarako dekodetze prozesua erakusten da jarraian:

# Dekodetuko diren pausuak aukeratu
zer <- begiratzeko$Changeset[3:21]

zer
##  [1] "Z:1>1*0+1$P"     "Z:2>2=1*0+2$ro"  "Z:4>1=3*0+1$z"  
##  [4] "Z:5>2=4*0+2$es"  "Z:7>2=6*0+2$ua"  "Z:9>1=8*0+1$ "  
##  [7] "Z:a>2=9*0+2$ho"  "Z:c>2=b*0+2$ne"  "Z:e>1=d*0+1$l"  
## [10] "Z:f>2=e*0+2$a "  "Z:h>2=g*0+2$la"  "Z:j>2=i*0+2$bu" 
## [13] "Z:l>1=k*0+1$r"   "Z:m>2=l*0+2$bi"  "Z:o>1=n*0+1$l"  
## [16] "Z:p>1=o*0+1$ "   "Z:q>3=p*0+3$dai" "Z:t>3=s*0+3$tek"
## [19] "Z:w>1=v*0+1$e"
# Pasarte horietako kodean non hasten den editatutakoaren informazioa
nun <- regexpr(pattern = "\\$", zer)

nun # "$" karakterearen kokapena "changeset" aldagaiko balioan
##  [1] 10 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
## attr(,"match.length")
##  [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## attr(,"index.type")
## [1] "chars"
## attr(,"useBytes")
## [1] TRUE
# Kodearen luzera aberiguatu
luze <- nchar(zer)

luze # Aldagaiko balioaren karakteree luzeera
##  [1] 11 14 13 14 14 13 14 14 13 14 14 14 13 14 13 13 15 15 13
#Identifikatu aldaketa izan direan elementuak
substr(zer, nun+1, luze)
##  [1] "P"   "ro"  "z"   "es"  "ua"  " "   "ho"  "ne"  "l"   "a "  "la" 
## [12] "bu"  "r"   "bi"  "l"   " "   "dai" "tek" "e"
# Komatxuak kenduta
cat(substr(zer, nun+1, luze))
## P ro z es ua   ho ne l a  la bu r bi l   dai tek e
# Pertsonentzat irakurgarri:
# Kodeetan topatutako edizio informazio guztia batu espazio barik
cat(substr(zer, nun+1, luze), sep = "")
## Prozesua honela laburbil daiteke

Huts egitea 3

Sistema bera segituaz, baina, emaitzak ez dira hain onargarriak ezabaketak eta kokapen aldaketak daudenean. Hau gertatzen da 3.etik 297. lerrorako tartean aurreko sistema hutsa erabilita:

zer <- begiratzeko$Changeset[3:297]

zer
##   [1] "Z:1>1*0+1$P"                     "Z:2>2=1*0+2$ro"                 
##   [3] "Z:4>1=3*0+1$z"                   "Z:5>2=4*0+2$es"                 
##   [5] "Z:7>2=6*0+2$ua"                  "Z:9>1=8*0+1$ "                  
##   [7] "Z:a>2=9*0+2$ho"                  "Z:c>2=b*0+2$ne"                 
##   [9] "Z:e>1=d*0+1$l"                   "Z:f>2=e*0+2$a "                 
##  [11] "Z:h>2=g*0+2$la"                  "Z:j>2=i*0+2$bu"                 
##  [13] "Z:l>1=k*0+1$r"                   "Z:m>2=l*0+2$bi"                 
##  [15] "Z:o>1=n*0+1$l"                   "Z:p>1=o*0+1$ "                  
##  [17] "Z:q>3=p*0+3$dai"                 "Z:t>3=s*0+3$tek"                
##  [19] "Z:w>1=v*0+1$e"                   "Z:x>1=w*0+1$:"                  
##  [21] "Z:y>5=x*0|1+1*0+4$\n    "        "Z:13>5|1=y=4*0|1+1*0+4$\n    "  
##  [23] "Z:18>1|2=13=4*0+1$1"             "Z:19>1|2=13=5*0+1$."            
##  [25] "Z:1a>1|2=13=6*0+1$ "             "Z:1b>1|2=13=7*0+1$E"            
##  [27] "Z:1c>3|2=13=8*0+3$the"           "Z:1f>2|2=13=b*0+2$rp"           
##  [29] "Z:1h>2|2=13=d*0+2$ad"            "Z:1j>1|2=13=f*0+1$ "            
##  [31] "Z:1k>2|2=13=g*0+2$iz"            "Z:1m>3|2=13=i*0+3$ene"          
##  [33] "Z:1p>2|2=13=l*0+2$ko"            "Z:1r>1|2=13=n*0+1$ "            
##  [35] "Z:1s>1|2=13=o*0+1$a"             "Z:1t>1|2=13=p*0+1$p"            
##  [37] "Z:1u<2|2=13=o-2$"                "Z:1s>1|2=13=o*0+1$w"            
##  [39] "Z:1t>1|2=13=p*0+1$e"             "Z:1u>1|2=13=q*0+1$b"            
##  [41] "Z:1v>3|2=13=r*0+3$ ap"           "Z:1y>2|2=13=u*0+2$li"           
##  [43] "Z:20>2|2=13=w*0+2$ka"            "Z:22>3|2=13=y*0+3$zio"          
##  [45] "Z:25>1|2=13=11*0+1$a"            "Z:26>1|2=13=12*0+1$ "           
##  [47] "Z:27>1|2=13=13*0+1$z"            "Z:28>2|2=13=14*0+2$ab"          
##  [49] "Z:2a>2|2=13=16*0+2$al"           "Z:2c>1|2=13=18*0+1$d"           
##  [51] "Z:2d>1|2=13=19*0+1$u"            "Z:2e>1|2=13=1a*0+1$ "           
##  [53] "Z:2f>5|2=13=1b*0|1+1*0+4$\n    " "Z:2k>1|3=2f=4*0+1$2"            
##  [55] "Z:2l>2|3=2f=5*0+2$. "            "Z:2n>1|3=2f=7*0+1$H"            
##  [57] "Z:2o>2|3=2f=8*0+2$el"            "Z:2q>1|3=2f=a*0+1$b"            
##  [59] "Z:2r>3|3=2f=b*0+3$ide"           "Z:2u>3|3=2f=e*0+3$ ho"          
##  [61] "Z:2x>3|3=2f=h*0+3$ri "           "Z:30>1|3=2f=k*0+1$g"            
##  [63] "Z:31>2|3=2f=l*0+2$or"            "Z:33>2|3=2f=n*0+2$de"           
##  [65] "Z:35>1|3=2f=p*0+1$ "             "Z:36>1|3=2f=q*0+1$("            
##  [67] "Z:37>1|3=2f=r*0+1$?"             "Z:38>1|3=2f=s*0+1$)"            
##  [69] "Z:39>5|3=2f=t*0|1+1*0+4$\n    "  "Z:3e>1|4=39=4*0+1$3"            
##  [71] "Z:3f>1|4=39=5*0+1$."             "Z:3g>1|4=39=6*0+1$ "            
##  [73] "Z:3h>5|2=13=1b*0|1+1*0+4$\n    " "Z:3m>1|3=2f=4*0+1$2"            
##  [75] "Z:3n>1|3=2f=5*0+1$."             "Z:3o>1|3=2f=6*0+1$ "            
##  [77] "Z:3p>1|3=2f=7*0+1$D"             "Z:3q>2|3=2f=8*0+2$ok"           
##  [79] "Z:3s>3|3=2f=a*0+3$ume"           "Z:3v>4|3=2f=d*0+4$ntu "         
##  [81] "Z:3z>2|3=2f=h*0+2$ba"            "Z:41>2|3=2f=j*0+2$t "           
##  [83] "Z:43>4|3=2f=l*0+4$sort"          "Z:47>1|3=2f=p*0+1$u"            
##  [85] "Z:48>1|3=2f=q*0+1$."             "Z:49<1|4=37=4-1$"               
##  [87] "Z:48>1|4=37=4*0+1$3"             "Z:49<1|5=41=4-1$"               
##  [89] "Z:48>1|5=41=4*0+1$4"             "Z:49>1|5=41=6*0+1$ "            
##  [91] "Z:4a>1|5=41=7*0+1$I"             "Z:4b>3|5=41=8*0+3$dat"          
##  [93] "Z:4e>2|5=41=b*0+2$zi"            "Z:4g>1|5=41=d*0+1$ "            
##  [95] "Z:4h>1|5=41=e*0+1$d"             "Z:4i>3|5=41=f*0+3$oku"          
##  [97] "Z:4l>3|5=41=i*0+3$men"           "Z:4o>1|5=41=l*0+1$t"            
##  [99] "Z:4p>2|5=41=m*0+2$ua"            "Z:4r>5|5=41=o*0|1+1*0+4$\n    " 
## [101] "Z:4w>1|6=4q=4*0+1$5"             "Z:4x>1|6=4q=5*0+1$."            
## [103] "Z:4y>1|6=4q=6*0+1$ "             "Z:4z>1|6=4q=7*0+1$W"            
## [105] "Z:50>1|6=4q=8*0+1$e"             "Z:51>1|6=4q=9*0+1$b"            
## [107] "Z:52>1|6=4q=a*0+1$ "             "Z:53>1|6=4q=b*0+1$h"            
## [109] "Z:54>2|6=4q=c*0+2$el"            "Z:56>2|6=4q=e*0+2$bi"           
## [111] "Z:58>1|6=4q=g*0+1$d"             "Z:59>2|6=4q=h*0+2$ea"           
## [113] "Z:5b>1|6=4q=j*0+1$ "             "Z:5c>1|6=4q=k*0+1$i"            
## [115] "Z:5d>2|6=4q=l*0+2$ke"            "Z:5f>3|6=4q=n*0+3$rla"          
## [117] "Z:5i>3|6=4q=q*0+3$ria"           "Z:5l>3|6=4q=t*0+3$ri "          
## [119] "Z:5o>1|6=4q=w*0+1$p"             "Z:5p>3|6=4q=x*0+3$asa"          
## [121] "Z:5s>2|6=4q=10*0+2$tu"           "Z:5u>5|6=4q=12*0|1+1*0+4$\n    "
## [123] "Z:5z>5|7=5t=4*0|1+1*0+4$\n    "  "Z:64<4|8=5y-4$"                 
## [125] "Z:60>1|8=5y*0+1$I"               "Z:61>3|8=5y=1*0+3$ker"          
## [127] "Z:64>2|8=5y=4*0+2$la"            "Z:66>3|8=5y=6*0+3$ria"          
## [129] "Z:69>1|8=5y=9*0+1$k"             "Z:6a>2|8=5y=a*0+2$, "           
## [131] "Z:6c>3|8=5y=c*0+3$ord"           "Z:6f>3|8=5y=f*0+3$uan"          
## [133] "Z:6i>1|8=5y=i*0+1$,"             "Z:6j>1|8=5y=j*0+1$ "            
## [135] "Z:6k>1|8=5y=k*0+1$w"             "Z:6l>2|8=5y=l*0+2$eb"           
## [137] "Z:6n>1|8=5y=n*0+1$ "             "Z:6o>1|8=5y=o*0+1$h"            
## [139] "Z:6p>2|8=5y=p*0+2$el"            "Z:6r>2|8=5y=r*0+2$bi"           
## [141] "Z:6t>3|8=5y=t*0+3$de "           "Z:6w>3|8=5y=w*0+3$hor"          
## [143] "Z:6z>2|8=5y=z*0+2$i "            "Z:71>4|8=5y=11*0+4$duel"        
## [145] "Z:75>1|8=5y=15*0+1$a"            "Z:76>1|8=5y=16*0+1$ "           
## [147] "Z:77>1|8=5y=17*0+1$i"            "Z:78>2|8=5y=18*0+2$da"          
## [149] "Z:7a>1|8=5y=1a*0+1$t"            "Z:7b>2|8=5y=1b*0+2$zi"          
## [151] "Z:7d>1|8=5y=1d*0+1$t"            "Z:7e>3|8=5y=1e*0+3$ako"         
## [153] "Z:7h>2|8=5y=1h*0+2$a "           "Z:7j>2|8=5y=1j*0+2$ze"          
## [155] "Z:7l>3|8=5y=1l*0+3$in "          "Z:7o>4|8=5y=1o*0+4$idat"        
## [157] "Z:7s<1|8=5y=1r-1$"               "Z:7r>1|8=5y=1r*0+1$z"           
## [159] "Z:7s>1|8=5y=1s*0+1$k"            "Z:7t>3|8=5y=1t*0+3$eta"         
## [161] "Z:7w>1|8=5y=1w*0+1$ "            "Z:7x>2|8=5y=1x*0+2$pr"          
## [163] "Z:7z>1|8=5y=1z*0+1$o"            "Z:80>2|8=5y=20*0+2$ze"          
## [165] "Z:82>3|8=5y=22*0+3$su "          "Z:85>2|8=5y=25*0+2$os"          
## [167] "Z:87>1|8=5y=27*0+1$o"            "Z:88>1|8=5y=28*0+1$a"           
## [169] "Z:89>1|8=5y=29*0+1$ "            "Z:8a>3|8=5y=2a*0+3$gor"         
## [171] "Z:8d>3|8=5y=2d*0+3$det"          "Z:8g>4|8=5y=2g*0+4$zen "        
## [173] "Z:8k>3|8=5y=2k*0+3$due"          "Z:8n>2|8=5y=2n*0+2$n "          
## [175] "Z:8p>1|8=5y=2p*0+1$d"            "Z:8q>2|8=5y=2q*0+2$ok"          
## [177] "Z:8s>3|8=5y=2s*0+3$ume"          "Z:8v>1|8=5y=2v*0+1$n"           
## [179] "Z:8w>2|8=5y=2w*0+2$tu"           "Z:8y>2|8=5y=2y*0+2$a "          
## [181] "Z:90>1|8=5y=30*0+1$j"            "Z:91>2|8=5y=31*0+2$ai"          
## [183] "Z:93>3|8=5y=33*0+3$ts "          "Z:96>2|8=5y=36*0+2$de"          
## [185] "Z:98>2|8=5y=38*0+2$za"           "Z:9a>2|8=5y=3a*0+2$ke"          
## [187] "Z:9c>1|3=2f=q*0+1$ "             "Z:9d>1|3=2f=r*0+1$w"            
## [189] "Z:9e>2|3=2f=s*0+2$eb"            "Z:9g>1|3=2f=u*0+1$ "            
## [191] "Z:9h>1|3=2f=v*0+1$o"             "Z:9i>1|3=2f=w*0+1$r"            
## [193] "Z:9j>2|3=2f=x*0+2$re"            "Z:9l>3|3=2f=z*0+3$tan"          
## [195] "Z:9o>1|3=2f=12*0+1$*"            "Z:9p>1|3=2f=13*0+1$*"           
## [197] "Z:9q>1|3=2f=r*0+1$*"             "Z:9r>1|3=2f=s*0+1$*"            
## [199] "Z:9s>1|3=2f=16*0+1$ "            "Z:9t>1|3=2f=17*0+1$^"           
## [201] "Z:9u>1|3=2f=18*0+1$["            "Z:9v>1|3=2f=19*0+1$e"           
## [203] "Z:9w>2|3=2f=1a*0+2$z "           "Z:9y>1|3=2f=1c*0+1$b"           
## [205] "Z:9z>3|3=2f=1d*0+3$ait"          "Z:a2>1|3=2f=1g*0+1$a"           
## [207] "Z:a3>1|3=2f=1h*0+1$ "            "Z:a4>7|3=2f=1i*0+7$balioga"     
## [209] "Z:ab>3|3=2f=1p*0+3$rri"          "Z:ae>1|3=2f=1s*0+1$a"           
## [211] "Z:af<1|3=2f=1s-1$"               "Z:ae<1|3=2f=1r-1$"              
## [213] "Z:ad<8|3=2f=1j-8$"               "Z:a5<2|3=2f=1h-2$"              
## [215] "Z:a3<1|3=2f=1g-1$"               "Z:a2>1|3=2f=1g*0+1$u"           
## [217] "Z:a3>1|3=2f=1h*0+1$ "            "Z:a4>1|3=2f=1i*0+1$b"           
## [219] "Z:a5>4|3=2f=1j*0+4$alio"         "Z:a9>1|3=2f=1n*0+1$ "           
## [221] "Z:aa>1|3=2f=1o*0+1$p"            "Z:ab>2|3=2f=1p*0+2$ro"          
## [223] "Z:ad>3|3=2f=1r*0+3$zes"          "Z:ag>4|3=2f=1u*0+4$ua b"        
## [225] "Z:ak>3|3=2f=1y*0+3$est"          "Z:an>2|3=2f=21*0+2$e "          
## [227] "Z:ap>1|3=2f=23*0+1$a"            "Z:aq>3|3=2f=24*0+3$pli"         
## [229] "Z:at>2|3=2f=27*0+2$ka"           "Z:av>3|3=2f=29*0+3$zio"         
## [231] "Z:ay>2|3=2f=2c*0+2$rn"           "Z:b0<1|3=2f=2d-1$"              
## [233] "Z:az>2|3=2f=2d*0+2$en"           "Z:b1>2|3=2f=2f*0+2$ b"          
## [235] "Z:b3>2|3=2f=2h*0+2$ae"           "Z:b5>1|3=2f=2j*0+1$a"           
## [237] "Z:b6<2|3=2f=2i-2$"               "Z:b4>2|3=2f=2i*0+2$te"          
## [239] "Z:b6>1|3=2f=2k*0+1$a"            "Z:b7>2|3=2f=2l*0+2$n "          
## [241] "Z:b9>1|3=2f=2n*0+1$e"            "Z:ba>3|3=2f=2o*0+3$git"         
## [243] "Z:bd>2|3=2f=2r*0+2$ea"           "Z:bf>1|3=2f=2t*0+1$k"           
## [245] "Z:bg>1|3=2f=2u*0+1$]"            "Z:bh<1|8=83=3c-1$"              
## [247] "Z:bg>1|8=83=3c*0+1$."            "Z:bh>1|8=83=3d*0+1$ "           
## [249] "Z:bi>1|8=83=3e*0+1$D"            "Z:bj>1|8=83=3f*0+1$o"           
## [251] "Z:bk>1|8=83=3g*0+1$k"            "Z:bl>1|8=83=3h*0+1$u"           
## [253] "Z:bm>1|8=83=3i*0+1$m"            "Z:bn>3|8=83=3j*0+3$ent"         
## [255] "Z:bq>4|8=83=3m*0+4$u ho"         "Z:bu>1|8=83=3q*0+1$r"           
## [257] "Z:bv>1|8=83=3r*0+1$i"            "Z:bw>1|8=83=3s*0+1$ "           
## [259] "Z:bx<1|8=83=3s-1$"               "Z:bw<2|8=83=3q-2$"              
## [261] "Z:bu<5|8=83=3l-5$"               "Z:bp<7|8=83=3e-7$"              
## [263] "Z:bi<1|8=83=3d-1$"               "Z:bh<1|8=83=3c-1$"              
## [265] "Z:bg>1|8=83=3c*0+1$,"            "Z:bh>1|8=83=3d*0+1$ "           
## [267] "Z:bi>1|8=83=3e*0+1$e"            "Z:bj>2|8=83=3f*0+2$ta"          
## [269] "Z:bl>1|8=83=3h*0+1$ "            "Z:bm>1|8=83=3i*0+1$b"           
## [271] "Z:bn>3|8=83=3j*0+3$ali"          "Z:bq>2|8=83=3m*0+2$ab"          
## [273] "Z:bs>3|8=83=3o*0+3$ide"          "Z:bv>2|8=83=3r*0+2$a "          
## [275] "Z:bx>4|8=83=3t*0+4$sort"         "Z:c1>1|8=83=3x*0+1$u"           
## [277] "Z:c2>1|8=83=3y*0+1$z"            "Z:c3>1|8=83=3z*0+1$ "           
## [279] "Z:c4>2|8=83=40*0+2$ge"           "Z:c6>1|8=83=42*0+1$r"           
## [281] "Z:c7>1|8=83=43*0+1$o"            "Z:c8>1|8=83=44*0+1$,"           
## [283] "Z:c9>1|8=83=45*0+1$ "            "Z:ca>3|8=83=46*0+3$ana"         
## [285] "Z:cd>2|8=83=49*0+2$li"           "Z:cf>1|8=83=4b*0+1$s"           
## [287] "Z:cg>2|8=83=4c*0+2$at"           "Z:ci>1|8=83=4e*0+1$u"           
## [289] "Z:cj<2|8=83=4d-2$"               "Z:ch<2|8=83=4b-2$"              
## [291] "Z:cf>2|8=83=4b*0+2$za"           "Z:ch>2|8=83=4d*0+2$tu"          
## [293] "Z:cj>1|8=83=4f*0+1$."            "Z:ck>1|8=83=4g*0|1+1$\n"        
## [295] "Z:cl>1|9=ck*0|1+1$\n"
nun <- regexpr(pattern = "\\$", zer)

luze <- nchar(zer)

#Identifikatu aldaketa izan direan elementuak
substr(zer, nun+1, luze)
##   [1] "P"       "ro"      "z"       "es"      "ua"      " "       "ho"     
##   [8] "ne"      "l"       "a "      "la"      "bu"      "r"       "bi"     
##  [15] "l"       " "       "dai"     "tek"     "e"       ":"       "\n    " 
##  [22] "\n    "  "1"       "."       " "       "E"       "the"     "rp"     
##  [29] "ad"      " "       "iz"      "ene"     "ko"      " "       "a"      
##  [36] "p"       ""        "w"       "e"       "b"       " ap"     "li"     
##  [43] "ka"      "zio"     "a"       " "       "z"       "ab"      "al"     
##  [50] "d"       "u"       " "       "\n    "  "2"       ". "      "H"      
##  [57] "el"      "b"       "ide"     " ho"     "ri "     "g"       "or"     
##  [64] "de"      " "       "("       "?"       ")"       "\n    "  "3"      
##  [71] "."       " "       "\n    "  "2"       "."       " "       "D"      
##  [78] "ok"      "ume"     "ntu "    "ba"      "t "      "sort"    "u"      
##  [85] "."       ""        "3"       ""        "4"       " "       "I"      
##  [92] "dat"     "zi"      " "       "d"       "oku"     "men"     "t"      
##  [99] "ua"      "\n    "  "5"       "."       " "       "W"       "e"      
## [106] "b"       " "       "h"       "el"      "bi"      "d"       "ea"     
## [113] " "       "i"       "ke"      "rla"     "ria"     "ri "     "p"      
## [120] "asa"     "tu"      "\n    "  "\n    "  ""        "I"       "ker"    
## [127] "la"      "ria"     "k"       ", "      "ord"     "uan"     ","      
## [134] " "       "w"       "eb"      " "       "h"       "el"      "bi"     
## [141] "de "     "hor"     "i "      "duel"    "a"       " "       "i"      
## [148] "da"      "t"       "zi"      "t"       "ako"     "a "      "ze"     
## [155] "in "     "idat"    ""        "z"       "k"       "eta"     " "      
## [162] "pr"      "o"       "ze"      "su "     "os"      "o"       "a"      
## [169] " "       "gor"     "det"     "zen "    "due"     "n "      "d"      
## [176] "ok"      "ume"     "n"       "tu"      "a "      "j"       "ai"     
## [183] "ts "     "de"      "za"      "ke"      " "       "w"       "eb"     
## [190] " "       "o"       "r"       "re"      "tan"     "*"       "*"      
## [197] "*"       "*"       " "       "^"       "["       "e"       "z "     
## [204] "b"       "ait"     "a"       " "       "balioga" "rri"     "a"      
## [211] ""        ""        ""        ""        ""        "u"       " "      
## [218] "b"       "alio"    " "       "p"       "ro"      "zes"     "ua b"   
## [225] "est"     "e "      "a"       "pli"     "ka"      "zio"     "rn"     
## [232] ""        "en"      " b"      "ae"      "a"       ""        "te"     
## [239] "a"       "n "      "e"       "git"     "ea"      "k"       "]"      
## [246] ""        "."       " "       "D"       "o"       "k"       "u"      
## [253] "m"       "ent"     "u ho"    "r"       "i"       " "       ""       
## [260] ""        ""        ""        ""        ""        ","       " "      
## [267] "e"       "ta"      " "       "b"       "ali"     "ab"      "ide"    
## [274] "a "      "sort"    "u"       "z"       " "       "ge"      "r"      
## [281] "o"       ","       " "       "ana"     "li"      "s"       "at"     
## [288] "u"       ""        ""        "za"      "tu"      "."       "\n"     
## [295] "\n"
# Pertsonentzat irakurgarri
cat(substr(zer, nun+1, luze), sep = "")
## Prozesua honela laburbil daiteke:
##     
##     1. Etherpad izeneko apweb aplikazioa zabaldu 
##     2. Helbide hori gorde (?)
##     3. 
##     2. Dokumentu bat sortu.34 Idatzi dokumentua
##     5. Web helbidea ikerlariari pasatu
##     
##     Ikerlariak, orduan, web helbide hori duela idatzitakoa zein idatzketa prozesu osoa gordetzen duen dokumentua jaits dezake web orretan**** ^[ez baita baliogarriau balio prozesua beste aplikaziornen baeatean egiteak]. Dokumentu hori , eta baliabidea sortuz gero, analisatuzatu.

Berez, testuak itxura hau du, ordea:

## Prozesua honela laburbil daiteke:
##     
##     1. Etherpad izeneko web aplikazioa zabaldu 
##     2. Dokumentu bat sortu **web orretan** ^[ez baitu balio prozesua beste aplikazioren batean egiteak].
##     3. Helbide hori gorde (?)
##     4. Idatzi dokumentua
##     5. Web helbidea ikerlariari pasatu
##     
## Ikerlariak, orduan, web helbide hori duela idatzitakoa zein idazketa prozesu osoa gordetzen duen dokumentua jaits dezake, eta baliabidea sortuz gero, analizatu.

Lortzekoa

Aurreko sriptarekin eta taulako adibidearekin erakutsi nahi izan da badagoela informazioa aztertzeko bidea; baina idazketa linearrak aldaketak identifikatzen dituen moduan, kodearen azterketa osoak datu gehiago ere erakusten utzi behar lukete:

  • Ezabatutakoa
  • Karakteren kokapena testu osoan (eman dezagun testuaren zati bat toki batetik bestera mugitzen duela informatzaileak)
  • Formatu aldaketak. Orain ez dute ematen garrantzitsuak izango direnik, baina identifikatzen jakin behar da, informazio horrek ez distraitzeko 4.

Jakina, berreskuratutako testuak ez du lotu behar, soilik, behinik behin, idazlearen helburu testura, prozesua erakusteko multzoak ere bistaratu behar lituzke.

Lorpenok eskuratuz gero, erreminta honek lagundu lezake informatzaile askoren datuak eskuratzen. Era bateko edo besteko portaeretan fokua jarrita, portaerak identifikatzen eta sailkatzen ere lagunduko luke: berridazketak, \(x\) neurriko zuzenketak identifikatzen, esaldi barruko zalantza uneak identifikatzea eta abar luzea.

Idazketa jarduna aztertzeko tresnak ikerketa elementu askotarako bidea zabalduko luke, ikuspegi kuantitatibotik.


  1. https://eu.wikipedia.org/wiki/Etherpad

  2. ez baitu balio prozesua beste aplikazioren batean egiteak

  3. Azterketan jarraitzeko atala ere bada huts egitearen gainekoa

  4. Beste aukera bat izan daiteke Etherpadaren beste bertsio bat egitea testu formatu aldaketarik uzten ez duena