2023-06-14 18:48:41 +03:00
|
|
|
from libc.stdint cimport int32_t, int64_t, uint8_t, uint32_t, uint64_t
|
2021-01-14 09:30:41 +03:00
|
|
|
from libcpp.unordered_map cimport unordered_map
|
2023-06-14 18:48:41 +03:00
|
|
|
from libcpp.unordered_set cimport unordered_set
|
|
|
|
from libcpp.vector cimport vector
|
2019-04-24 12:26:38 +03:00
|
|
|
|
2020-03-02 13:48:10 +03:00
|
|
|
from .parts_of_speech cimport univ_pos_t
|
2023-06-14 18:48:41 +03:00
|
|
|
from .typedefs cimport attr_t, flags_t, hash_t
|
2019-04-24 12:26:38 +03:00
|
|
|
|
2014-12-19 22:51:33 +03:00
|
|
|
|
2015-01-12 02:26:22 +03:00
|
|
|
cdef struct LexemeC:
|
2014-12-19 22:51:33 +03:00
|
|
|
flags_t flags
|
2015-04-19 11:31:31 +03:00
|
|
|
|
2016-03-10 15:01:34 +03:00
|
|
|
attr_t lang
|
|
|
|
|
2014-12-19 22:51:33 +03:00
|
|
|
attr_t id
|
2015-01-12 03:23:44 +03:00
|
|
|
attr_t length
|
|
|
|
|
2015-01-22 18:08:25 +03:00
|
|
|
attr_t orth
|
2015-01-23 22:17:03 +03:00
|
|
|
attr_t lower
|
|
|
|
attr_t norm
|
2014-12-19 22:51:33 +03:00
|
|
|
attr_t shape
|
|
|
|
attr_t prefix
|
|
|
|
attr_t suffix
|
2015-04-19 11:31:31 +03:00
|
|
|
|
2017-05-17 13:04:50 +03:00
|
|
|
|
2019-10-18 12:01:47 +03:00
|
|
|
cdef struct SpanC:
|
2016-09-21 15:54:55 +03:00
|
|
|
hash_t id
|
2015-03-09 08:46:22 +03:00
|
|
|
int start
|
|
|
|
int end
|
2019-10-18 12:01:47 +03:00
|
|
|
int start_char
|
|
|
|
int end_char
|
2017-05-28 15:06:40 +03:00
|
|
|
attr_t label
|
2019-10-18 12:01:47 +03:00
|
|
|
attr_t kb_id
|
2015-03-10 20:00:23 +03:00
|
|
|
|
2015-03-09 08:46:22 +03:00
|
|
|
|
2014-12-19 22:51:33 +03:00
|
|
|
cdef struct TokenC:
|
2015-01-12 02:26:22 +03:00
|
|
|
const LexemeC* lex
|
2015-08-28 03:02:33 +03:00
|
|
|
uint64_t morph
|
2015-01-25 08:31:07 +03:00
|
|
|
univ_pos_t pos
|
2015-07-13 20:48:07 +03:00
|
|
|
bint spacy
|
2017-05-28 15:06:40 +03:00
|
|
|
attr_t tag
|
2014-12-19 22:51:33 +03:00
|
|
|
int idx
|
2017-05-28 13:51:09 +03:00
|
|
|
attr_t lemma
|
2018-12-08 12:49:10 +03:00
|
|
|
attr_t norm
|
2014-12-19 22:51:33 +03:00
|
|
|
int head
|
2017-05-28 13:51:09 +03:00
|
|
|
attr_t dep
|
2015-04-29 20:14:20 +03:00
|
|
|
|
2014-12-19 22:51:33 +03:00
|
|
|
uint32_t l_kids
|
|
|
|
uint32_t r_kids
|
2015-04-29 20:14:20 +03:00
|
|
|
uint32_t l_edge
|
|
|
|
uint32_t r_edge
|
2014-12-19 22:51:33 +03:00
|
|
|
|
2017-10-08 20:58:54 +03:00
|
|
|
int sent_start
|
2015-03-10 20:00:23 +03:00
|
|
|
int ent_iob
|
2017-05-28 15:06:40 +03:00
|
|
|
attr_t ent_type # TODO: Is there a better way to do this? Multiple sources of truth..
|
2019-03-14 17:48:40 +03:00
|
|
|
attr_t ent_kb_id
|
2016-09-21 15:54:55 +03:00
|
|
|
hash_t ent_id
|
2018-09-25 00:58:08 +03:00
|
|
|
|
|
|
|
|
2019-03-07 16:03:07 +03:00
|
|
|
cdef struct MorphAnalysisC:
|
2020-01-24 00:01:54 +03:00
|
|
|
hash_t key
|
2019-03-08 02:08:57 +03:00
|
|
|
int length
|
2020-04-29 13:53:16 +03:00
|
|
|
|
2020-01-24 00:01:54 +03:00
|
|
|
attr_t* fields
|
|
|
|
attr_t* features
|
|
|
|
|
2018-09-25 00:58:08 +03:00
|
|
|
|
2019-04-24 12:26:38 +03:00
|
|
|
# Internal struct, for storage and disambiguation of entities.
|
2019-06-26 16:55:26 +03:00
|
|
|
cdef struct KBEntryC:
|
2019-04-24 12:26:38 +03:00
|
|
|
|
|
|
|
# The hash of this entry's unique ID/name in the kB
|
|
|
|
hash_t entity_hash
|
|
|
|
|
2019-06-05 19:29:18 +03:00
|
|
|
# Allows retrieval of the entity vector, as an index into a vectors table of the KB.
|
|
|
|
# Can be expanded later to refer to multiple rows (compositional model to reduce storage footprint).
|
|
|
|
int32_t vector_index
|
|
|
|
|
|
|
|
# Allows retrieval of a struct of non-vector features.
|
|
|
|
# This is currently not implemented and set to -1 for the common case where there are no features.
|
2019-04-24 12:26:38 +03:00
|
|
|
int32_t feats_row
|
|
|
|
|
|
|
|
# log probability of entity, based on corpus frequency
|
2019-07-19 18:40:28 +03:00
|
|
|
float freq
|
2019-04-24 12:26:38 +03:00
|
|
|
|
|
|
|
|
|
|
|
# Each alias struct stores a list of Entry pointers with their prior probabilities
|
|
|
|
# for this specific mention/alias.
|
|
|
|
cdef struct AliasC:
|
|
|
|
|
|
|
|
# All entry candidates for this alias
|
|
|
|
vector[int64_t] entry_indices
|
|
|
|
|
|
|
|
# Prior probability P(entity|alias) - should sum up to (at most) 1.
|
|
|
|
vector[float] probs
|
2021-01-14 09:30:41 +03:00
|
|
|
|
|
|
|
|
|
|
|
cdef struct EdgeC:
|
|
|
|
hash_t label
|
|
|
|
int32_t head
|
|
|
|
int32_t tail
|
|
|
|
|
|
|
|
|
|
|
|
cdef struct GraphC:
|
|
|
|
vector[vector[int32_t]] nodes
|
|
|
|
vector[EdgeC] edges
|
|
|
|
vector[float] weights
|
|
|
|
vector[int] n_heads
|
|
|
|
vector[int] n_tails
|
|
|
|
vector[int] first_head
|
|
|
|
vector[int] first_tail
|
|
|
|
unordered_set[int]* roots
|
|
|
|
unordered_map[hash_t, int]* node_map
|
|
|
|
unordered_map[hash_t, int]* edge_map
|