- Lähtökohta
- Kotihakemistossani on
bin
-alihakemisto ja se on määritelty komentojenhakupolkujen (PATH
-muuttuja) joukkoon komentoriviprofiilissani.Olen muuntanut kuvamuotoisen tekstityksen tekstimuotoiseksi
Avidemuxilla
. SRT-muotoinen tekstitystiedosto on tallennettu kotihakemistooni tiedostonimellätekstitys.srt
. Tekstitys sisältää muunnoksen jäljiltä joitain toistuvia virheitä: rivien alussa on välilyöntejä, pikku-l ja iso I-kirjain ovat paikoin sekoittuneet, joidenkin numeroiden välissä on välilyöntejä vaikka numerot ovat osa samaa lukua, ja lainausmerkin (“) tilalla on kaksi heittopilkkua (‘ ‘). - Ongelma
- Virheitä on niin paljon, että niiden korjaaminen käsityönä
Tekstieditorissa
olisi liian työlästä. Haluan korjata virheet tarkoitukseen soveltuvilla komentojonoilla. - Ratkaisu
- Luon seuraavassa listatut komentojonotiedostot, ja tallennan ne kotihakemistossani olevaan bin-alihakemistoon.
#!/bin/sed -f s/^\ *//
Lataa
leading_blank.sed
(24 tavun komentojonotiedosto)#!/usr/bin/gawk -f BEGIN { FS = "" } { previous = "" for (i = 1; i <= NF; i = i + 1) { if ($i ~ /I/) { if (previous ~ /[[:lower:]]/) { printf("l") previous = "l" } else if (i == 1) { printf("%s",$i) previous = $i } else if ((previous ~ /-/) && (i == 2)) { printf("%s",$i) previous = $i } else if (i < NF) { for (j = 1; i + j < NF; j = j + 1) { if ($(i+j) ~ /[[ \n]]/) { j = NF break } else if ($(i+j) ~ /[[:lower:]]/) { break } } if (i + j < NF) { printf("l") previous = "l" } else { printf("%s",$i) previous = $i } } else { printf("%s",$i) previous = $i } } else { printf("%s",$i) previous = $i } } printf("\n") }
Lataa
mixed_verticals.gawk
(756 tavun komentojonotiedosto)#!/bin/sed -f s/\([[:digit:]]\) \([[:digit:]]\)/\1\2/g
Lataa
blank_between_numbers.sed
(56 tavun komentojonotiedosto)#!/bin/sed -f s/''/"/g
Lataa
double_single_quotes.sed
(24 tavun komentojonotiedosto)Tämän jälkeen teen komentojonotiedostoista suoritettavia seuraavalla komennolla:
cd ~/bin && chmod +x blank_between_numbers.sed leading_blank.sed \ mixed_verticals.gawk double_single_quotes.sed
Lopuksi käytän kaikkia komentojonoja tekstitystiedostoon sen korjaamiseksi, seuraavasti:
cat ~/tekstitys.srt \ | leading_blank.sed | mixed_verticals.gawk \ | blank_between_numbers.sed | double_single_quotes.sed \ > ~/korjattu-tekstitys.txt
Tämän jälkeen kotihakemistossani oleva
korjattu-tekstitys.txt
-niminen tiedosto sisältää tekstityksen, jossa alkuperäisessä olleet virheet on korjattu.
Comments
4 responses to “[Ratkaisu] Tekstintunnistuksella tuotetun tekstitystiedoston virheiden korjaaminen”
Päivitin mixed_verticals.gawk -komentojonoa: se jättää nyt koskemattomiksi sanan alussa olevat isot I-kirjaimet myös muualla kuin rivin alussa.
Palautin aiemman version mixed_verticals.gawk -komentojonosta, eli sanan alussa olevat isot I-kirjaimet muunnetaan l-kirjaimiksi taas muualla kuin rivin alussa. Tämä on kahdesta vaihtoehdosta se toimivampi, sillä vaikka sanan alussa olevien isojen I-kirjainten korjaaminen ei toimikaan I-kirjaimella alkavien erisnimien kanssa (esimerkiksi Irenestä tulee lrene), sellaiset tuntuvat olevan l:llä alkavia yleisnimiä harvinaisempia.
Päivitin jälleen mixed_verticals.gawk -komentojonoa. Nyt se käsittelee hiukan paremmin Ill-alkuisia sanoja.
Jälleen päivitys mixed_verticals.gawk -komentojonolle: vuorosanojen alussa olevat I-kirjaimet jätetään nyt koskemattomiksi.