ich hänge derweil an einem Tutorial fest, für Computerlinguistik.
Das Programgerüst sieht wie folgt aus:
Code: Alles auswählen
# coding=utf-8
"""
Tagging-Format umwandeln
Das Korpus aus dem vorliegenden
Format: Token\tTag.Morphologie\tLemma\n
mit einem Token pro Zeile und Leerzeilen
als Satzgrenzenmarkierung
in folgendes Format umwandeln:
Token1/Tag2 Token2/Tag2 ...
mit einem Satz pro Zeile, wobei das
Wortarten-Tag durch einen Schrägstrich
an das jeweilige Token angefügt ist
und die zusätzlichen morphologischen
Merkmale und die Lemmata nicht mit ausgegeben
werden.
"""
korpus = u"""Rund\tADJD.Pos\tRund
40\tCARD\t40
Prozent\tN.Reg.*2.*3.Neut\tProzent
aller\tPRO.Indef.Attr.-3.Gen.Pl.Neut\talle
staatlichen\tADJA.Pos.Gen.Pl.Neut\tstaatlich
Gelder\tN.Reg.Gen.Pl.Neut\tGeld
für\tAPPR.Acc\tfür
Verkehr\tN.Reg.Acc.Sg.Masc\tVerkehr
,\tSYM.Pun.Comma\t,
Gesundheit\tN.Reg.Acc.Sg.Fem\tGesundheit
und\tCONJ.Coord.-2\tund
Soziales\tN.Reg.Acc.Sg.Neut\tSoziale
würden\tVFIN.Aux.3.Pl.Past.Subj\twerden
unterschlagen\tVPP.Full.Psp\tunterschlagen
.\tSYM.Pun.Sent\t.
Die\tART.Def.Nom.Pl.Masc\tdie
dadurch\tPROADV.Dem\tdadurch
verursachten\tADJA.Pos.Nom.Pl.Masc\tverursacht
Schäden\tN.Reg.Nom.Pl.Masc\tSchaden
beliefen\tVFIN.Full.3.Pl.Past.Ind\tbelaufen
sich\tPRO.Refl.Subst.3.Acc.Pl.*6\tsie
auf\tAPPR.Auf\tauf
rund\tADJD.Pos\trund
20\tCARD\t20
Milliarden\tN.Reg.Acc.Pl.Fem\tMilliarde
Dollar\tN.Reg.*2.*3.Masc\tDollar
im\tAPPRART.Dat.Sg.Neut\tin
Jahr\tN.Reg.Dat.Sg.Neut\tJahr
.\tSYM.Pun.Sent\t.
Ein\tART.Indef.Nom.Sg.Masc\teine
Teil\tN.Reg.Nom.Sg.Masc\tTeil
der\tART.Def.Gen.Pl.Neut\tdie
unterschlagenen\tADJA.Pos.Gen.Pl.Neut\tunterschlagen
Gelder\tN.Reg.Gen.Pl.Neut\tGeld
werde\tVFIN.Aux.3.Sg.Pres.Subj\twerden
von\tAPPR.Dat\tvon
der\tART.Def.Dat.Sg.Fem\tdie
Verwaltungsmafia\tN.Reg.Dat.Sg.Fem\t<unknown>
ins\tAPPRART.Acc.Sg.Neut\tin
Ausland\tN.Reg.Acc.Sg.Neut\tAusland
weitergeleitet\tVPP.Full.Psp\tweitergeleiten|weiterleiten
.\tSYM.Pun.Sent\t."""
# Teilen Sie das Ausgangskorpus an Zeilenumbrüchen in
# einzelne Zeilen auf.
# Schauen Sie sich nacheinander jede Zeile an
# Falls die Zeile leer ist, geben Sie einen Zeilenumbruch aus
# Falls die Zeile nicht leer ist
# Teilen Sie jede Zeile an den Tab-Stops in Token, Tag und Lemma auf
# Teilen Sie das Tag am Punkt in einzelne Bestandteile auf
# Fügen Sie den ersten Teil des Tags mit einem Schrägstrich
# an das Token an
# Geben Sie die Kombination Token/Tag und evtl. noch
# ein Leerzeichen aus
Code: Alles auswählen
Rund/ADJD 40/CARD Prozent/N aller/PRO staatlichen/ADJA Gelder/N für/APPR Verkehr/N ,/SYM Gesundheit/N und/CONJ Soziales/N würden/VFIN unterschlagen/VPP ./SYM
Die/ART dadurch/PROADV verursachten/ADJA Schäden/N beliefen/VFIN sich/PRO auf/APPR rund/ADJD 20/CARD Milliarden/N Dollar/N im/APPRART Jahr/N ./SYM
Ein/ART Teil/N der/ART unterschlagenen/ADJA Gelder/N werde/VFIN von/APPR der/ART Verwaltungsmafia/N ins/APPRART Ausland/N weitergeleitet/VPP ./SYM
Code: Alles auswählen
# Teilen Sie das Ausgangskorpus an Zeilenumbrüchen in
# einzelne Zeilen auf.
#korpus_str = str(korpus)
#korpus_liste = list(korpus_str.splitlines())
korpus_liste = korpus.splitlines()
# Schauen Sie sich nacheinander jede Zeile an
for zeile in korpus_liste:
zeilenlaenge = len(zeile)
#print zeile
#print zeilenlaenge
# Falls die Zeile leer ist, geben Sie einen Zeilenumbruch aus
if zeilenlaenge == 0:
print
# Falls die Zeile nicht leer ist
else:
# Teilen Sie jede Zeile an den Tab-Stops in Token, Tag und Lemma auf
liste_einzelner_zeilen = zeile.split("\t")
#print liste_einzelner_zeilen
#print liste_einzelner_zeilen[1]
# Teilen Sie das Tag am Punkt in einzelne Bestandteile auf
tag_replaced = liste_einzelner_zeilen[1].replace(".", " ")
tag_liste = tag_replaced.split()
# Fügen Sie den ersten Teil des Tags mit einem Schrägstrich
# an das Token an
token = liste_einzelner_zeilen.pop(0)
tag = tag_liste.pop(0)
tokentag = ''.join(token) + "/" +''.join(tag)
fertige_kombination = ''.join(tokentag)
test1 = fertige_kombination.split()
# Geben Sie die Kombination Token/Tag und evtl. noch
# ein Leerzeichen aus
print test1
Code: Alles auswählen
[u'Rund/ADJD']
[u'40/CARD']
[u'Prozent/N']
[u'aller/PRO']
[u'staatlichen/ADJA']
[u'Gelder/N']
[u'f\xfcr/APPR']
[u'Verkehr/N']
[u',/SYM']
[u'Gesundheit/N']
[u'und/CONJ']
[u'Soziales/N']
[u'w\xfcrden/VFIN']
[u'unterschlagen/VPP']
[u'./SYM']
etc.
pp.
Ich bekomme es aber nicht hin die Listen zusammenzufügen, damit es wie oben in der Endausgabe aussieht.
Kann mir jemand helfen bitte? Ich hab nen Denkfehler im Code irgendwie...
Danke sehr schonmal!