tatuylonen / wiktextract

Wiktionary dump file parser and multilingual data extractor
Other
799 stars 82 forks source link

Non-English wiktionaries are missing compound information for German words #632

Closed donnerpeter closed 3 months ago

donnerpeter commented 4 months ago

https://de.wiktionary.org/wiki/Beizjagd has "Determinativkompositum aus dem Stamm des Verbs beizen und dem Substantiv Jagd", but the JSON doesn't seem to:

{"word": "Beizjagd", "pos": "noun", "lang_code": "de", "lang": "Deutsch", "translations": [{"sense": "Jagdwesen: Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)", "word": "sokolarstvo", "lang_code": "bs", "lang": "Bosnisch", "sense_id": "1", "tags": ["neuter"]}, {"sense": "Jagdwesen: Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)", "word": "соколарство", "lang_code": "bg", "lang": "Bulgarisch", "roman": "sokolarstvo", "sense_id": "1", "tags": ["neuter"]}, {"sense": "Jagdwesen: Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)", "word": "鹰猎", "lang_code": "zh", "lang": "Chinesisch", "roman": "yīng liè", "sense_id": "1"}, {"sense": "Jagdwesen: Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)", "word": "falconry", "lang_code": "en", "lang": "Englisch", "sense_id": "1"}, {"sense": "Jagdwesen: Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)", "word": "श्येनपालन", "lang_code": "hi", "lang": "Hindi", "roman": "shyenapaalan", "sense_id": "1"}, {"sense": "Jagdwesen: Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)", "word": "алгыр куштар", "lang_code": "ky", "lang": "Kirgisisch", "roman": "algyr kuštar", "sense_id": "1"}, {"sense": "Jagdwesen: Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)", "word": "sakalininkystė", "lang_code": "lt", "lang": "Litauisch", "sense_id": "1"}, {"sense": "Jagdwesen: Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)", "word": "соколарство", "lang_code": "mk", "lang": "Mazedonisch", "roman": "sokolarstvo", "sense_id": "1", "tags": ["neuter"]}, {"sense": "Jagdwesen: Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)", "word": "соколиная охота", "lang_code": "ru", "lang": "Russisch", "sense_id": "1", "tags": ["feminine"]}, {"sense": "Jagdwesen: Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)", "word": "соколарство", "lang_code": "sr", "lang": "Serbisch", "roman": "sokolarstvo", "sense_id": "1", "tags": ["neuter"]}, {"sense": "Jagdwesen: Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)", "word": "соколарство", "lang_code": "sh", "lang": "Serbokroatisch", "roman": "sokolarstvo", "sense_id": "1", "tags": ["neuter"]}, {"sense": "Jagdwesen: Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)", "word": "sokoliarstvo", "lang_code": "sk", "lang": "Slowakisch", "sense_id": "1", "tags": ["neuter"]}, {"sense": "Jagdwesen: Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)", "word": "sokolarstvo", "lang_code": "sl", "lang": "Slowenisch", "sense_id": "1", "tags": ["neuter"]}, {"sense": "Jagdwesen: Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)", "word": "bajcowaŕska góńtwa", "lang_code": "dsb", "lang": "Niedersorbisch", "sense_id": "1", "tags": ["feminine"]}, {"sense": "Jagdwesen: Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)", "word": "bajcowa hońtwa", "lang_code": "hsb", "lang": "Obersorbisch", "sense_id": "1", "tags": ["feminine"]}, {"sense": "Jagdwesen: Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)", "word": "sokolnictví", "lang_code": "cs", "lang": "Tschechisch", "sense_id": "1", "tags": ["neuter"]}, {"sense": "Jagdwesen: Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)", "word": "соколине полювання", "lang_code": "uk", "lang": "Ukrainisch", "roman": "sokolyne poljuvannja", "sense_id": "1"}, {"sense": "Jagdwesen: Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)", "word": "соколині лови", "lang_code": "uk", "lang": "Ukrainisch", "roman": "sokolyni lovy", "sense_id": "1"}, {"sense": "Jagdwesen: Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)", "word": "соколярство", "lang_code": "uk", "lang": "Ukrainisch", "roman": "sokoljarstvo", "sense_id": "1"}, {"sense": "Jagdwesen: Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)", "word": "сокольництво", "lang_code": "uk", "lang": "Ukrainisch", "roman": "sokolʹnyctvo", "sense_id": "1"}, {"sense": "Jagdwesen: Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)", "word": "сакалінае паляванне", "lang_code": "be", "lang": "Weißrussisch", "roman": "sakalinae paljavanne", "sense_id": "1"}], "sounds": [{"ipa": "ˈbaɪ̯t͡sˌjaːkt"}, {"audio": "De-Beizjagd.ogg", "ogg_url": "https://commons.wikimedia.org/wiki/Special:FilePath/De-Beizjagd.ogg", "mp3_url": "https://upload.wikimedia.org/wikipedia/commons/transcoded/0/02/De-Beizjagd.ogg/De-Beizjagd.ogg.mp3"}], "hypernyms": [{"word": "Jagd", "sense_id": "1"}], "synonyms": [{"word": "Beize", "sense_id": "1"}, {"word": "Falkenjagd", "sense_id": "1"}, {"word": "Falknerei", "sense_id": "1"}], "raw_tags": ["f"], "senses": [{"glosses": ["Jagd mit Hilfe von abgerichteten Greifvögeln (Beizvögeln)"], "raw_tags": ["Jagdwesen"], "examples": [{"text": "In Deutschland benötigt man zur Ausübung der Balzjagd einen Falknerjagdschein."}], "senseid": "1", "id": "de-Beizjagd-de-noun-1"}]}

https://ru.wiktionary.org/wiki/Krankenversicherung has "От Kranker, элемента -en и Versicherung.", but the JSON doesn't seem to:

{"word": "Krankenversicherung", "pos": "noun", "lang_code": "de", "lang": "Немецкий", "sounds": [{"ipa": "ˈkʀaŋkn̩fɛɐ̯ˌzɪçəʀʊŋ", "tags": ["singular"]}, {"ipa": "ˈkʀaŋkn̩fɛɐ̯ˌzɪçəʀʊŋən", "tags": ["plural"]}], "hypernyms": [{"word": "Gesundheitswesen"}, {"word": "Gesundheitssystem"}, {"word": "Sozialversicherungssystem"}, {"word": "Versicherung"}], "synonyms": [{"word": "Kasse"}, {"word": "Krankenkasse"}], "senses": [{"glosses": ["страхование на случай болезни"], "id": "ru-Krankenversicherung-de-noun-3Nucl7Tf"}]}
xxyzz commented 3 months ago

Solved by referenced pull requests and fixed on kaikki.org.

donnerpeter commented 3 months ago

I see that this is present in JSON as a raw string. Is this compound information available in a more structured format?

xxyzz commented 3 months ago

These etymology texts are plain texts with some links, I don't think they could be converted to any structured data.

donnerpeter commented 3 months ago

I see, too bad :( Thanks for the explanation and your work!

kristian-clausal commented 3 months ago

Unless the text is commonly standardized into a format that doesn't change (preferably at all), it's really hard for us to manually parse them. We do this sometimes for the English edition for very common boilerplate stuff, but it's a ton of work, it's never perfect and the target can move. In this case, it would have to be text that is very consistent and then someone who knows German would need to code (or at least make a perfect spec for someone to us) a bespoke mini-parser with a ton of regexing and if-then.

The easiest place to try to get structured data is from (stable) templates and tables. However, even with tables people just tend to do things so willy-nilly that the process of creating a table-extractor is a real pain. The English edition has some tables be read right-to-left.

Using wikitext markup as the basis for a dictionary makes it accessible for humans to input stuff, but...