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

hu_core_news_trf-ben token.children hibás #49

Closed
boapps opened this issue Nov 19, 2022 · 3 comments
Closed

hu_core_news_trf-ben token.children hibás #49

boapps opened this issue Nov 19, 2022 · 3 comments
Assignees

Comments

@boapps
Copy link

boapps commented Nov 19, 2022

Hiba leírása
token.children mindig üres generátorral tér vissza a hu_core_news_trf modellben.

Hiba előidézése
Az alábbi kód szemlélteti (google colab környezetben):

doc = nlp('Peti evett egy almát.')
displacy.render(doc, style="dep", jupyter=True)

for token in doc:
    print(token.text, token.head, [child for child in token.children])

A displacy kimenete alapján helyesen elemzi a mondatot a modell, ezt megerősíti a kiírásnál, hogy helyes a token.head (a displacy kódjába ásva, kiderült az is token.head-et használ).
A token.children elemit kiolvasva mégis üres listát kapunk.

Peti evett []
evett evett []
egy almát []
almát evett []
. evett []

Elvárt működés
A token.children-nek az adott token gyerekeit kéne visszaadnia.

További kontextus
A fenti kódot hu_core_news_lg-on futtatva helyes kimenetet kapunk.

Peti evett []
evett evett [Peti, almát, .]
egy almát []
almát evett [egy]
. evett []

Eredetileg a DependencyMatcher használata közben vettem észre hibát, onnan sikerült idáig visszavezetnem a hiba forrását.

@boapps boapps added the bug label Nov 19, 2022
@boapps
Copy link
Author

boapps commented Nov 19, 2022

Időközben rájöttem, hogy a hu_core_news_trf nem tartalmazza a parser komponenst (amire szükség van a token.children-hez).
Ez azt hiszem megmagyarázza a jelenséget.

Elnézést a téves hibajelentésért!

@boapps boapps closed this as completed Nov 19, 2022
@oroszgy oroszgy reopened this Nov 21, 2022
@oroszgy oroszgy added the parser label Nov 21, 2022
@oroszgy oroszgy self-assigned this Nov 21, 2022
@oroszgy
Copy link
Member

oroszgy commented Nov 21, 2022

A hiba valóban fennáll. Bár a trf modellnek valóban nem része a standard parser komponens, viszont végez függőségi elemzést, így a children ill. parent attribútumoknak helyesnek kellene lenniük.

Köszi az észrevételt, hamarosan több infóval jelentkezem.

@oroszgy
Copy link
Member

oroszgy commented Jun 13, 2023

A token.children attribútum valóban üres, amit a spacy komponensben lévő hiba okoz. Az usptream hiba javításával, egy új releas-zel mi is javítjuk majd a problémát. Addig ez a workaround talán segíthet:

from typing import *
import hu_core_news_trf

nlp = hu_core_news_trf.load()

children: List[List[Any]] = [[] for tok in doc]

for tok in doc:
  if tok.i != tok.head.i:
    children[tok.head.i].append(tok)

@oroszgy oroszgy closed this as completed Jun 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants