RegEx auf Wortstamm, aber nichts anderes?

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
cronoik
Beiträge: 2049
Registriert: 18.03.2012 21:13:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: RegEx auf Wortstamm, aber nichts anderes?

Beitrag von cronoik » 12.02.2020 09:55:32

EinSteiGer hat geschrieben: ↑ zum Beitrag ↑
11.02.2020 14:16:19
Ich 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.
Man hat relativ gute Erfolge mit statistischen Ansaetzen auf n-gramme[1] erzielen koennen. Ein Beispiel[2] in Python:

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]))
Ausgabe:

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']
Da sieht man auch gleich das Gasturbolenzen ein ungewoehnliches Wort ist oder das MSfree eigentlich Gasturbulenzen meinte ([0.903037513574255, 'Gas', 'Turbulenzen']).
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 :mrgreen: ).

[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
Hilf mit unser Wiki zu verbessern!

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: RegEx auf Wortstamm, aber nichts anderes?

Beitrag von Meillo » 12.02.2020 10:25:32

Wow!

Sehe ich das richtig, dass `char_split.split_compound()' das Sprachverstaendnis, also irgendwelche Worterbuecher (Edit: N-Gramme) oder so enthaelt? Denn ohne dieses Wissen ist das ja nicht moeglich.

EDIT: Steht ja alles da: https://github.com/dtuggener/CharSplit ;-)


Auf jeden Fall beeindruckend. :THX:
Use ed once in a while!

cronoik
Beiträge: 2049
Registriert: 18.03.2012 21:13:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: RegEx auf Wortstamm, aber nichts anderes?

Beitrag von cronoik » 12.02.2020 10:53:44

Du kannst es dir auch komplett ansehen: https://raw.githubusercontent.com/dtugg ... m_probs.py
Hilf mit unser Wiki zu verbessern!

Antworten