Откуда взялся «составной» DEP? - PullRequest
1 голос
/ 04 апреля 2019

В следующем коде SpaCy:

import spacy
nlp = spacy.load('en_core_web_sm')
doc = nlp("It was yesterday morning.")
doc[2].dep_
# 'compound'
doc[2].dep
# 7037928807040764755
doc[3].dep_
# 'npadmod'
doc[3].dep
# 428

Я могу отследить npadmod назад к symbols.pxd enum.Но где определяется 'compound' (и строка, и идентификатор)?

[решено] Некоторые DEP происходят из перечисления symbols, некоторые динамически добавляются самим языком.Значением является хеш имени строки, и они содержатся в StringStore.

import spacy
nlp = spacy.load('en_core_web_sm')
doc = nlp("It was yesterday morning.")
doc[2].dep_
# 'compound'
doc[2].dep
# 7037928807040764755
nlp.vocab.strings[doc[2].dep]
# 'compound'
nlp.vocab.strings['compound']
# 7037928807040764755
...