Linguistische Datenverarbeitung mit python

1. Allgemeines

python ist eine multiparadigmatische Programmiersprache, die sich gut für die Verarbeitung von Sprachdaten eignet und aufgrund der übersichtlichen, gut lesbaren Syntax einfach zu erlernen ist; zudem gibt es viele computerlinguistische Module, die auf python basieren (z. B. NLTK, scikit-learn).

2. Anlegen python-Skript

  • Abspeichern Datei mit Endung .py (hier: „skript.py“)
  • Deklaration Kodierung (# = Kommentar)
  • Anweisung: Ausgabe ‚Hallo Welt‘
#!/usr/bin/env python
# -*- coding: utf-8 -*-

print 'Hallo Welt'

3. Aufruf python-Skript (Konsole)

 $ python skript.py

4. Variablen

text = 'nochmal Hallo Welt'
print text

5. Datentypen

https://www.hdm-stuttgart.de/~maucher/Python/html/Datentypen.html

5.1. Numerale

zahl = 1 
zahl = zahl + 1
print zahl

5.2. Strings

text = 'Hallo Welt'

5.3. Listen / Arrays

wortliste = ['Hallo', 'Welt']
print wortliste

6. Textverarbeitung

6.1. Stringmanipulation (konkatenieren, replace)

text = 'Hallo.\n' #Redeklaration Variable text von oben
text = text + ' ' + 'Welt     ' #Stringkonkatenation
text = text.replace('\n','').strip() #Ersetzung newline und Tilgung Whitespaces
print text

6.2. Arbeiten mit regulären Ausdrücken

import re
text = re.sub('([\.,:;!\?\-\'\"»«])',r' \1 ',text) #back referencing \1 = geklammerter Ausdruck
#Trennung Satzzeichen von Wörtern
print text

6.3. Tokenisierung (split)

  • Die split()-Funktion zerlegt einen String (je nach angegebenem Trennersymbol) und erzeugt eine Liste (hier: Wortliste)
tokens = text.split() #erzeugt Wortliste (Trennersymbol: Whitespace)
#split ohne FS-Angabe entspricht awk-Standard-FS: /\s+/
print tokens

7. Schleifen

  • Um die Elemente der Wortliste auszulesen wird eine Schliefenstruktur (for-Schleife) verwendet, die die Elemente der Liste (tokens) durchgeht und als token bereitstellt zur Verarbeitung (hier: Ausgabe)
 for token in tokens:
    #Einrückung / indent: Strukturierung von Anweisungen, Deklaration von Blöcken
    print token
    #Ausgabe Vertikaltext

8. Konditionale

counter = 1
for token in tokens:
    if counter < 2:
        print str(counter)+'\t'+token
    #Ausgabe des ersten Wortes
    counter = counter + 1

9. Dateiverarbeitung

9.1. Öffnen und zeilenweises Einlesen

file = open(filename)
for line in file:
    #do_something
file.close()

9.2. Einlesen und Parsen

s. XML-Extraktion mit python

import xml.etree.ElementTree as etree

file = open(filename)

root = etree.parse(file).getroot()

file.close()

9.3. Schreiben

fileout = open(fileoutname, 'w')

output = 'Hallo Welt'

fileout.write(output)

fileout.close()

10. Kodierung – Arbeiten mit Unicode

  • Differenz python 2 – python 3: Verarbeitung als: Bytecode vs. Unicode
  • Lösung python 2: normales Einlesen und Bearbeiten, vor Ausgabe: Kodieren als UTF-8:
output = output.encode('utf-8')
print(output)
fileout.write(output)

Schreibe einen Kommentar