Man hat relativ gute Erfolge mit statistischen Ansaetzen auf n-gramme[1] erzielen koennen. Ein Beispiel[2] in Python:EinSteiGer hat geschrieben:11.02.2020 14:16:19Ich gehe davon aus, dass mal abgesehen von dem oben benannten Problem des Plurals (oder anderer Formen der Beugung) ein Schritt die Verwendung von Silbentrennlisten wie sie z.B. bei LaTeX verwendet werden sinnvoll sein könnte.
Code: Alles auswählen
import char_split
words = ['Gastemperatur', 'Gastransport', 'Gasturbolenzen', 'Gastest', 'Gastanker', 'Gastankstelle', 'Gasturbine', 'GasArmageddon' , 'Gasexplosion' , 'GasPreise' , 'Erdgas' , 'Gastbeitrag']
for w in words:
print('{}'.format(char_split.split_compound(w)[0]))
Code: Alles auswählen
[0.9362086806446553, 'Gas', 'Temperatur']
[0.941921699101528, 'Gas', 'Transport']
[-0.844407530454042, 'Gasturbo', 'Lenzen']
[0.8572341433907195, 'Gas', 'Test']
[0.8866028167096346, 'Gas', 'Tanker']
[0.9434195312289998, 'Gas', 'Tankstelle']
[0.8755265177401315, 'Gas', 'Turbine']
[0.5897752224033439, 'Gas', 'Armageddon']
[0.8435478629370969, 'Gas', 'Explosion']
[0.9124118441031029, 'Gas', 'Preise']
[0.4688618794084427, 'Erd', 'Gas']
[0.9046454414666888, 'Gast', 'Beitrag']
Fuer die Plural- und gebeugte Formen Thematik koennte auf die gesplitteten Woerter dann ein lemmatizer[3] eingesetzt werden. So etwas gibt es unter anderem bei Spacy [4].
Falls sich der Aufwand lohnt, kann inne die Datei ngram_probs.py von [2] herunterladen und den Ansatz in Perl nachbauen (ist dann wahrscheinlich ein Einzeiler ).
[1] https://de.wikipedia.org/wiki/N-Gramm
[2] https://github.com/dtuggener/CharSplit
[3] https://nlp.stanford.edu/IR-book/html/h ... ion-1.html
[4] https://spacy.io/models/de