mirror of
				https://github.com/explosion/spaCy.git
				synced 2025-10-31 07:57:35 +03:00 
			
		
		
		
	* Draft out initial Spans data structure * Initial span group commit * Basic span group support on Doc * Basic test for span group * Compile span_group.pyx * Draft addition of SpanGroup to DocBin * Add deserialization for SpanGroup * Add tests for serializing SpanGroup * Fix serialization of SpanGroup * Add EdgeC and GraphC structs * Add draft Graph data structure * Compile graph * More work on Graph * Update GraphC * Upd graph * Fix walk functions * Let Graph take nodes and edges on construction * Fix walking and getting * Add graph tests * Fix import * Add module with the SpanGroups dict thingy * Update test * Rename 'span_groups' attribute * Try to fix c++11 compilation * Fix test * Update DocBin * Try to fix compilation * Try to fix graph * Improve SpanGroup docstrings * Add doc.spans to documentation * Fix serialization * Tidy up and add docs * Update docs [ci skip] * Add SpanGroup.has_overlap * WIP updated Graph API * Start testing new Graph API * Update Graph tests * Update Graph * Add docstring Co-authored-by: Ines Montani <ines@ines.io>
		
			
				
	
	
		
			115 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Cython
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Cython
		
	
	
	
	
	
| from libc.stdint cimport uint8_t, uint32_t, int32_t, uint64_t
 | |
| from libcpp.vector cimport vector
 | |
| from libcpp.unordered_set cimport unordered_set
 | |
| from libcpp.unordered_map cimport unordered_map
 | |
| from libc.stdint cimport int32_t, int64_t
 | |
| 
 | |
| from .typedefs cimport flags_t, attr_t, hash_t
 | |
| from .parts_of_speech cimport univ_pos_t
 | |
| 
 | |
| 
 | |
| cdef struct LexemeC:
 | |
|     flags_t flags
 | |
| 
 | |
|     attr_t lang
 | |
| 
 | |
|     attr_t id
 | |
|     attr_t length
 | |
| 
 | |
|     attr_t orth
 | |
|     attr_t lower
 | |
|     attr_t norm
 | |
|     attr_t shape
 | |
|     attr_t prefix
 | |
|     attr_t suffix
 | |
| 
 | |
| 
 | |
| cdef struct SpanC:
 | |
|     hash_t id
 | |
|     int start
 | |
|     int end
 | |
|     int start_char
 | |
|     int end_char
 | |
|     attr_t label
 | |
|     attr_t kb_id
 | |
| 
 | |
| 
 | |
| cdef struct TokenC:
 | |
|     const LexemeC* lex
 | |
|     uint64_t morph
 | |
|     univ_pos_t pos
 | |
|     bint spacy
 | |
|     attr_t tag
 | |
|     int idx
 | |
|     attr_t lemma
 | |
|     attr_t norm
 | |
|     int head
 | |
|     attr_t dep
 | |
| 
 | |
|     uint32_t l_kids
 | |
|     uint32_t r_kids
 | |
|     uint32_t l_edge
 | |
|     uint32_t r_edge
 | |
| 
 | |
|     int sent_start
 | |
|     int ent_iob
 | |
|     attr_t ent_type # TODO: Is there a better way to do this? Multiple sources of truth..
 | |
|     attr_t ent_kb_id
 | |
|     hash_t ent_id
 | |
| 
 | |
| 
 | |
| cdef struct MorphAnalysisC:
 | |
|     hash_t key
 | |
|     int length
 | |
| 
 | |
|     attr_t* fields
 | |
|     attr_t* features
 | |
| 
 | |
| 
 | |
| # Internal struct, for storage and disambiguation of entities.
 | |
| cdef struct KBEntryC:
 | |
| 
 | |
|     # The hash of this entry's unique ID/name in the kB
 | |
|     hash_t entity_hash
 | |
| 
 | |
|     # 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.
 | |
|     int32_t feats_row
 | |
| 
 | |
|     # log probability of entity, based on corpus frequency
 | |
|     float freq
 | |
| 
 | |
| 
 | |
| # 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
 | |
| 
 | |
| 
 | |
| 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
 |