# Klasse zum Austauschen von Genitiv durch Dativ
|
|
|
|
|
|
import spacy
|
|
|
|
|
|
class GenitivSolve(object):
|
|
|
|
def __init__(self):
|
|
|
|
#print('loading the german spacy model..')
|
|
self.nlp = spacy.load('de_core_news_sm')
|
|
#print('done')
|
|
|
|
return
|
|
|
|
def ReplaceGenitivWithDativ(self, sentences):
|
|
|
|
|
|
|
|
count = 0
|
|
for sentence in sentences:
|
|
|
|
count += 1
|
|
#print('processing sentence', count)
|
|
|
|
tokens = self.nlp(' '.join(sentence))
|
|
|
|
|
|
|
|
for n in range(1, len(sentence)):
|
|
|
|
|
|
#print(sentence[n])
|
|
if (sentence[n][-1] == 's' or sentence[n][-1] == 'n') and (sentence[n - 1] == 'des' or sentence[n - 1] == 'Des'):
|
|
|
|
#print('oi')
|
|
#print('genitiv', sentence[n], sentence[n][:-2])
|
|
if sentence[n][-2] == 'e':
|
|
sentence[n] = sentence[n][:-2]
|
|
else:
|
|
sentence[n] = sentence[n][:-1]
|
|
sentence[n - 1] = 'dem'
|
|
sentence.insert(n - 1, 'von')
|
|
|
|
|
|
if sentence[n] == 'der' and sentence[n - 1][-1] != ',' and (tokens[n - 1].tag_ == 'NN' and tokens[n-1].text == sentence[n]) and sentence[n][-2:] != 'en':
|
|
|
|
sentence.insert(n, 'von')
|
|
|
|
if sentence[n] == 'der' and sentence[n - 1][-1] != ',' and (tokens[n - 1].tag_ == 'NN' and tokens[n-1].text == sentence[n]) and ((sentence[n+1][-2:] == 'en' or sentence[n+1][-1] == 'n' or sentence[n+1][-1] == 'e' or sentence[n+1][-2:] == 'er')):
|
|
|
|
if sentence[n+1][-1] == 'e':
|
|
sentence[n+1] + 'n'
|
|
|
|
sentence[n] == 'den'
|
|
sentence.insert(n, 'von')
|
|
|
|
return sentences
|
|
|
|
|