В следующем коде 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