Kashubian UD via Polish
Further attempts
!pip -q install stanza
!pip install conllu
from conllu import parse
import stanza
stanza.download('pl')
nlp = stanza.Pipeline(
lang='pl',
processors='tokenize,pos,lemma,depparse',
use_gpu=True
)
CSB_WIKI = """Film je wizualnym dokôzã złożonym z dowòlno dłudżi serëji nastąpiającëch pò se òbrazów, jaczé wëwòłëją doznanié rësznotë ë bezùstónkòwòscë. Termin "film" pòchôdô òd anielsczégò słowa na fòtograficzną blewiązkã, jakô bëła pierszim wôżnym medium do jich zapisowaniô ë distribùcëji.
Pierszé filmë twòrzoné w XIX-im stolatim bëłë czôrno-biôłé ë bez zwãkù. Òd negò czasu we filmòwi technice miôł plac zacht pòkrok. Wikszosc filmów, jaczé pòwstôwają na zôczątkù XXI-gò stolatô je farwnô ë ze zwãkòwą stegną."""
CSB_WIKI = """film bëc wizualny dokôz złożony z dowòlno dłudżi serëji nastąpiającëch pò se òbrazów, jaczé wëwòłëją doznanié rësznotë ë bezùstónkòwòscë. Termin "film" pòchôdô òd anielsczégò słowa na fòtograficzną blewiązkã, jakô bëła pierszim wôżnym medium do jich zapisowaniô ë distribùcëji.
Pierszé filmë twòrzoné w XIX-im stolatim bëłë czôrno-biôłé ë bez zwãkù. Òd negò czasu we filmòwi technice miôł plac zacht pòkrok. Wikszosc filmów, jaczé pòwstôwają na zôczątkù XXI-gò stolatô je farwnô ë ze zwãkòwą stegną."""
CGPT_PL = """Film jest wizualnym dziełem złożonym z dowolnie długiej serii następujących po sobie obrazów, które wywołują doznanie ruchu i ciągłości. Termin „film” pochodzi od angielskiego słowa na fotograficzną taśmę, która była pierwszym ważnym medium do ich zapisywania i dystrybucji.
Pierwsze filmy tworzone w XIX-ym wieku były czarno-białe i bez dźwięku. Od tego czasu w technice filmowej miał miejsce znaczny postęp. Większość filmów, które powstają na początku XXI wieku, jest kolorowa i ze ścieżką dźwiękową."""
doc = nlp(CGPT_PL)
conllu_text = "{:C}".format(doc)
cp = parse(conllu_text)
cp[0][1]
PL_WIKTIONARY_EGS = """
(1.1) Jô jem doma. → (Ja) jestem w domu.\thttps://pl.wiktionary.org/w/index.php?title=b%C3%ABc&oldid=8477974#csb\t(1.1) ''[[jô|Jô]] '''[[bëc|jem]]''' [[doma]].'' → ([[ja|Ja]]) '''[[być|jestem]]''' [[w]] [[dom]]u.
(1.1) Je tatk doma? → Jest tata w domu?\thttps://pl.wiktionary.org/w/index.php?title=doma&oldid=7633146#csb\t(1.1) ''[[bëc|Je]] [[tatk]] [[doma]]?'' → [[być|Jest]] [[tata]] '''[[w]] [[dom]]u'''?
(1.1) Tatk je złi na cebie. → Tata jest na ciebie zły.\thttps://pl.wiktionary.org/w/index.php?title=tatk&oldid=8251084#csb\t(1.1) ''[[tatk|Tatk]] [[bëc|je]] [[złi]] [[na]] [[të|cebie]].'' → '''[[tata|Tata]]''' [[być|jest]] [[na]] [[ty|ciebie]] [[zły]].
(1.1) Béł të doma? → (Czy) byłeś w domu?\thttps://pl.wiktionary.org/w/index.php?title=t%C3%AB&oldid=8642789#csb\t(1.1) ''[[bëc|Béł]] [[të]] [[doma]]?'' → ([[czy|Czy]]) [[być|byłeś]] [[w]] [[dom]]u?
(1.1) Abò biôło, abò czôrno. → Albo biało, albo czarno.\thttps://pl.wiktionary.org/w/index.php?title=ab%C3%B2&oldid=8205051\t(1.1) ''[[abò|Abò]] [[biôłi|biôło]], [[abò]] [[czôrny|czôrno]].'' → '''[[albo|Albo]]''' [[biały|biało]], '''[[albo]]''' [[czarny|czarno]].
(1.1) Czôrny jak smòła. → Czarny jak smoła.\thttps://pl.wiktionary.org/w/index.php?title=cz%C3%B4rny&oldid=8438374#csb\t(1.1) ''[[czôrny|Czôrny]] [[jak]] [[smòła]].'' → [[czarny|Czarny]] [[jak]] '''[[smoła]]'''.
(1.1) Biôłô sëknia. → Biała suknia.\thttps://pl.wiktionary.org/w/index.php?title=bi%C3%B4%C5%82i&oldid=8438090#csb\t(1.1) ''[[biôłi|Biôłô]] [[sëknia]].'' → '''[[biały|Biała]]''' [[suknia]].
(1.1) Letczi jak piórkò. → Lekki jak piórko.\thttps://pl.wiktionary.org/w/index.php?title=jak&oldid=8691423#csb\t(1.1) ''[[letczi|Letczi]] [[jak]] [[piórkò]].'' → [[lekki|Lekki]] '''[[jak]]''' [[piórko]].
(2.1) Jak të sã tam dostôł? → Jakim sposobem się tam znalazłeś?\thttps://pl.wiktionary.org/w/index.php?title=jak&oldid=8691423#csb\t(2.1) ''[[jak|Jak]] [[të]] [[sã]] [[tam]] [[dostac|dostôł]]?'' → '''[[jaki|Jakim]] [[sposób|sposobem]]''' [[się]] [[tam]]
(1.1) Kłasc sã spac. → Kłaść się spać.\thttps://pl.wiktionary.org/w/index.php?title=s%C3%A3&oldid=8645453#csb\t(1.1) ''[[kłasc|Kłasc]] [[sã]] [[spac]].'' → [[kłaść|Kłaść]] '''[[się]]''' [[spać]].
(1.1) Kòt spiący mëszi nie chwôtô. → Śpiący kot myszy nie łapie.\thttps://pl.wiktionary.org/w/index.php?title=spac&oldid=8438155#csb\t''[[kòt|Kòt]] [[spac|spiący]] [[mësz]]i [[nie]] [[chwôtac|chwôtô]].'' → '''[[spać|Śpiący]]''' [[kot]] [[mysz]]y [[nie]] [[łapać|łapie]].
(1.1) Móniczin kòt skazył zbónk. → Moniki kot rozbił dzbanek.\thttps://pl.wiktionary.org/w/index.php?title=k%C3%B2t&oldid=8213903#csb\t''[[Mónika|Móniczin]] [[kòt]] [[skazac|skazył]] [[zbónk]].'' → [[Monika|Moniki]] '''kot''' [[rozbić|rozbił]] [[dzbanek]].
"""
EGS = [x for x in PL_WIKTIONARY_EGS.split("\n") if x != ""]
def decompose_example_line(line):
data = {}
parts = line.split("\t")
rendered = parts[0]
rendered_parts = rendered.split(" → ")
pl = rendered_parts[1]
# extract example number
lparen = rendered_parts[0].find("(")
rparen = rendered_parts[0].find(")")
data["example_id"] = rendered_parts[0][lparen + 1:rparen]
data["csb"] = rendered_parts[0][rparen + 1:].strip()
pl = pl.replace("(", "").replace(")", "").strip()
data["pl"] = pl
data["url"] = parts[1]
data["wiki"] = parts[2]
wiki = data["wiki"].replace("'''", "").replace("''", "")
rparen = wiki.find(")")
wiki = wiki[rparen + 1:].strip()
wiki_parts = [x.strip() for x in wiki.split("→")]
data["wiki_csb"] = wiki_parts[0]
data["wiki_pl"] = wiki_parts[1]
return data
def get_wiki_pairs(line):
pairs = []
line = line.strip(".;?!")
for tok in line.split(" "):
tok = tok.strip(".;?!")
if "]][[" in tok:
inner_pairs = get_wiki_pairs(tok)
pairs += inner_pairs
continue
if tok.startswith("[["):
tok = tok[2:]
if tok.endswith("]]"):
tok = tok[:-2]
if tok.startswith("[[") and tok.endswith("]]"):
tok = tok[2:-2]
if "|" in tok:
parts = tok.split("|")
pairs.append({"lemma": parts[0], "surface": parts[1]})
continue
else:
left = tok.find("[[")
right = tok.find("]]")
left = 0 if left == -1 else left
right = len(tok) if right == -1 else right
lemma = tok[left:right]
surface = tok.replace("[[", "").replace("]]", "")
pairs.append({"lemma": lemma, "surface": surface})
return pairs
get_wiki_pairs("[[ja|Ja]] [[być|jestem]] [[w]] [[dom]]u.")
decompose_example_line(EGS[0])
PL_WIKTIONARY_PAIRS = """
dokôz zeczownik, rodzaj męski 1.1 dzieło
zwãk rzeczownik, rodzaj męski 1.1 dźwięk
wiedno przysłówek 1.1 zawsze
jaż spójnik 1.1 aż
të zaimek osobowy 1.1 ty
achtny przymiotnik 1.1 szanowny
adaptacjô rzeczownik, rodzaj żeński 1.1 adaptacja
adapter rzeczownik, rodzaj męski 1.1 adapter
adjustacjô rzeczownik, rodzaj żeński 1.1 adjustacja
adjustowac czasownik przechodni niedokonany 1.1 adjustować
abdikacëjô rzeczownik, rodzaj żeński 1.1 abdykacja abdikacjô
abdikòwac czasownik niedokonany 1.1 abdykować
abecadło rzeczownik, rodzaj nijaki 1.1 alfabet
abisal rzeczownik, rodzaj męski 1.1 abisal
abò spójnik 1.1 albo
"""
PL_TEXT = []
for line in PL_WIKTIONARY_EGS.split("\n"):
if line == "":
continue
parts = line.split("\t")
rendered = parts[0]
rendered_parts = rendered.split(" → ")
pl = rendered_parts[1]
pl = pl.replace("(", "").replace(")", "").strip()
PL_TEXT.append(pl)
egs = nlp("\n".join(PL_TEXT))
conllu_egs = "{:C}".format(egs)
print(conllu_egs)