Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python: Ohjelmisto kielentarkastuksen tarpeisiin

kayttaja-14784 [29.04.2019 18:53:43]

#

1. Johdanto

Teen kielentarkastusta englanninkielisille teksteille Word:n Track Changes -toiminnon avulla Word asiakirjoissa. Toiminto värjää korjaukset tietyllä värillä tekstiin, jotta kirjoittaja näkee tehdyt korjaukset tekstistä selkeästi.

2. Ohjelmisto kielentarkastusta varten

Kirjoitin ohjelmiston Pythonilla, joka antaa yleisimpien virheiden, esim. artikkelivirheet (a, an, the) ja pilkutus, frekvenssin ja distribuution omassa ikkunassa, esim. text widget. Sovelluksen tarkoitus on antaa tietoa kirjoittajan kielitaidon puutteista virheiden frekvenssin ja niiden distribuution avulla, joista jälkimmäinen tulee edellisen sivutuotteena.

Ohessa erään 5-sivuisen artikkelin tarkastustulokset:

20 ,
9 ?
22 a
1 an
23 the

Kuten näkyy, eniten puutteita on pilkutuksessa (tekstiin lisättyjä pilkkuja 20 kpl) ja artikkeleiden käytössä. Jonkin verran on myös epäselviä virkkeitä, jotka osoitetaan tekstissä kysymysmerkillä. Ohjelman ikkuna on tässä versiossa Listbox: ensin annetaan virheen frekvenssi ja sitten itse virhetyyppi, yleensä tekstiin lisätty sana tai merkki.

3. Ohjelman toiminta

Kirjoittamassani ohjelmassa pitää tekstiin lisätyt sanat tai merkit lisätä/kirjoittaa toiseen kertaan erikseen ohjelman entry-ikkunaan. Eli korjaukset kirjoitetaan kahteen kertaan ensin tekstiin ja sitten frekvenssinlasku ohjelmaan.

Ohjelman tietorakenne on sanakirja (yllätys yllätys), jossa avaimena on merkki tai sana ja sen lähtöarvona eli frekvenssinä 0. Ohjelma päivittää automaattisesti kunkin ohjelmassa tarkistetun sanan tai merkin frekvenssin sanakirjarakenteeseen ja printtaa sanakirjan ne avaimet, joiden frekvenssi on muuttunut, ohjelmaikkunaan kuten yllä esimerkissä (järjestys voi olla myös avain-arvo eikä arvo-avain kuten esimerkissä).

Esim. y= {’,’ : 0, ’a’: 0, ’an’: 0, ’the’:0, ’?’: 0, ’however’: 0, etc.}

4. Ohjelman jatkokehitys

Voiko ohjelmaa kehittää edelleen niin, että se toimisi taustalla ja päivittäisi virheiden frekvenssiä itsekseen tarkistamalla aina kun teen tekstiin muutoksen, onko merkki tai tekstiin lisätty sana ohjelman sanakirjassa ja jos on, niin päivittää sen frekvenssin itse kuten yllä kuvattiin? Toimiva koodi itse frekvenssin päivitykseen on tehty for luupin avulla ja testattu toimivaksi. Ohjelmassa on myös jo käyttöliittymäkin.

Tekstin yleisin korjaus on juuri lisäys, muita ovat poisto, esim. väärässä kohtaa oleva pilkku tai jokin muutos virkkeen sanamuodossa, esim. epämääräisen artikkelin väärä muoto, esim. a>an, joka määräytyy sanan ääntöasun, ei kirjoitusasun perusteella.

Eli käytännössä ohjelmaan pitäisi saada tehtyä/lisättyä korjattuun tekstiin tehtyjen korjausten/muutosten (ensimmäisessä vaiheessa ehkä vain lisäysten) automaattinen monitorointitoiminto, joiden frekvenssin taustalla oleva ohjelma sitten päivittäisi itse. Ohjelman tulosikkunasta (tex widget) pitäisi myös voida kopioida lopullinen frekvenssitaulukko kaikille löydetyille virheille suoraan.

Metabolix [29.04.2019 20:42:45]

#

Missä tekstiä muokataan? Jos teksti on jossain Python-ohjelmassa, sitä voi varmasti seurata. Sen sijaan toiseen ohjelmaan kirjoitettavan tekstin monitorointi voi osoittautua erittäin hankalaksi.

Miten ohjelma voi tunnista korjauksen? Jos korjauksen alku ja loppu on erikseen merkitty jollain muusta tekstistä erottuvalla, se löytyy helposti. Jos taas korjaus pitää tunnistaa vertaamalla nykyistä ja vanhaa tekstiä, tietenkin jostain pitää saada ensin ohjelmaan alkuperäinen teksti, minkä jälkeen pitää käydä tekstit läpi merkki tai sana kerrallaan ja tunnistaa erot. Jos tekstissä voi olla monta korjausta samassa kohdassa, pitää vielä jotenkin osata erottaa niiden väliset rajat.

Milloin korjaus on valmis? Jos korjaukseksi on kirjoitettu ”a”, mistä ohjelma tietää, onko lopulinen korjaus ”a” vai onko tulossa sittenkin ”an”? Tietenkin ohjelma voi antaa tulokset välitilanteen mukaan, mutta silloin pitää muistaa, että ruudulla voi näkyä välillä väärä tulos.

kayttaja-14784 [29.04.2019 21:04:57]

#

Tervehdys ja kiitos kommenteistasi Metabolix,

Alustavana ajatuksena on se, että tarkistettava teksti tarkistetaan ja korjaukset luetaan siitä aina Word-asiakirjana Word:n Track Changes -toiminnon avulla, joka värjää/korostaa korjaukset jollakin värillä ja korjaukset luettaisiin siitä Voisiko tätä tekstin eri väriä käyttää tunnistuskriteerinä?

Teksti lähetetään minulle aina korjaamattomana ja teen siihen korjaukset ja kirjoittaja käy ne läpi ja siirtää ne tekstin lopulliseen versioon itse.

Korjaukset on kirjoitettu/lisätty normaalisti tekstiin, esim. method> a method, normaaleilla sanaväleillä, jos sanasta method puttuisi artikkeli ja korjaus näkyy esim. punaisella värillä korostettuna.

Eli käytännössä tunnistusalgoritmin ensimmäinen tieto olisi se, että nyt tekstiin kirjoitetaan/lisätään jotain, esim. pilkku plus mahdollinen sanan tai merkin väritunnistus, jota verrataan välittömästi ohjelman sanastotiedostoon ja sen merkkeihin ja jos merkki/sana on siellä, niin sen frekvenssi/arvo päivittyy laskurilla +1 ja se tulostetaan ohjelmaikkunaan. Tämä siis toimii jo erillisenä ohjelmana kun lisään/syötän korjaukset yksitellen ohjelmaan.

Sinulla näkyy olevan yhteystiedoissasi henkilökohtainen sähköpostiosoite, johon voisin lähettää luvallasi korjatun esimerkkitekstin, jossa näkyy korjaukset ja miten ne tehdään Word:n Track Changes -toiminnon avulla, jos tämä on tarpeen. Voin deletoida tekijätiedot, vaikka sinänsä tieteelliset tekstit ovat julkisia. Kirjoittaja ei ehkä kuitenkaan halua toisen näkevän sitä paljonko korjauksia tuli hänen tekstiinsä.

Korjaus on valmis silloin kun sen perään kirjoitetaan välilyönti kuten normaalistikin tekstiä kirjoitettaessa.

Normidiplomityöhön tulee keskimäärin korjauksia 400-600, väikkäreihin 600-1000 kappaletta, joista vain osa kirjattaisiin korjauksiksi sen mukaan löytyykö korjaus myös sanakirjasta.

kayttaja-14784 [30.04.2019 09:31:44]

#

Tervehdys,

näyttää siltä, että uusimmassa Word:n versiossa korjaukset näkyvät punaisena ja ne on alleviivattu myös. Korjaus kirjoitetaan tekstiin kuten sanat ja välimerkit kirjoitetaan tekstiin normaalisikin eli merkki/sana ja sen väliin tyhjä väli.

Kokeilin kopioida pätkää korjatusta tekstistä toiseen asiakirjaan, mutta korjausten väri näkyy häviävän eivätkä ne näy kuten alkutekstissä. Korjausten tekemistä voi kokeilla itsekin Word:llä.

Grez [30.04.2019 09:50:20]

#

Nähdäkseni tuollaisen ohjelman tekeminen olisi suhteellisen triviaalia Wordin skriptauskielellä (joka on siis VBA).

Jos taas haluaisin tehdä vastaavan ohjelman Pythonilla, niin toteuttaisin sen varmaankin niin, että sille annettaisiin alkuperäinen ja korjattu versio ja se laskisi erot siitä. Kommunikointi Wordin kanssa vaan tekisi asiasta mutkikkaamman.

Tuosta kun sanoit, että korjausmerkinnät ei siirry kopioidessa, niin sehän on ihan luonnollista; Wordin muutostenseuranta koskee muutoksia asiakirjaan. Jos kopioit tekstiä asiakirjasta toiseen, niin silloin muutos kohdeasiakirjassa on sen koko sen kopioidun tekstin lisääminen.

kayttaja-14784 [30.04.2019 11:10:23]

#

Tervehdys,

se mitä ohjelmalta haluaisin saada ulos, riippumatta sen toteutuksesta, olisi tämän kaltainen tulos ohjelman sanakirjassa oleville virhetyypeille:

Sanan , frekvenssi on 6 (’sana’ tässä on pilkku)
Sanan a frekvenssi on 3
Sanan an frekvenssi on 1
Sanan however frekvenssi on 2
Sanan too frekvenssi on 1
Sanan for example frekvenssi on 1
Sanan indeed frekvenssi on 1

Tämä on Python ohjelman Idle:ssä toimivan version antama tulos. Ajatus oli se, että juuri tällainen numeerinen palaute tarkistettujen virheiden määrästä ja distribuutiosta osoittaa kirjoittajalle konkreettisesti, missä puutteita on tai ei ole hänen kielitaidossaan testattujen piirteiden osalta, esim. artikkelin käyttö, pilkutus, diskurssimarkkerit, etc.

Word:ssa saa listan esiin kaikista asiakirjaan tehdyistä korjauksista, mutta ei yksittäisen korjauksen frekvenssiä, omassa ikkunassaan, jossa annetaan niiden kokonaismäärä myös. Korjauksia ei voi myöskään kopioida.

Toki tarkistettavasta tekstistä voi tehdä eri versiot, alkuperäinen ja tarkistettu versio, ja verrata kahta asiakirjaa keskenään. Kaikki korjaukset eivät kuitenkaan ole kovin relevantteja kielitaidon puutteiden osalta, niitä voi esiintyä vain 1 kappale koko tekstissä. Eli tässäkin vaihtoehdossa pitäisi kai käyttää jotain sanalistaa huomioitaville virheille. Nykyinen lista on noin 200 sanaa ja fraasia kuten yllä esimerkissä.

Vastaus

Aihe on lukittu, joten siihen ei voi vastata.

Tietoa sivustosta