Open hinrikur opened 4 years ago
Í IcePaHC formgerðinni eru göt í setningunni (þar sem t.d. sögn er sleppt) merkt með einkennisnúmerum í taggi setningar (t.d. IP-MAT=1
bendir á nærliggjandi setninunga IP-MAT-1
og aðalsögnina í henni). depender.py nær ekki utan um þetta eins og er.
hér er tréð sem hausinn er valinn úr í keyrslunni og hausareglan sem er notuð (Ath hausareglan er default reglan, þ.e. engin regla fannst)
(2, 0) (IP-MAT=1
(PP
(P í-í)
(NP
(NS-D vængjum-vængur)
(NP-POS (ADJS-G minnsta-minni) (N-G fiðrildisins-fiðrildi))))
(CP-ADV
(WADVP-3 0)
(C sem-sem)
(IP-SUB
(ADVP *T*-3)
(PP
(P )
(NP
(N-N heilabúi-heilabúi)
(NP-POS (QS-G mesta-mikill) (N-G gáfumannsins-gáfumaður))))))) IP-MAT=1
{'dir': 'r', 'rules': ['.*']}
16
dir='l'
) en ekki til hægri eins og núna (sjá komment á viðeigandi stað í kóða_select_head()
fallinu þannig hann velur ekki vitlausan haus (líklega í gegnum breyttar hausareglur).create_dependency_graph
þannig ef haus er valinn í setningu með =1
í taggi komi a. ekkert ('_'
) eða b. auðþekkjanlegt merki. Rétt vensl væru síðan sett inn eftirá (ekki góð lausn)Búið að ganga frá langflestum villum með því að senda undirtré aftur í gegnum hausaval eftir fyrsta hausavalið:
# head selection
for i in const:
# Catch index referenced sentences in treebank
if re.match('=\d', t[i].label()[-2:]):# or t[i].label() == 'CONJP
clause_index = t[i].label()[-1]
# re.match('\d', t[i].label()[-2:])
for j in const + singles:
if re.match(f'-{clause_index}', t[j].label()[-2:]):
if isinstance(t[j][0], str):
t[i].set_id(t[j].id())
else:
self._select_head(t[i], main_clause=t[j])
else:
self._select_head(t[i])
# fixes subtrees with 1 child but wrong id
for i in singles:
if isinstance(t[i][0], Tree) and t[i].id() != t[i][0].id():
if re.match('=\d', t[i].label()[-2:]):
# print('\nMain Clause indicated\n')
clause_index = t[i].label()[-1]
# re.match('\d', t[i].label()[-2:])
for j in const:
if re.match(f'-{clause_index}', t[j].label()[-2:]):
self._select_head(t[i][0], main_clause=t[j])
else:
t[i].set_id(t[i][0].id())
Þetta skilar betri niðurstöðum en hægir á keyrslu. Þarf að optimisera.
Miðað við eftirstandandi dæmi myndi mögulega leysa málið að senda tré með =\d
í taggi aftur í gegn um hausaval en það myndi hægja svakalega mikið á keyrslunni.
Dæmi: Ath. að lína 4 á að vera eina rótin en 16 er það líka