SommerSemester2011/Korpusbearbeitung in der Computerlinguistik/Themen/Übungs-Aufgaben/loesungen/loesung_2a 1. 2. 3. gunzip -c 2146.txt.gz | head -20 4. gunzip *.txt.gz 5. file *.txt recode l1..u8 xy.txt 6. cat *.txt | tr -d [:punct:] 7. cat *.txt | tr -d [:punct][:cntrl:] | tr '[:space:]' '\n' | sort -f | uniq -ic | sort -rn 8. cat *.txt | tr -s '[:punct:]' ' '| tr -s '[:space:]' '\n' > tok.txt tail -n +2 tok.txt | paste -d" " tok.txt - > bigramm.txt tail -n +3 tok.txt | paste -d" " bigramm.txt - > trigramm.txt trigramm.txt| sort | uniq -c | sort -nr | less | head - 20 (man kann die Befehle sicher auch hintereinanderschalten, aber der Unirechner schafft das nicht mehr, jedenfalls nicht in einer endlichen Zeit... oder ich hab was falsch gemacht) 9. 2) find /home/proj/korpus_unix/data/de/gutenberg.org/txt/ -regextype posix-extended -regex ".*/(2[0-9]{3}|3000)\.txt\.gz" -exec cp '{}' . ';' 3) zcat 2146.txt.gz | head -20 oder gunzip -c 2146.txt.gz | head -20 5) Laut file -i * sind alle Dateien bereits UTF-8 6) cat *.txt | tr -d [:punct:] > erg.txt 7) cat *.txt | tr -d "[:punct:][:cntrl:]" | tr '[:space:]' '\n' > tokens.txt 8) Analog zur Bigrammerstellung im Skript {{{ #!/bin/bash echo "Erstelle Tokenliste" cat *.txt | tr -s '[:punct:]' ' '| tr -s '[:space:]' '\n' > tokens.tmp echo "Erstelle Bigrammliste" tail -n +2 tokens.tmp | paste -d " " tokens.tmp - > bigramm.tmp echo "Erstelle Trigrammliste" tail -n +3 tokens.tmp | paste -d" " bigramm.tmp - > trigramm.tmp echo "Sortiere Trigrammliste" cat trigramm.tmp | sort | uniq -c | sort -nr | less | head -20 rm -Rf *.tmp }}} 9) {{{ cat trigramm.tmp | sort | uniq -c | sort -nr | less | head -1 | # Das häufigste Trigramm finden awk '{ print $2 " " $3 " " $4} | # Die Häufigkeit ignorieren und nur das Trigramm verwenden grep -H -n -f - *.txt # Von grep die Datei der Fundstelle ausgeben lassen (-H), # die Zeilennumer ausgeben lassen (-n) # und das Suchmuster (unser Trigramm) von der # Standardeingabe lesen (-f -) (-f ist aus einer Datei lesen # und - ist eine Abkürzung für die Standardeingabe) }}}