In sentences.txt befindet sich im moment eine satzsammlung mit geschätzt 200000 sätzen.
story.txt ist ein ganz normaler text.. irgendetwas was ich aus dem internet per copy/paste reinkopiert habe (im grunde als testdatei damit ich das ganze fix testen kann.
story.txt und sentences.txt sind im grunde die dateien die überprüft werden, ob es fehler in dem text gibt, oder o sie wörter enthalten die in der Vollform noch nicht enthalten sind.
Das ganze soll hinterher so funktionieren, wie ein rechtschreib programm in msword.
was es im moment tut und zwar problemlos ist, dass es die wörter die noch nicht in vollform enthalten sind hinzufügt.
aber was ich noch nicht hinbekommen habe ist, dass das programm dieses wort im text korrigiert. das ganz soll natürlich per eingabeaufforung geregelt werden.
jetzt weiß ich das ich das auf 2 möglichkeiten realisieren kann.
1. Ich kann das programm dazubringen, den text den es überprüft, danach Wort für Wort in die datei wieder reinzuschreiben... was sehr unpraktisch wäre, denn satzzeichen reinzubringen wäre zusätzliche arbeit und das programm würde in der geschwindigkeit sehr drunter leiden.
2. ich finde einen befehl der das wort was überprüft wird und nicht passt durch das korrekt geschriebene ersetzt(replace-befehl)
meine frage ist: gibt es einen replace befehl in diesem fall oder wie kann man das umsetzen.
anbei der aktuelle code:
Code: Alles auswählen
# -*- coding: cp1252 -*-
import time
import sys
def readWordlist(filename):
words = set()
for line in open(filename, "r"):
words.update(set([w for w in line.strip().split()]))
return words
def main():
start = time.time()
wordList = readWordlist("vollform.txt")
data = readWordlist("story.txt")
positiv = ["J" , "j", "y", "yes", "jap", "Y", "Yes", "Jo"] #(für erweiterung)
negativ = ["nein","ne","Nein","Ne","noe","Noe","n","N","nE","nope"] #(für erweiterung)
for line in data:
words = line.strip() \
.replace('Ae', 'Ä') \
.replace('Oe', 'Ö') \
.replace('Ue', 'Ü') \
.replace('.', '') \
.replace('"', '') \
.replace('!', '') \
.replace('?', '') \
.replace('-', '') \
.replace(',', '') \
.replace('“', '') \
.replace('”', '') \
.replace('_', '') \
.replace(';', '') \
.replace('(', '') \
.replace(')', '') \
.replace('[', '') \
.replace(']', '') \
.replace('}', '') \
.replace('=', '') \
.replace('{', '') \
.replace(':', '') \
.replace("'", '' ) \
.replace("1", '' ) \
.replace("2", '' ) \
.replace("3", '' ) \
.replace("4", '' ) \
.replace("5", '' ) \
.replace("6", '' ) \
.replace("7", '' ) \
.replace("8", '' ) \
.replace("9", '' ) \
.replace("0", '' ) \
.split()
for w in words:
d = open("story.txt", "a")
v = open("vollform.txt", "a")
f = open("wordsnotinvollform.txt", "a")
g = open("wordsinvollform.txt", "a")
wl = w + "\n"
if w in wordList:
g.writelines(wl)
else:
edit = raw_input("Möchten Sie den Begriff " + w + " zum Wörterbuch hinzufügen?")
if edit in positiv:
v.writelines(wl)
print w + " wurde zum Wörterbuch hinzugefügt!"
elif edit in negativ:
edit2 = raw_input("Möchten Sie den Begriff " + w + " im Text ändern?")
if edit2 in positiv:
editw = raw_input("Schreiben Sie das Wort bitte richtig.")
w = editw
d.write(w)
elif edit2 in negativ:
f.writelines(w)
print time.time() - start, "sec"
f.close()
g.close()
if __name__ == "__main__":
main()