Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

depender.py / postProcess.sh - Finna varanlega lausn á “None” í CoNLL-U úttaki #4

Open
hinrikur opened this issue Mar 6, 2020 · 4 comments
Assignees
Labels
bug Something isn't working

Comments

@hinrikur
Copy link
Collaborator

hinrikur commented Mar 6, 2020

Allir dálkar eru None:

Tekið út með sed skipun núna (þar sem kemur bara en þyrfti að koma í veg fyrir að það skrifist inn yfir höfuð, sem er í depender.py. Ekki almennilega ljóst hvað veldur þessu en líklega einhvers konar artifact úr conversion ferlinu.

Vensl eru None:

Einhverra hluta vegna fá sumir venslahausar ekki tölu heldur haldast sem None. Lagað (tímabundið) með eftirfarandi:

self.nodes = defaultdict(lambda:  {'address': None,
                                   'word': None,
                                   'lemma': None,
                                   'ctag': None,    # upostag
                                   'tag': None,     # xpostag
                                   'feats': None,
                                   'head': '_', # None, # TODO: find permanent fix!
                                   'deps': defaultdict(list),
                                   'rel': None,
                                   })

Default hausinn er merktur með '_' streng, sem pyconll nær að lesa en virkar líklega ekki í UD validation skriptunum

@hinrikur hinrikur added the bug Something isn't working label Mar 6, 2020
@hinrikur hinrikur self-assigned this Mar 6, 2020
@hinrikur
Copy link
Collaborator Author

hinrikur commented Mar 6, 2020

Úttakssetning með þessari villu (dæmi):
Sjá línu 8 þar sem vantar haus (var None fyrir tímabundnu lagfæringarnar að ofan)

# sent_id = 1450.bandamenn.nar-sag.psd_205_22056
1	en	en	CCONJ	CONJ	_	5	cc	_	c
2	móðir	móðir	NOUN	N-N	Case=Nom|Number=Sing|Definite=Ind|Gender=Fem	5	nsubj	_	nven
3	hans	hann	PRON	PRO-G	Case=Gen|Number=Sing|Gender=Masc|PronType=Prs	2	nmod:poss	_	fpkee
4	var	vera	AUX	BEDI	Number=Sing|Mood=Ind|Tense=Past|VerbForm=Fin|Voice=Act|Person=3	5	cop	_	sfg3eþ
5	Þorgerður	þorgerður	PROPN	NPR-N	Case=Nom|Number=Sing|Definite=Ind|Gender=Fem	0	root	_	nven-s
6	dóttir	dóttir	NOUN	N-N	Case=Nom|Number=Sing|Definite=Ind|Gender=Fem	5	appos	_	nven
7	Egils	egill	PROPN	NPR-G	Case=Gen|Number=Sing|Definite=Ind|Gender=Masc	6	nmod:poss	_	nkee-s
8	Skalla-Grímssonar	skallagrímsson	PROPN	NPR-G	Case=Gen|Number=Sing|Definite=Ind|Gender=Masc	_	_	_	nkee-s
9	Kveldúlfssonar	kveldúlfsson	PROPN	NPR-G	Case=Gen|Number=Sing|Definite=Ind|Gender=Masc	7	nmod:poss	_	nkee-s
10	.	.	PUNCT	.	_	5	punct	_	.

@hinrikur
Copy link
Collaborator Author

hinrikur commented Mar 9, 2020

Það var if-statement vesen sem orsakaði þetta. Línar lúkkar svona núna:

if re.match("IP-MAT|IP-MAT-[^=].*|INTJP|FRAG|CP-QUE-SPE|IP-IMP-SPE[^=1]|QTP|CODE|LATIN|TRANSLATION|META|IP-IMP|CP-QUE|CP-EXL|CP-THT", head_tag):  #todo root phrase types from config
    self.dg.get_by_address(mod_nr).update({'head': 0, 'rel': 'root'})  #todo copula not a head
    self.dg.root = self.dg.get_by_address(mod_nr)
else:
    # TEMP: This is most likely why "None" is popping up in the output
    self.dg.get_by_address(mod_nr).update({'head': head_nr, 'rel': '***'})
    self.dg.root = self.dg.get_by_address(mod_nr)

else klausan merkir orðið með sínu eigin númeri sem venslahaus og *** sem venslagerð. Þá er hægt að finna það auðveldlega til að lagfæra / debugga

@hinrikur
Copy link
Collaborator Author

None líklega farið úr úttakinu sem síkt. Lokað

@hinrikur hinrikur reopened this Mar 18, 2020
@hinrikur
Copy link
Collaborator Author

None er tekið út en á sumum stöðum er rel merkt sem ***.

Með leitarstrengnum grep '\*\*\*' CoNLLU_output/* | wc -l eru 2507 línur merktar svona.

Þetta eru línur þar sem engin venslagerð fannst. Þarf að bæta inn í rules.py

Kóði sem orsakar:

else:
       # TEMP: This is most likely why "None" is popping up in the output
       self.dg.get_by_address(mod_nr).update({'head': head_nr, 'rel': '***'})
       self.dg.root = self.dg.get_by_address(mod_nr)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant