!pip -q install stanza
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.7/1.7 MB 22.7 MB/s eta 0:00:00
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 608.4/608.4 kB 40.3 MB/s eta 0:00:00
!pip install conllu
Collecting conllu
  Downloading conllu-6.0.0-py3-none-any.whl.metadata (21 kB)
Downloading conllu-6.0.0-py3-none-any.whl (16 kB)
Installing collected packages: conllu
Successfully installed conllu-6.0.0
from conllu import parse
import stanza
stanza.download('pl')
nlp = stanza.Pipeline(
    lang='pl',
    processors='tokenize,pos,lemma,depparse',
    use_gpu=True
)
INFO:stanza:Downloaded file to /root/stanza_resources/resources.json
INFO:stanza:Downloading default packages for language: pl (Polish) ...
INFO:stanza:Downloaded file to /root/stanza_resources/pl/default.zip
INFO:stanza:Finished downloading models and saved to /root/stanza_resources
INFO:stanza:Checking for updates to resources.json in case models have been updated.  Note: this behavior can be turned off with download_method=None or download_method=DownloadMethod.REUSE_RESOURCES
INFO:stanza:Downloaded file to /root/stanza_resources/resources.json
WARNING:stanza:Language pl package default expects mwt, which has been added
INFO:stanza:Loading these models for language: pl (Polish):
============================
| Processor | Package      |
----------------------------
| tokenize  | pdb          |
| mwt       | pdb          |
| pos       | pdb_charlm   |
| lemma     | pdb_nocharlm |
| depparse  | pdb_charlm   |
============================

WARNING:stanza:GPU requested, but is not available!
INFO:stanza:Using device: cpu
INFO:stanza:Loading: tokenize
INFO:stanza:Loading: mwt
INFO:stanza:Loading: pos
INFO:stanza:Loading: lemma
INFO:stanza:Loading: depparse
INFO:stanza:Done loading processors!
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]
{'id': 2,
 'form': 'jest',
 'lemma': 'być',
 'upos': 'AUX',
 'xpos': 'fin:sg:ter:imperf',
 'feats': {'Aspect': 'Imp',
  'Mood': 'Ind',
  'Number': 'Sing',
  'Person': '3',
  'Tense': 'Pres',
  'VerbForm': 'Fin',
  'Voice': 'Act'},
 'head': 4,
 'deprel': 'cop',
 'deps': None,
 'misc': {'start_char': '5', 'end_char': '9'}}
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.")
[{'lemma': 'ja', 'surface': 'Ja'},
 {'lemma': 'być', 'surface': 'jestem'},
 {'lemma': 'w', 'surface': 'w'},
 {'lemma': 'dom', 'surface': 'domu'}]
decompose_example_line(EGS[0])
{'example_id': '1.1',
 'csb': 'Jô jem doma.',
 'pl': 'Ja jestem w domu.',
 'url': 'https://pl.wiktionary.org/w/index.php?title=b%C3%ABc&oldid=8477974#csb',
 'wiki': "(1.1) ''[[jô|Jô]] '''[[bëc|jem]]''' [[doma]].'' → ([[ja|Ja]]) '''[[być|jestem]]''' [[w]] [[dom]]u.",
 'wiki_csb': '[[jô|Jô]] [[bëc|jem]] [[doma]].',
 'wiki_pl': '([[ja|Ja]]) [[być|jestem]] [[w]] [[dom]]u.'}
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)
# text = Ja jestem w domu.
# sent_id = 0
1	Ja	ja	PRON	ppron12:sg:nom:m1:pri	Animacy=Hum|Case=Nom|Gender=Masc|Number=Sing|Person=1|PronType=Prs	2	nsubj	_	start_char=0|end_char=2
2	jestem	być	VERB	fin:sg:pri:imperf	Aspect=Imp|Mood=Ind|Number=Sing|Person=1|Tense=Pres|VerbForm=Fin|Voice=Act	0	root	_	start_char=3|end_char=9
3	w	w	ADP	prep:loc:nwok	AdpType=Prep|Variant=Short	4	case	_	start_char=10|end_char=11
4	domu	dom	NOUN	subst:sg:loc:m3	Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing	2	obl	_	SpaceAfter=No|start_char=12|end_char=16
5	.	.	PUNCT	interp	PunctType=Peri	2	punct	_	SpacesAfter=\n|start_char=16|end_char=17

# text = Jest tata w domu?
# sent_id = 1
1	Jest	być	VERB	fin:sg:ter:imperf	Aspect=Imp|Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin|Voice=Act	0	root	_	start_char=18|end_char=22
2	tata	tata	NOUN	subst:sg:nom:m1	Animacy=Hum|Case=Nom|Gender=Masc|Number=Sing	1	nsubj	_	start_char=23|end_char=27
3	w	w	ADP	prep:loc:nwok	AdpType=Prep|Variant=Short	4	case	_	start_char=28|end_char=29
4	domu	dom	NOUN	subst:sg:loc:m3	Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing	1	obl	_	SpaceAfter=No|start_char=30|end_char=34
5	?	?	PUNCT	interp	PunctType=Qest	1	punct	_	SpacesAfter=\n|start_char=34|end_char=35

# text = Tata jest na ciebie zły.
# sent_id = 2
1	Tata	tata	NOUN	subst:sg:nom:m1	Animacy=Hum|Case=Nom|Gender=Masc|Number=Sing	5	nsubj	_	start_char=36|end_char=40
2	jest	być	AUX	fin:sg:ter:imperf	Aspect=Imp|Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin|Voice=Act	5	cop	_	start_char=41|end_char=45
3	na	na	ADP	prep:acc	AdpType=Prep	4	case	_	start_char=46|end_char=48
4	ciebie	ty	PRON	ppron12:sg:acc:m1:sec:akc	Animacy=Hum|Case=Acc|Gender=Masc|Number=Sing|Person=2|PronType=Prs|Variant=Long	5	obl	_	start_char=49|end_char=55
5	zły	zły	ADJ	adj:sg:nom:m1:pos	Animacy=Hum|Case=Nom|Degree=Pos|Gender=Masc|Number=Sing	0	root	_	SpaceAfter=No|start_char=56|end_char=59
6	.	.	PUNCT	interp	PunctType=Peri	5	punct	_	SpacesAfter=\n|start_char=59|end_char=60

# text = Czy byłeś w domu?
# sent_id = 3
1	Czy	czy	PART	part	PartType=Int	2	advmod	_	start_char=61|end_char=64
2-3	byłeś	_	_	_	_	_	_	_	start_char=65|end_char=70
2	był	być	VERB	praet:sg:m1:imperf	Animacy=Hum|Aspect=Imp|Gender=Masc|Mood=Ind|Number=Sing|Tense=Past|VerbForm=Fin|Voice=Act	0	root	_	start_char=65|end_char=68
3	eś	być	AUX	aglt:sg:sec:imperf:wok	Aspect=Imp|Number=Sing|Person=2|Variant=Long	2	aux:clitic	_	start_char=68|end_char=70
4	w	w	ADP	prep:loc:nwok	AdpType=Prep|Variant=Short	5	case	_	start_char=71|end_char=72
5	domu	dom	NOUN	subst:sg:loc:m3	Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing	2	obl	_	SpaceAfter=No|start_char=73|end_char=77
6	?	?	PUNCT	interp	PunctType=Qest	2	punct	_	SpacesAfter=\n|start_char=77|end_char=78

# text = Albo biało, albo czarno.
# sent_id = 4
1	Albo	albo	CCONJ	conj	_	2	cc:preconj	_	start_char=79|end_char=83
2	biało	biały	ADJ	adja	Hyph=Yes	0	root	_	SpaceAfter=No|start_char=84|end_char=89
3	,	,	PUNCT	interp	PunctType=Comm	5	punct	_	start_char=89|end_char=90
4	albo	albo	CCONJ	conj	_	5	cc	_	start_char=91|end_char=95
5	czarno	czarno	ADV	adv:pos	Degree=Pos	2	conj	_	SpaceAfter=No|start_char=96|end_char=102
6	.	.	PUNCT	interp	PunctType=Peri	2	punct	_	SpacesAfter=\n|start_char=102|end_char=103

# text = Czarny jak smoła.
# sent_id = 5
1	Czarny	czarny	ADJ	adj:sg:nom:m2:pos	Animacy=Nhum|Case=Nom|Degree=Pos|Gender=Masc|Number=Sing	0	root	_	start_char=104|end_char=110
2	jak	jak	SCONJ	comp	ConjType=Comp	3	mark	_	start_char=111|end_char=114
3	smoła	smoło	NOUN	subst:sg:nom:f	Case=Nom|Gender=Fem|Number=Sing	1	obl:cmpr	_	SpaceAfter=No|start_char=115|end_char=120
4	.	.	PUNCT	interp	PunctType=Peri	1	punct	_	SpacesAfter=\n|start_char=120|end_char=121

# text = Biała suknia.
# sent_id = 6
1	Biała	biały	ADJ	adj:sg:nom:f:pos	Case=Nom|Degree=Pos|Gender=Fem|Number=Sing	2	amod	_	start_char=122|end_char=127
2	suknia	sukiia	NOUN	subst:sg:nom:f	Case=Nom|Gender=Fem|Number=Sing	0	root	_	SpaceAfter=No|start_char=128|end_char=134
3	.	.	PUNCT	interp	PunctType=Peri	2	punct	_	SpacesAfter=\n|start_char=134|end_char=135

# text = Lekki jak piórko.
# sent_id = 7
1	Lekki	lekki	ADJ	adj:sg:nom:m3:pos	Animacy=Inan|Case=Nom|Degree=Pos|Gender=Masc|Number=Sing	0	root	_	start_char=136|end_char=141
2	jak	jak	SCONJ	comp	ConjType=Comp	3	mark	_	start_char=142|end_char=145
3	piórko	piórko	NOUN	subst:sg:nom:n:ncol	Case=Nom|Gender=Neut|Number=Sing	1	obl:cmpr	_	SpaceAfter=No|start_char=146|end_char=152
4	.	.	PUNCT	interp	PunctType=Peri	1	punct	_	SpacesAfter=\n|start_char=152|end_char=153

# text = Jakim sposobem się tam znalazłeś?
# sent_id = 8
1	Jakim	jaki	DET	adj:sg:inst:m3:pos	Animacy=Inan|Case=Ins|Gender=Masc|Number=Sing|PronType=Int	2	det	_	start_char=154|end_char=159
2	sposobem	sposób	NOUN	subst:sg:inst:m3	Animacy=Inan|Case=Ins|Gender=Masc|Number=Sing	5	obl	_	start_char=160|end_char=168
3	się	się	PRON	part	PronType=Prs|Reflex=Yes	5	expl:pv	_	start_char=169|end_char=172
4	tam	tam	ADV	adv	PronType=Dem	5	advmod	_	start_char=173|end_char=176
5-6	znalazłeś	_	_	_	_	_	_	_	SpaceAfter=No|start_char=177|end_char=186
5	znalazł	znaleźć	VERB	praet:sg:m1:perf	Animacy=Hum|Aspect=Perf|Gender=Masc|Mood=Ind|Number=Sing|Tense=Past|VerbForm=Fin|Voice=Act	0	root	_	start_char=177|end_char=184
6	eś	być	AUX	aglt:sg:sec:imperf:wok	Aspect=Imp|Number=Sing|Person=2|Variant=Long	5	aux:clitic	_	start_char=184|end_char=186
7	?	?	PUNCT	interp	PunctType=Qest	5	punct	_	SpacesAfter=\n|start_char=186|end_char=187

# text = Kłaść się spać.
# sent_id = 9
1	Kłaść	kłaść	VERB	inf:imperf	Aspect=Imp|VerbForm=Inf|Voice=Act	0	root	_	start_char=188|end_char=193
2	się	się	PRON	part	PronType=Prs|Reflex=Yes	1	expl:pv	_	start_char=194|end_char=197
3	spać	spać	VERB	inf:imperf	Aspect=Imp|VerbForm=Inf|Voice=Act	1	xcomp	_	SpaceAfter=No|start_char=198|end_char=202
4	.	.	PUNCT	interp	PunctType=Peri	1	punct	_	SpacesAfter=\n|start_char=202|end_char=203

# text = Śpiący kot myszy nie łapie.
# sent_id = 10
1	Śpiący	śpiący	ADJ	adj:sg:nom:m2:pos	Animacy=Nhum|Case=Nom|Degree=Pos|Gender=Masc|Number=Sing	2	amod	_	start_char=204|end_char=210
2	kot	kot	NOUN	subst:sg:nom:m2	Animacy=Nhum|Case=Nom|Gender=Masc|Number=Sing	5	nsubj	_	start_char=211|end_char=214
3	myszy	mysz	NOUN	subst:sg:gen:f	Case=Gen|Gender=Fem|Number=Sing	2	nmod	_	start_char=215|end_char=220
4	nie	nie	PART	part	Polarity=Neg	5	advmod:neg	_	start_char=221|end_char=224
5	łapie	łapać	VERB	fin:sg:ter:imperf	Aspect=Imp|Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin|Voice=Act	0	root	_	SpaceAfter=No|start_char=225|end_char=230
6	.	.	PUNCT	interp	PunctType=Peri	5	punct	_	SpacesAfter=\n|start_char=230|end_char=231

# text = Moniki kot rozbił dzbanek.
# sent_id = 11
1	Moniki	Monika	PROPN	subst:sg:nom:f	Case=Nom|Gender=Fem|Number=Sing	3	nsubj	_	start_char=232|end_char=238
2	kot	kot	NOUN	subst:sg:nom:m2	Animacy=Nhum|Case=Nom|Gender=Masc|Number=Sing	1	flat	_	start_char=239|end_char=242
3	rozbił	rozbić	VERB	praet:sg:m3:perf	Animacy=Hum|Aspect=Perf|Gender=Masc|Mood=Ind|Number=Sing|Tense=Past|VerbForm=Fin|Voice=Act	0	root	_	start_char=243|end_char=249
4	dzbanek	dzbanek	NOUN	subst:sg:acc:m3	Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing	3	obj	_	SpaceAfter=No|start_char=250|end_char=257
5	.	.	PUNCT	interp	PunctType=Peri	3	punct	_	SpaceAfter=No|start_char=257|end_char=258