DifHP Sammenligningsprogram

DifHP

Program til sammenligning af Pontoppidantekster

DifHP er et DOS-program til sammenligning af tekster i HTML-format. Programmet er specielt udviklet til sammenligning af forskellige udgaver af Henrik Pontoppidans roman DET FORJÆTTEDE LAND, 1891-1918.

Programmet

Programmet læser to filer, kaldet denne og hin. Filerne formodes kodet i HTML som beskrevet for Pontoppidanteksterne udgivet af Det Danske Sprog- og Litteraturselskab og Gyldendal 1997. Det er i det følgende nøje beskrevet i hvilket mål denne kodning påvirker sammenligningen; herudover behandles inddata som ganske ordinære tekstfiler.

Inddatafilernes hoved, dvs. al tekst forud for et evt. <BODY> HTML-mærke indgår ikke i sammenligningen, men kopieres direkte til uddatafilen fra en af inddatafilerne, afhængig af tilvalg, se senere. HTML-mærkerne <A ...>, </A> og <IMG ... > ignoreres og optræder ikke i uddata, idet evt. relative referencer herfra typisk ikke vil være de samme relativt til uddatafilen. Det samme gælder tegnet °, som henviser til noter. Sidetal, dvs. cifrene 0-9, tegnet |, der omgiver sidetal samt tegnet ¹, der henviser til tekstrettelser, ignoreres hvad sammenligningen angår, men gengives i uddata, afhængig af tilvalg.

Algoritme

Teksten fra de to inddatafiler sammenlignes ordvis, idet et ord er teksten mellem to mellemrum. Mellemrum omfatter i denne forbindelse egentlige mellemrum (blanktegn), tabulatortegn, ny linie, ny side eller filslut. Ord omfatter altså også evt. HTML-mærker. Ord fra to inddatafiler erklæres ens når de med ovenstående forbehold for ignorerede dele indeholder de samme tegn i samme rækkefølge.

Efter hvert par af ens ord søges påny efter par af ens ord. Her vil det par af ens ord blive foretrukket som har den korteste sammenlagte afstand i de to tekster til det forrige par. Således vil et par af ens ord der i begge tekster står umiddelbart efter et par af ens ord have afstanden 0. Hvis et ord er indføjet i den ene tekst, hvorefter næste ord er det samme som i den anden tekst, vil dette ens par have afstanden 1 til det forrige par. Er et ord udskiftet med et andet, hvorefter atter følger det samme ord i begge filer, vil dette ens par have afstanden 2 til det forrige ens par, og så fremdeles.

For at overfladiske ligheder mellem to i øvrigt meget forskellige tekster ikke skal forstyrre søgningen efter egentlig, intenderet ens tekst, er ovenstående krav skærpet: Hvis det umiddelbart følgende par af ord ikke også er ens, vil søgningen efter et foretrukkent par fortsætte i de to tekster. Det samme vil ske dersom ordet eller det efterfølgende findes i stoplisten. Denne er en liste af ikke-signifikante ord, som i de omhandlede tekster er så hyppige at deres forekomst ikke kan antages at signalere en egentlig, intenderet lighed. Listen er fremkommet eksperimentelt gennem arbejdet med netop de udgivne Pontoppidantekster, således at når sammenligningsalgoritmen viste en lighed, som ikke umiddelbart kunne anerkendes som relevant af den menneskelige læser, og når det var evident at en bedre lighed kunne opnås ved at man strakte søgningen længere frem i den ene eller begge tekster, blev de ord som udgjorde den fundne, falske, lighed inkluderet i listen.

Brugervejledning

DOS

Programmet kaldes fra DOS som følger, idet de inklammede elementer kan udelades, og denne og hin står for to filer indeholdende de sammenlignelige tekster.

difhp denne hin [/q] [/+] [/-] [resultat]

resultat står for en evt. uddatafil. Specificeres denne ikke, udskrives resultatet af sammenligningen på løbende uddatamedium, sædvanligvis skærmen. Programmet udskriver endvidere visse detaljer om afviklingen medmindre tilvalgskoden q er specificeret efter en skråstreg.

I uddata forekommer de ens passager fra de to inddatafiler foruden, hvis tilvalget /+ er specificeret, den afvigende tekst fra denne fil i blå skrift, omgivet af kantparenteser [] og, hvis tilvalget /- er specificeret, den afvigende tekst fra hin fil i rød skrift, omgivet af arkulader {}. De to afvigelser svarer parvis nøje til hinanden, og er der tale om en ren tilføjelse af den ene type og den anden altså er tom, vil indføjelsen være markeret med en cirkumfleks som indvisningstegn: {^}. Specificeres begge tilvalg udskrives begge filers afvigende tekst som anført. HTML-hovedet og sidetallene medtages i uddata fra denne fil, eller, hvis der udelukkende er specificeret /-, fra hin.

Hvis ingen tilvalg specificeres udskrives den invariante tekst ikke. I stedet produceres en egentlig variantliste, idet den variante tekst fra denne opstilles i en liste sammen med tilhørende variant tekst fra hin. Dersom den ene af teksterne herved udarter og bliver tom, tilføjes det efterfølgende invariante ord. I listen er anført side og alineahenvisninger til denne fil.

CGI

For at kunne anvende DifHP sammen med en HTML-fremviser er der fremstillet en forsats, et såkaldt Common Gateway Interface. Ved hjælp af fremviseren udfyldes en HTML-formular, som afsendes til forsatsprogrammet DifCGI. Formularen afkodes og DifHP kaldes med relevante parametre som anvist ovenfor.

Formularen kan i sin simpleste form udtrykkes i HTML:

<FORM METHOD=POST ACTION="../exe/dif/difcgi.exe">
<INPUT TYPE=TEXT VALUE="1udg/M/I/02.htm" NAME="denne">
<INPUT TYPE=TEXT VALUE="2udg/M/I/02.htm" NAME="hin">
<SELECT NAME="opt">
<OPTION VALUE="2" SELECTED Vis begge tekster i dobbeltspalte (.fra,.til)>
<OPTION VALUE="1" Vis ændringerne som én enkeltspaltet tekst (.dif)>
<OPTION VALUE="x" Vis liste med varianter (.var)>
</SELECT>
<INPUT TYPE=submit VALUE=OK>
</FORM>

Ovenstående formular vil give anledning til at en fil med flg. indhold afgives til DifCGI

denne=1udg%2FM%2FI%2F01.htm&hin=2udg%2FM%2FI%2F01.htm&opt=2&

Skråstreger i filnavne er hexadecimalt kodede efter et procenttegn: %. De enkelte felters indhold adskilles med en ampersand: &. Formularen tilbyder tre muligheder for sammenligning, svarende til værdien i feltet ved navn opt:

  • 2 DifHP kaldes to gange med hhv. tilvalg /+ og /-. De to resultatfiler vises i en dobbeltspaltet HTML-ramme
  • 1 DifHP kaldes én gang med begge tilvalg.
  • x DifHP kaldes uden tilvalg