repodiac / german_compound_splitter

Compound splitter for German language ("Komposita-Zerlegung") based on large dictionary combined with highly efficient multi-pattern string search
Creative Commons Attribution 4.0 International
22 stars 2 forks source link

Extending dictionaries for better coverage or performance (was: German.dic nicht mehr erhältlich) #4

Closed yannis1962 closed 1 year ago

yannis1962 commented 1 year ago

hallo, dei Datei "german.dic" von Schreiber ist nicht mehr erreichbar. Könnten Sie bitte die Struktur dieser Datei beschreiben so daß ich ein Ersatz erstellen kann? Im Code steht "a text file dictonary holding one item per line" aber was sind diese "items"? Können Sie vielleicht ein kleines Beispiel geben (einige Dutzend Zeilen)? Vielen Dank im voraus Yannis

repodiac commented 1 year ago

Hi Yannis,

thanks for your interest in my compound splitter (always looking forward to feedback, whatever you do with it :). Though, I can currently access it - https://sourceforge.net/projects/germandict/files/latest/download

In case, it is not possible for you or someone else, here is an extract (exmplarily):

Donau
Donauabschnitt
Donauabschnitte
Donauabschnitten
Donauabschnitts

It really is as I mentioned it in the docs: Just one word or compound per line, in the case of the dict all cases or singular/plural is usually present, which makes it so valuable (thanks again, @janschreiber)

yannis1962 commented 1 year ago

Hallo und Danke für die schnelle Antwort,

OK für Englisch, ist für mich auch einfacher

I'm very glad you answered because I'm in a problematic situation. I'm writing a book on NLP and would like to give component identification in German as an exercise (the goal of the exercise being the choice between round/long s, ligature breaking, and whatever else is needed for typesetting in Fraktur. As a test file I use Goethe's Dichtung und Wahrheit, which has sufficiently many long s letters (and his mother was very keen on Fraktur :-).

The problem is I am still looking for a package for successful component splitting. Yours was my greatest hope, but it doesn't seem to work properly.

When I use german.dic as it is originally, "Schifffahrt" is not segmented because "fahrt" only occurs with a lowercase letter (as a verb). When I change the itinials of all words to uppercase then Schifffahrt is correctly segmented and so is (almost) Donaudampfschifffahrtskapitänsmützenabzeichen (the only missing one is ab-zeichen)? but non-compound words are also splitted, for example Veranlassungen becomes Veran-las-sun-gen and schriftstellerische becomes schrift-tell-eris-che.

Obviously I should'nt capitalize all words in german.dic, but how do I solve the problem of "Schfffahrt" not being broken? (It is broken inside Donau…abzeihen but not when entered as a standalone word, and not in Stromschifffahrt.)

Am I doing something wrong? Can I improve the performance of your package?

If the answers to the following packages are "no", then is there some other package doing the work? 20 years ago I was using DMM Malaga which seemed to be OK, but it does not exist anymore.

Thanks in advance for your help, which will be duly acknowledged in the book!

Cheers,

Yannis

Le 25 juin 2023 à 15:56, repodiac @.***> a écrit :

Hi Yannis,

thanks for your interest in my compound splitter (always looking forward to feedback, whatever you do with it :). Though, I can currently access it - https://sourceforge.net/projects/germandict/files/latest/download

In case, it is not possible for you or someone else, here is an extract (exmplarily):

'''Donau Donauabschnitt Donauabschnitte Donauabschnitten Donauabschnitts'''

It really is as I mentioned it in the docs: Just one word or compound per line, in the case of the dict all cases or singular/plural is usually present, which makes it so valuable (thanks again, @janschreiber https://github.com/janschreiber)

— Reply to this email directly, view it on GitHub https://github.com/repodiac/german_compound_splitter/issues/4#issuecomment-1606075455, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAFXC7L5EYTHK5KUKI74ZL3XNAYOFANCNFSM6AAAAAAZSMVINA. You are receiving this because you authored the thread.

http://www.imt-atlantique.fr/ Yannis HARALAMBOUS Professor Computer Science Department UMR CNRS 6285 Lab-STICC https://www.imt-atlantique.fr/en/person/yannis-haralambous https://twitter.com/y_haralambous https://www.linkedin.com/in/yannis-haralambous-5529073?trk=hp-identity-nameTechnopôle Brest-Iroise CS 83818 29238 Brest Cedex 3, France Une École de l'IMT http://www.imt.fr/

‌Comme on dit dans mon pays, c'est de l'identification, sans en être, tout en en étant ‌(Raymond Queneau, ‌Technique du roman)‌

yannis1962 commented 1 year ago

Le 25 juin 2023 à 20:48, Yannis Haralambous @.***> a écrit :

If the answers to the following packages are "no", then is there some other package doing the work? 20 years ago I was using DMM Malaga which seemed ^^^^^^^ questions

Best, Yannis

http://www.imt-atlantique.fr/ Yannis HARALAMBOUS Professor Computer Science Department UMR CNRS 6285 Lab-STICC https://www.imt-atlantique.fr/en/person/yannis-haralambous https://twitter.com/y_haralambous https://www.linkedin.com/in/yannis-haralambous-5529073?trk=hp-identity-nameTechnopôle Brest-Iroise CS 83818 29238 Brest Cedex 3, France Une École de l'IMT http://www.imt.fr/

‌Buchstaben sind nicht die Wirklichkeit. ‌(Volker Kutscher, ‌Der stumme Tod)‌

repodiac commented 1 year ago

Hi again,

I will look into it and get back to you with questions in case. However, "Fahrt" (the noun) wasn't present in my version of german.dic back then, as I wrote also in the docs :) ... but I'll check and get back to you. Besides that, haven't heard of DMM Malaga yet, but a solution could be to merge german.dic with another dictionary/list - for instance from LibreOffice or other permissively licensed content where "Fahrt" and the like are included.

repodiac commented 1 year ago

Hi again ;)

OK, I looked into it. Two answers to all your questions: 1) Yes, with the existing solution it is possible IFF (!) you have a proper dictionary :D The options as given in the docs are fine (m̀ake_singular=True, only_nouns=True, mask_unknown=False) However, since it is mostly dictionary-based it may not be perfect in many cases, as you already found out - Schiffahrtwasn't split up properly, at first. 2) I found a solution to your problem, at least Schiff-Fahrtis now provided as requested:

['Donau', 'Dampf', 'Schiff', 'Fahrt', 'Kapitän', 'Mütze', 'Abzeichen']

Here is how I did it:

  1. You need a nix operating system or at least someone to get you the proper file. I used the words package, which is available in a lot of nix distributions like Ubunut, Debian, Arch Linux etc., see reference here: https://en.wikipedia.org/wiki/Words_(Unix)
  2. You go to (in my case) folder /usr/share/dict, there you find the file ngerman
  3. You create a new dictionary from the existing ones: cat <path to your german.dic> ngerman > more_words.dic
  4. This is your "new" dictionary, use it like before and as given in the docs:
    
    from german_compound_splitter import comp_split

compound = 'Donaudampfschifffahrtskapitänsmützenabzeichen' input_file = 'more_words.dic' ahocs = comp_split.read_dictionary_from_file(input_file)

dissection = comp_split.dissect(compound, ahocs, make_singular=True, only_nouns=True, mask_unknown=False) print('SPLIT WORDS (plain):', dissection) print('SPLIT WORDS (post-merge):', comp_split.merge_fractions(dissection))


The result should be as above, `['Donau', 'Dampf', 'Schiff', 'Fahrt', 'Kapitän', 'Mütze', 'Abzeichen']` License-wise this additional file `ngerman` should be in the public domain, but please check for yourself (no legal advice here, use at your own risk :)

**Note**: As you can see in the docs, there is another method `merge_fractions(dissection_list)` - under certain circumstances this is useful if you are interested in pre- and suffixes, as well. In this case, you **must** use the parameter `only_nouns=False`. See for yourself, how the results change after calling `merge_fractions`. However, it is not perfect, either. So the word `Schiff` is messed up and the leading `S` is lost due to an existing dictionary word "Chiffre" (I guess :/). Though, playing with this option might be helpful in certain cases, here you can separate `Ab` from `Abzeichen`, in turn and so forth.

Please let me know, if that suggestion helped and then I will close this issue eventually - I think, I will add this solution/extension to the docs, as well. Might be of help for others, I can imagine.
yannis1962 commented 1 year ago

dear repodiac,

Le 28 juin 2023 à 00:17, repodiac @.***> a écrit :

Here is how I did it:

You need a nix operating system or at least someone to get you the proper file. I used the words package, which is available in a lot of nix distributions like Ubunut, Debian, Arch Linux etc., see reference here: https://en.wikipedia.org/wiki/Words_(Unix) You go to (in my case) folder /usr/share/dict, there you find the file ngerman You create a new dictionary from the existing ones: cat ngerman > more_words.dic This is your "new" dictionary, use it like before and given in the docs: I'm on MacOS X, so there is no ngerman file. Where can I find it on the Web? Is it the same as https://ftp.gnu.org/gnu/aspell/dict/de/ ?

Not being able to try your solution yet, just a question: will it segment "schriftstellerische” correctly? It is an adjective and the second component "stellerische" does not exist as a dictionary entry. Will the system know that it has to break between Schrift and stellerische?

Thanks again,

Yannis

http://www.imt-atlantique.fr/ Yannis HARALAMBOUS Professor Computer Science Department UMR CNRS 6285 Lab-STICC https://www.imt-atlantique.fr/en/person/yannis-haralambous https://twitter.com/y_haralambous https://www.linkedin.com/in/yannis-haralambous-5529073?trk=hp-identity-nameTechnopôle Brest-Iroise CS 83818 29238 Brest Cedex 3, France Une École de l'IMT http://www.imt.fr/

‌Es gab eine Zeit, wo ich nur ungern über Schubert sprechen, nur Nächtens den Bäumen und Sternen von ihm vorerzählen mögen. ‌(Robert Schumann, ‌Franz Schubert's letzte Compositionen)‌

repodiac commented 1 year ago

No, I think you can find and download it from here: https://mirror.rackspace.com/archlinux/extra/os/x86_64/words-2.1-7-any.pkg.tar.zst (it's to be found in usr/share/dict subfolder as ngerman)

Regarding "schriftstellerische" as an example, again, depends on the dictionary but I doubt that it will be split into "Schrift" and "stellerische" or similar. Sorry, but see for yourself then.

PS: Haha, now I think I have really earned an acknowledgement in your upcoming book ;)

repodiac commented 1 year ago

So, @yannis1962 - did it work eventually? Can I close the ticket then?

yannis1962 commented 1 year ago

I’m out of town. I will try it out this afternoon. Thanks for your help!

Envoyé de mon iPhone

Le 30 juin 2023 à 10:12, repodiac @.***> a écrit :

 So, @yannis1962 - did it work eventually? Can I close the ticket then?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.

yannis1962 commented 1 year ago

Hi, no it didn't worked:

Loading data file - more_words.dic Dissect compound: Donaudampfschifffahrtskapitänsmützenabzeichen SPLIT WORDS (plain): ['Donau', 'Dampf', 'Schifffahrt', 'Kapitän', 'Mütze', 'Abzeichen'] SPLIT WORDS (post-merge): ['Donau', 'Dampf', 'Schifffahrt', 'Kapitän', 'Mütze', 'Abzeichen']

even though I did exactly as you said.

When I removed ^fahrt$ from the more_words.dic file, it worked:

Loading data file - more_words.dic Dissect compound: Donaudampfschifffahrtskapitänsmützenabzeichen SPLIT WORDS (plain): ['Donau', 'Dampf', 'Schiff', 'Fahrt', 'Kapitän', 'Mütze', 'Abzeichen'] SPLIT WORDS (post-merge): ['Donau', 'Dampf', 'Schiff', 'Fahrt', 'Kapitän', 'Mütze', 'Abzeichen']

What I will do is to remove the lowercase version of all words that appear both lowercase and capitalized and see what happens… Here are the 1,553 words of which I will remove the lowercase version:

Aalen Abbitte Abbitten Abendrot Abends Abfahrt Abfuhr Abfuhren Abgaben Abgeordnete Abgeordneten Abgeordneter Abgriff Abgriffen Abkommen Abladen Ablagen Abpralle Abrieb Abriss Abrissen Abschied Abschieden Abschnitt Abschnitte Abschnitten Absinken Abstand Abstieg Abstiege Abstiegen Abstände Abtauchen Abteile Abteilen Abtrieb Abtritt Achselzucken Achter Achtern Achtzigern Additiv Additive Additiven Albert Alias All Allergiefördernd Allergiefördernde Allergieförderndem Allergiefördernden Allergiefördernder Allergieförderndes Allerheiligste Allg Alliierten Alltags Allzweck Altbabylonisch Altbabylonische Altbabylonischem Altbabylonischen Altbabylonischer Altbabylonisches Alter Alters Altpreußisch Altpreußische Altpreußischem Altpreußischen Altpreußischer Altpreußisches Altösterreichisch Altösterreichische Altösterreichischem Altösterreichischen Altösterreichischer Altösterreichisches Amte Andachten Androide Androiden Andrängen Anerbieten Anfahrt Anfangs Angaben Angeboten Angeln Angesichts Angriff Angriffe Angriffen Angst Anklang Anklänge Anklängen Anlagen Anlaute Anlauten Anliegen Annahmen Anreize Anreizen Anriss Anrisse Anrissen Anrufe Anrufen Anschnitt Anschnitte Anschnitten Ansinnen Ansprachen Anstand Anstieg Anstiege Anstiegen Anstrich Anstriche Anstrichen Anthropoide Anthropoiden Antrieb Antriebe Antrieben Antritt Antworten Arabeske Arabesken Arbeitssuchende Arbeitssuchenden Arbeitssuchender Arm Arten Ass Assen Au Aufeinanderfolge Aufflackern Aufgaben Aufgeboten Auflagen Auflodern Aufnahmen Aufpralle Aufriss Aufrisse Aufrissen Aufschaukeln Aufschnitt Aufschnitte Aufstand Aufstieg Aufstiege Aufstiegen Aufstrich Aufstriche Aufstrichen Auftrieb Auftriebe Auftrieben Auftritt Aufwände Aufwänden Ausfahrt Ausfuhr Ausfälle Ausfällen Ausgaben Ausgangs Auskunftspflichtig Auskunftspflichtigen Auslagen Ausmaß Ausmaßen Ausnahmen Ausritt Ausschnitt Ausschnitte Ausschnitten Aussprachen Ausstand Aussteuern Ausstieg Ausstände Ausständen Austritt Auswuchs Auswüchse Auswüchsen Automobil Automobile Automobilen Azur Bahnen Ballen Band Bar Barock Bass Batiken Bau Bauchreden Bechern Bedarf Befehle Befehlen Beginn Begriff Begriffen Behelfe Behelfen Behänge Behängen Beilagen Beistand Beitritt Bekanntgeben Bekanntmachen Bekanntwerden Belange Belangen Belege Belegen Berichte Berichten Berlinern Berufe Berufen Beschalltest Bescheide Bescheiden Beschiss Besitzen Bestand Bestände Betrieb Betriebe Betrieben Betrug Beule Beulen Beute Beuten Beweise Beweisen Bildhauern Bildungswilligen Biss Bissen Bleche Blechen Blitze Blitzen Blockende Blockenden Blutsverwandten Blätter Blättern Bolzen Bomben Bonieren Boote Booten Boten Branchenerfahrener Brandmarken Brauch Brettern Brocken Buckeln Bunkern Bände Bänden Bäume Bäumen Bögen Büffeln Bügeln Bündeln Bürde Bürden Bürgern Cache Clustern Creme Cremen Crimpen Dackeln Dank Dauertest Debuggen Deckeln Deichseln Delle Dellen Delta Dichter Dienst Dienstälteste Dienstältesten Dienstältester Differential Differentiale Differentialen Dinge Direktive Direktiven Dissident Dissidenten Dividendenberechtigte Diözesan Diözesane Diözesanen Double Download Drang Dreissiger Dreißiger Drittel Dritteln Druck Druckdichte Dunkeln Durchdrücken Durcheinander Durchfahrt Durchforsten Durchschnitt Durchschnitte Durchschnitten Dutzend Dutzenden Dämme Dämmen Dürre Dürren Düse Düsen EH Ebbe Ebben Ecke Ecken Ehe Ei Eiche Eichen Eiern Eigen Eigenes Eigeninitiative Einband Einbände Einbänden Eingaben Eingangs Eingeborene Eingeborenen Eingeborener Eingriff Eingriffe Eingriffen Einkommen Einnahmen Einpendeln Einriss Einrisse Einrissen Einschleifen Einschnitt Einschnitte Einschnitten Einsprachen Einstieg Eintritt Einvernehmen Ekel Elend Emeritus Ende Enden Entgelte Entgelten Entscheide Entscheiden Entzücken Erdenken Erfolge Erfolgen Erlasse Erlöse Erlösen Ernte Ernten Europafreundlichen Extra FF Fabeln Fach Faches Fackeln Fall Falls Fang Fasern Fass Fehl Feiertags Feind Feinde Feinden Ferkeln Fernladen Fertigschneiden Festnahmen Fetzen Filtern Finale Fingern Firmen Fische Fischen Fixer Flagge Flaggen Flamme Flammen Flanke Flaute Flauten Fliese Fliesen Floh Floss Flotte Flotten Flucht Flugs Fluid Fluten Flöhe Flöhen Flösse Flössen Flöße Flößen Forscher Forste Forsten Fortbestand Fortschritt Fortschritte Fortschritten Frank Franse Fransen Frass Frassen Fraß Fraßen Freiräume Freiräumen Freischnitt Freund Freunde Freunden Friede Frieden Fristen Frühbarock Fuge Fugen Fuhren Funktionskompatibel Furchen Furniere Furnieren Fußballbesessene Fächern Fälle Fällen Fünfziger Fünfzigern Gabeln Gaben Gallonenweise Gang Garten Gasdichte Gebeten Gebissen Gebot Geboten Gebrechen Gefreite Gefreiter Gehorsam Geige Geigen Geistern Geldwert Geldwerte Geldwerten Geldwertes Gen Genossen Gepolter Gerät Gesamthaft Geschossen Geselchte Geselchten Geselle Gesellen Gestalten Gewichtheben Gewinnberechtigten Gewinnberechtigter Gewinne Gewinnen Gewissen Gewittern Gewähr Gipfeln Gliedern Gläubiger Gnade Goldgläubige Goldner Gondeln Gossen Grabesstille Greise Greisen Greises Griff Griffe Griffen Grimmschen Grossindustriellen Großindustriellen Großtaten Großteils Gruben Grüsse Grüssen Grüße Grüßen Gurke Gurken Gurten Gut Gutes Guthaben Gärtnern Göre Gören Haare Haaren Hab Haken Halle Hallen Halluzinogen Halluzinogene Halluzinogenen Hamstern Handarbeiten Hanteln Harze Harzen Hauch Hautfarben He Hebeln Hecke Hecken Heim Heimreise Heimreisen Herbstes Herfahrt Herrjemine Herzen Herzog Herzöge Herzögen Heurige Heurigen Hexe Hexen Hieb Hiebe Hieben Himmeln Hinfahrt Hinterbliebene Hinterbliebenen Hobel Hoch Hochdrücke Hochdrücken Horte Horten Hungers Hängenbleiben Häute Häuten Höhle Höhlen Hüben Ideal Igeln Imkern Imperativ Imperativen Imperfekt Imperfekten Inaktiver Inbegriffen Industrieübliches Infrarot Initial Initiale Initialen Initiative Initiativen Instandsetzen Intrigant Intriganten Invalide Invaliden Italic Junior Juxe Juxen KP Kabeln Kacheln Kanzeln Kapital Kappe Kappen Karre Karren Kauf Kegel Kegeln Kehlen Kellern Kellnern Kennenlernen Kerkern Kesseln Keule Keulen Kiebitze Kiebitzen Kitzel Klammer Klang Klasse Klatsch Klau Klick Klingel Kloppe Klumpen Klänge Klängen Knall Knalle Knechte Knechten Knie Knien Kniff Kniffen Knospen Knoten Knüppel Knüppeln Koch Kollektiv Kollektive Kollektiven Kommode Kommoden Kommune Kommunen Komparativ Komparative Komparativen Konditional Konditionale Konditionalen Konjunktiv Kontakte Kontakten Konterrevolutionär Konterrevolutionäre Konterrevolutionären Kontingent Kontingente Kontingenten Kontra Konzernfremde Kopernikanische Kopernikanisches Kopfstand Koppel Koppeln Kosten Kostengerechte Krach Kraft Kralle Krallen Krebse Krebsen Kreise Kreiseln Kreisen Kreuz Kreuze Kreuzen Krieg Kriegsbereit Kriegsgefangener Kristallen Krähe Krähen Krümeln Kundschaften Kuppeln Kuren Kuriere Kurieren Kurt Kurve Kurven Kutsche Kutschen Ködern Lackschwarz Laden Lagen Lagern Lappen Lasche Laschen Lasern Last Lauer Lauf Laut Lebensentscheidend Lebensentscheidende Lebensentscheidendem Lebensentscheidenden Lebensentscheidender Lebensentscheidendes Leck Leerräume Leerräumen Leibeigene Leibeigenen Leibeigener Leid Leinen Leiste Leisten Leprakranker Letzt Licht Lichter Linde Linden Links Linksextremen Linksradikale Linse Linsen Liste Listen Lockre Logo Lohnintensive Lokal Los Lose Losen Loses Loten Lotrechte Lottospiele Lottospielen Lumpen Löcher Löffel Löffeln Magellansche Magenkranke Mal Maloche Manifest Manifeste Manifesten Manifestes Marine Marinen Marines Mass Massen Massiv Mattsetzen Mauer Maure Max Maß Maße Maßen Maßregeln Medium Meisseln Meistern Meißeln Menge Mengen Menschenarme Metallen Mime Mimen Mindeste Mindesten Mini Missbehagen Missbrauch Misstrauen Mithilfe Mittags Mittel Mittelalter Mittelträger Mitwissen Moser Mosten Munde Mustern Mute Münze Münzen Nachbeben Nachfahre Nachfahren Nachgetrimmt Nachholtest Nachklang Nachklänge Nachklängen Nachkommen Nachleben Nachleuchten Nachmittags Nachsetzen Nachweise Nachweisen Nachwuchs Nadeln Namens Nerv Nerven Neunzigern Neureiche Neureichen Neureicher Nichtprivaten Niet Niete Nieten Norden Nordrhein Normalsterbliche Normalsterblichen Normalsterblicher Not Notbremse Notfalls Null Nullen Nummern Nässe Ober Oberst Ohrfeige Ohrfeigen Okular Olive Oliven Oliver Opfer Orange Orangen Original Originale Originalen Paare Pachten Panzern Papieren Pappe Pappen Parallele Parallelen Pardon Park Parteifreien Pass Pastellfarben Pasten Patent Patente Patenten Patentes Patentreife Pauke Pauken Pendeln Perpetuum Personal Pfiff Pfiffe Pflaume Pflaumen Pflichten Pflüge Pflügen Pfropfen Piano Piepsen Pike Pilgern Pinne Pinnen Pinseln Plan Planschleifen Pleite Plural Plätte Pole Polen Polstern Posaune Posaunen Post Posten Potenzial Potenziale Potenzialen Predigt Predigten Preis Prostituierte Prostituierten Pseudonym Pseudonyme Pseudonymen Puffern Pulle Pult Pulte Pulten Punkte Punkten Purpur Puschen Puzzle Quartiere Quartieren Quarze Quarzen Quatsch Quere Quirle Quirlen Rahmen Rang Rappen Rast Ratsche Rauch Rausschmiss Rausschmisse Rausschmissen Rechen Recht Rechte Rechten Rechts Rechtsgelehrten Regenbogenfarben Reich Reihe Reihen Reize Reizen Retrospektive Reue Rheinland Richtige Riegeln Rings Riss Rissen Robbe Robben Rudern Ruf Rum Rundfrage Rundfragen Runzeln Rädern Rändern Ränge Rängen Räubern Räume Räumen Röte Rückfrage Rückfragen Rückschalten Rückschieben Rückübertragen Rümpfe Rümpfen Sachsen Sachverständige Sachverständigen Sachverständiger Safte Samt Sassen Saudi Schachteln Schaden Schafledern Schal Schalle Schatten Schau Schenke Schenken Schiefer Schieflagen Schiffe Schiffen Schildern Schlachten Schlaf Schlag Schlampe Schlampen Schlangen Schlappen Schlauchende Schlauchenden Schleswig Schleudern Schleuse Schleusen Schlichter Schliff Schlitze Schlitzen Schloss Schluck Schläfern Schlüsseln Schmerzen Schmiss Schmuck Schnauze Schnauzen Schneidern Schnitt Schnitte Schnupfen Schnuppe Schnäbeln Schnörkeln Schollen Schotte Schotten Schrecken Schrei Schreinern Schriftstellern Schritt Schritte Schritten Schritthalten Schubs Schuft Schuld Schulmeistern Schultern Schustern Schutzbefohlene Schutzbefohlenen Schutzbefohlener Schwarzarbeiten Schwarzfahrt Schwerindustriellen Schwulstes Schwämme Schwämmen Schächte Schächten Schäume Schäumen Schürze Schürzen Sechziger Sechzigern Segeln Seil Seilhüpfen Seilspringen Sein Seins Seitenschwimmen Sekundenschnelle Senior Setting Sicheln Sichten Siebe Sieben Siebziger Siebzigern Siegeln Silber Simplex Sitz Sog Sogen Solitär Solitäre Solitären Solo Sommers Sonnabends Sonne Sonnen Sonntagabends Souverän Spann Speziale Spiegel Spiel Spiesse Spiessen Spieß Spieße Spießen Spitzeln Splittern Sprachen Spross Sprossen Spuren Spurt Stacheln Stahl Steigern Stereotyp Stereotype Stereotypen Steuerbord Steuern Stich Stiege Stiegen Stillstand Stoppeln Stoss Stoß Strahlwassergeschützt Strich Striche Strichen Strolche Strolchen Strudeln Stufe Stufen Stunde Stunden Stupid Stände Ständen Stöpseln Stör Stümpern Summe Summen Superklasse Synonym Säbeln Säume Säumen Sühne Sülze Sülzen Tags Tanz Taste Tasten Tausch Tausende Tausenden Tausender Teil Teils Terminal Texte Texten Textil Throne Thronen Tieftauchen Tigern Tipp Tische Tischen Tischlern Titeln Top Topp Touren Trachten Trank Treffen Trichtern Trieb Triebe Trieben Tritt Tropfe Tropfen Trotz Träger Träume Träumen Tun Typhuskranke Typhuskranken Typhuskranker Töpfern Türke Türken Türkis Türkise Türkisen Türkises Tüte Tüten Ufern Ultimo Umkreise Umkreisen Umlackieren Umriss Umrissen Umstieg Umtrieb Umtrieben Ungeheuer Unhold Uni Uniform Uniformen Unke Unken Unklare Unklaren Unklares Unrecht Unrechte Unrechten Unterlagen Untermenge Untermengen Unternehmen Unterschied Unterschiede Unterschieden Untertan Untertiteln Unwerte Update Urteile Urteilen VAG Verband Verbot Verboten Verbrauch Verbrechen Verbunden Verbände Verbänden Verdacht Verdeck Verdienst Verfahren Vergaben Vergehen Vergleich Vergleiche Vergleichen Vergnügen Verhalten Verhau Verhör Verhöre Verkehr Verladen Verlass Verlasse Verlauf Verleih Vermerk Vermerke Vermerken Vermögen Verriss Verrissen Versagen Verschlag Verschleisse Verschleissen Verschleiße Verschleißen Verstoss Verstoß Versuch Versuche Versuchen Vertrag Vertragen Vertrieb Vertriebe Vertrieben Verwachsen Vespern Vierziger Vierzigern Visionär Visionäre Visionären Vokal Vokale Vokalen Volksdeutschen Vollmacht Vollmachten Vorarbeiten Vorbedacht Vorbehalte Vorbehalten Vorbohren Vordrucken Vorfahren Vorgaben Vorgarten Vorgriff Vorgriffe Vorgriffen Vorkosten Vorlagen Vorleben Vormittags Vorrede Vorreden Vorschieben Vorsitze Vorsitzen Vorspiele Vorspielen Vorstand Vorstände Vortrieb Vortritt Vorwärtsfahren Vorwürfe Vorwürfen Vögel Wachhabende Wachhabenden Wachhabender Wagen Wallfahrt Walze Walzen Wand Wedeln Weg Wegschalten Weh Wehr Weihe Weihen Wein Weiterbestand Weiterdenken Weitermelden Wellenreiten Werft Werktags Wert Werte Westalliierte Westalliierten Wetterleuchten Wettrennen Wettrüsten Widerstand Widerstände Widerständen Wiederaufnahmen Wiederauftreten Wiedergaben Wiedersehen Wiese Wieseln Wiesen Wilderer Willen Windeln Winkeln Winters Wisch Wochentags Wogen Wohle Wohlergehen Wohles Wohltat Wohltaten Wuchs Wunder Wurm Wänden Würfe Würfel Würfeln Würfen XI Zahl Zauber Zeche Zechen Zehntel Zeit Zentralafrikanische Zeremoniell Zettel Zetteln Zeuge Zeugen Zicke Zicken Zickzack Zier Zigeunern Zimmer Zimmern Zinke Zinken Zirkeln Zirkular Zirkulare Zirkularen Zufahrt Zufuhr Zufuhren Zugaben Zugriff Zugriffe Zugriffen Zunahmen Zurufe Zurufen Zurückgaben Zusammenklang Zusammenleben Zusammenspiele Zusammenspielen Zusammentritt Zusammenwirken Zuschnitt Zuschnitte Zuschnitten Zuspätkommend Zuspätkommende Zuspätkommendem Zuspätkommenden Zuspätkommender Zuspätkommendes Zustand Zustände Zuständen Zutat Zutaten Zutritt Zutun Zwang Zwanzigern Zwecks Zweige Zweigen Zwiebeln Zäune Zäunen Zügel Zügeln kT Ängste Ärger Übel Überbauten Überfahrt Überfrachten Übergriff Übergriffen Überlast Übermacht Überschnitt Übertritt Übrige Übrigen Übriges

Le 30 juin 2023 à 10:12, repodiac @.***> a écrit :

So, @yannis1962 https://github.com/yannis1962 - did it work eventually? Can I close the ticket then?

— Reply to this email directly, view it on GitHub https://github.com/repodiac/german_compound_splitter/issues/4#issuecomment-1614295495, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAFXC7PJL5BPET4NLP6KZRTXN2C7LANCNFSM6AAAAAAZSMVINA. You are receiving this because you were mentioned.

http://www.imt-atlantique.fr/ Yannis HARALAMBOUS Professor Computer Science Department UMR CNRS 6285 Lab-STICC https://www.imt-atlantique.fr/en/person/yannis-haralambous https://twitter.com/y_haralambous https://www.linkedin.com/in/yannis-haralambous-5529073?trk=hp-identity-nameTechnopôle Brest-Iroise CS 83818 29238 Brest Cedex 3, France Une École de l'IMT http://www.imt.fr/

‌Le tact dans l'audace, c'est de savoir jusqu'où on peut aller trop loin. ‌(Jean Cocteau, ‌Le Coq et l'Arlequin)‌

yannis1962 commented 1 year ago

Hi,

I had to do some changes to your code, otherwise it had indexes out of array length:

if only_nouns and len(results)>1:
    # workaround to prevent unwanted behaviour (only nouns are eligible)
    results[0] = results[0][0].upper() + results[0][1:]
    print(results)
    for ri in range(len(results) - 1):
        if len(results)>ri and results[ri].islower():
            merged = results[ri] + results[ri + 1].lower()
            if ahocs.exists(merged):
                part1 = results[ri]
                part2 = results[ri + 1]
                results.insert(ri, merged[0].upper() + merged[1:])
                results.remove(part1)
                results.remove(part2)

Now it runs, but the results are very fragile.

Could you please make the changes on git so that people can use it according to my description?

If you want I can send you my program, the golden corpus and the evaluation code.

Best,

Yannis

Le 30 juin 2023 à 10:12, repodiac @.***> a écrit :

So, @yannis1962 https://github.com/yannis1962 - did it work eventually? Can I close the ticket then?

— Reply to this email directly, view it on GitHub https://github.com/repodiac/german_compound_splitter/issues/4#issuecomment-1614295495, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAFXC7PJL5BPET4NLP6KZRTXN2C7LANCNFSM6AAAAAAZSMVINA. You are receiving this because you were mentioned.

http://www.imt-atlantique.fr/ Yannis HARALAMBOUS Professor Computer Science Department UMR CNRS 6285 Lab-STICC https://www.imt-atlantique.fr/en/person/yannis-haralambous https://twitter.com/y_haralambous https://www.linkedin.com/in/yannis-haralambous-5529073?trk=hp-identity-nameTechnopôle Brest-Iroise CS 83818 29238 Brest Cedex 3, France Une École de l'IMT http://www.imt.fr/

‌We're going always. — 'We're going always.' — Totally. — That's not actually a sentence. — Well it's got a verb in it. ‌(The 11th Doctor Who, ‌Hide)‌