mirror of
				https://github.com/explosion/spaCy.git
				synced 2025-11-04 09:57:26 +03:00 
			
		
		
		
	* Continue proxying. Some problem currently
This commit is contained in:
		
							parent
							
								
									2169bbb7ea
								
							
						
					
					
						commit
						7a0e3bb9c1
					
				| 
						 | 
					@ -56,11 +56,12 @@ cdef cppclass StateC:
 | 
				
			||||||
            this._sent[i].lex = &EMPTY_LEXEME
 | 
					            this._sent[i].lex = &EMPTY_LEXEME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    __dealloc__():
 | 
					    __dealloc__():
 | 
				
			||||||
        free(this._buffer)
 | 
					        cdef int PADDING = 5
 | 
				
			||||||
        free(this._stack)
 | 
					        free(this._sent - PADDING)
 | 
				
			||||||
        free(this.shifted)
 | 
					        free(this._ents - PADDING)
 | 
				
			||||||
        free(this._sent)
 | 
					        free(this._buffer - PADDING)
 | 
				
			||||||
        free(this._ents)
 | 
					        free(this._stack - PADDING)
 | 
				
			||||||
 | 
					        free(this.shifted - PADDING)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    int S(int i) nogil:
 | 
					    int S(int i) nogil:
 | 
				
			||||||
        if i >= this._s_i:
 | 
					        if i >= this._s_i:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					# test
 | 
				
			||||||
| 
						 | 
					@ -382,6 +382,9 @@ cdef class ArcEager(TransitionSystem):
 | 
				
			||||||
            st._sent[i].sent_start = False
 | 
					            st._sent[i].sent_start = False
 | 
				
			||||||
            st._sent[i].l_edge = i
 | 
					            st._sent[i].l_edge = i
 | 
				
			||||||
            st._sent[i].r_edge = i
 | 
					            st._sent[i].r_edge = i
 | 
				
			||||||
 | 
					            st.c._sent[i].sent_start = False
 | 
				
			||||||
 | 
					            st.c._sent[i].l_edge = i
 | 
				
			||||||
 | 
					            st.c._sent[i].r_edge = i
 | 
				
			||||||
        st.fast_forward()
 | 
					        st.fast_forward()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cdef int finalize_state(self, StateClass st) nogil:
 | 
					    cdef int finalize_state(self, StateClass st) nogil:
 | 
				
			||||||
| 
						 | 
					@ -389,10 +392,12 @@ cdef class ArcEager(TransitionSystem):
 | 
				
			||||||
        for i in range(st.length):
 | 
					        for i in range(st.length):
 | 
				
			||||||
            if st._sent[i].head == 0 and st._sent[i].dep == 0:
 | 
					            if st._sent[i].head == 0 and st._sent[i].dep == 0:
 | 
				
			||||||
                st._sent[i].dep = self.root_label
 | 
					                st._sent[i].dep = self.root_label
 | 
				
			||||||
 | 
					                st.c._sent[i].dep = self.root_label
 | 
				
			||||||
            # If we're not using the Break transition, we segment via root-labelled
 | 
					            # If we're not using the Break transition, we segment via root-labelled
 | 
				
			||||||
            # arcs between the root words.
 | 
					            # arcs between the root words.
 | 
				
			||||||
            elif USE_ROOT_ARC_SEGMENT and st._sent[i].dep == self.root_label:
 | 
					            elif USE_ROOT_ARC_SEGMENT and st._sent[i].dep == self.root_label:
 | 
				
			||||||
                st._sent[i].head = 0
 | 
					                st._sent[i].head = 0
 | 
				
			||||||
 | 
					                st.c._sent[i].head = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cdef int set_valid(self, int* output, StateClass stcls) nogil:
 | 
					    cdef int set_valid(self, int* output, StateClass stcls) nogil:
 | 
				
			||||||
        cdef bint[N_MOVES] is_valid
 | 
					        cdef bint[N_MOVES] is_valid
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -204,7 +204,7 @@ cdef class StepwiseState:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @property
 | 
					    @property
 | 
				
			||||||
    def deps(self):
 | 
					    def deps(self):
 | 
				
			||||||
        return [self.doc.vocab.strings[self.stcls._sent[i].dep]
 | 
					        return [self.doc.vocab.strings[self.stcls.c._sent[i].dep]
 | 
				
			||||||
                for i in range(self.stcls.length)]
 | 
					                for i in range(self.stcls.length)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def predict(self):
 | 
					    def predict(self):
 | 
				
			||||||
| 
						 | 
					@ -235,7 +235,7 @@ cdef class StepwiseState:
 | 
				
			||||||
    def finish(self):
 | 
					    def finish(self):
 | 
				
			||||||
        if self.stcls.is_final():
 | 
					        if self.stcls.is_final():
 | 
				
			||||||
            self.parser.moves.finalize_state(self.stcls)
 | 
					            self.parser.moves.finalize_state(self.stcls)
 | 
				
			||||||
        self.doc.set_parse(self.stcls._sent)
 | 
					        self.doc.set_parse(self.stcls.c._sent)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cdef int _arg_max_clas(const weight_t* scores, int move, const Transition* actions,
 | 
					cdef int _arg_max_clas(const weight_t* scores, int move, const Transition* actions,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -81,7 +81,7 @@ cdef class StateClass:
 | 
				
			||||||
            return &self._sent[i]
 | 
					            return &self._sent[i]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cdef inline int H(self, int i) nogil:
 | 
					    cdef inline int H(self, int i) nogil:
 | 
				
			||||||
        self.c.H(i)
 | 
					        return self.c.H(i)
 | 
				
			||||||
        if i < 0 or i >= self.length:
 | 
					        if i < 0 or i >= self.length:
 | 
				
			||||||
            return -1
 | 
					            return -1
 | 
				
			||||||
        return self._sent[i].head + i
 | 
					        return self._sent[i].head + i
 | 
				
			||||||
| 
						 | 
					@ -109,7 +109,7 @@ cdef class StateClass:
 | 
				
			||||||
        return self.stack_depth() <= 0 and self._b_i >= self.length
 | 
					        return self.stack_depth() <= 0 and self._b_i >= self.length
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cdef inline bint has_head(self, int i) nogil:
 | 
					    cdef inline bint has_head(self, int i) nogil:
 | 
				
			||||||
        self.c.has_head(i)
 | 
					        #return self.c.has_head(i)
 | 
				
			||||||
        return self.safe_get(i).head != 0
 | 
					        return self.safe_get(i).head != 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cdef inline int n_L(self, int i) nogil:
 | 
					    cdef inline int n_L(self, int i) nogil:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,6 +38,10 @@ cdef class StateClass:
 | 
				
			||||||
            self._buffer[i] = i
 | 
					            self._buffer[i] = i
 | 
				
			||||||
        self._empty_token.lex = &EMPTY_LEXEME
 | 
					        self._empty_token.lex = &EMPTY_LEXEME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __dealloc__(self):
 | 
				
			||||||
 | 
					        del self.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @property
 | 
					    @property
 | 
				
			||||||
    def stack(self):
 | 
					    def stack(self):
 | 
				
			||||||
        return {self.S(i) for i in range(self._s_i)}
 | 
					        return {self.S(i) for i in range(self._s_i)}
 | 
				
			||||||
| 
						 | 
					@ -47,64 +51,13 @@ cdef class StateClass:
 | 
				
			||||||
        return {self.B(i) for i in range(self._b_i)}
 | 
					        return {self.B(i) for i in range(self._b_i)}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cdef int E(self, int i) nogil:
 | 
					    cdef int E(self, int i) nogil:
 | 
				
			||||||
        self.c.E(i)
 | 
					        return self.c.E(i)
 | 
				
			||||||
        if self._e_i <= 0 or self._e_i >= self.length:
 | 
					 | 
				
			||||||
            return 0
 | 
					 | 
				
			||||||
        if i < 0 or i >= self._e_i:
 | 
					 | 
				
			||||||
            return 0
 | 
					 | 
				
			||||||
        return self._ents[self._e_i - (i+1)].start
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cdef int L(self, int i, int idx) nogil:
 | 
					    cdef int L(self, int i, int idx) nogil:
 | 
				
			||||||
        self.c.L(i, idx)
 | 
					        return self.c.L(i, idx)
 | 
				
			||||||
        if idx < 1:
 | 
					 | 
				
			||||||
            return -1
 | 
					 | 
				
			||||||
        if i < 0 or i >= self.length:
 | 
					 | 
				
			||||||
            return -1
 | 
					 | 
				
			||||||
        cdef const TokenC* target = &self._sent[i]
 | 
					 | 
				
			||||||
        if target.l_kids < idx:
 | 
					 | 
				
			||||||
            return -1
 | 
					 | 
				
			||||||
        cdef const TokenC* ptr = &self._sent[target.l_edge]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        while ptr < target:
 | 
					 | 
				
			||||||
            # If this head is still to the right of us, we can skip to it
 | 
					 | 
				
			||||||
            # No token that's between this token and this head could be our
 | 
					 | 
				
			||||||
            # child.
 | 
					 | 
				
			||||||
            if (ptr.head >= 1) and (ptr + ptr.head) < target:
 | 
					 | 
				
			||||||
                ptr += ptr.head
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            elif ptr + ptr.head == target:
 | 
					 | 
				
			||||||
                idx -= 1
 | 
					 | 
				
			||||||
                if idx == 0:
 | 
					 | 
				
			||||||
                    return ptr - self._sent
 | 
					 | 
				
			||||||
                ptr += 1
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                ptr += 1
 | 
					 | 
				
			||||||
        return -1
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cdef int R(self, int i, int idx) nogil:
 | 
					    cdef int R(self, int i, int idx) nogil:
 | 
				
			||||||
        self.c.R(i, idx)
 | 
					        return self.c.R(i, idx)
 | 
				
			||||||
        if idx < 1:
 | 
					 | 
				
			||||||
            return -1
 | 
					 | 
				
			||||||
        if i < 0 or i >= self.length:
 | 
					 | 
				
			||||||
            return -1
 | 
					 | 
				
			||||||
        cdef const TokenC* target = &self._sent[i]
 | 
					 | 
				
			||||||
        if target.r_kids < idx:
 | 
					 | 
				
			||||||
            return -1
 | 
					 | 
				
			||||||
        cdef const TokenC* ptr = &self._sent[target.r_edge]
 | 
					 | 
				
			||||||
        while ptr > target:
 | 
					 | 
				
			||||||
            # If this head is still to the right of us, we can skip to it
 | 
					 | 
				
			||||||
            # No token that's between this token and this head could be our
 | 
					 | 
				
			||||||
            # child.
 | 
					 | 
				
			||||||
            if (ptr.head < 0) and ((ptr + ptr.head) > target):
 | 
					 | 
				
			||||||
                ptr += ptr.head
 | 
					 | 
				
			||||||
            elif ptr + ptr.head == target:
 | 
					 | 
				
			||||||
                idx -= 1
 | 
					 | 
				
			||||||
                if idx == 0:
 | 
					 | 
				
			||||||
                    return ptr - self._sent
 | 
					 | 
				
			||||||
                ptr -= 1
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                ptr -= 1
 | 
					 | 
				
			||||||
        return -1
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cdef void push(self) nogil:
 | 
					    cdef void push(self) nogil:
 | 
				
			||||||
        self.c.push()
 | 
					        self.c.push()
 | 
				
			||||||
| 
						 | 
					@ -204,6 +157,7 @@ cdef class StateClass:
 | 
				
			||||||
            self._sent[i].ent_iob = ent_iob
 | 
					            self._sent[i].ent_iob = ent_iob
 | 
				
			||||||
            self._sent[i].ent_type = ent_type
 | 
					            self._sent[i].ent_type = ent_type
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cdef void set_break(self, int _) nogil:
 | 
					    cdef void set_break(self, int _) nogil:
 | 
				
			||||||
        self.c.set_break(_)
 | 
					        self.c.set_break(_)
 | 
				
			||||||
        if 0 <= self.B(0) < self.length: 
 | 
					        if 0 <= self.B(0) < self.length: 
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user