mirror of
				https://github.com/explosion/spaCy.git
				synced 2025-10-31 16:07:41 +03:00 
			
		
		
		
	* Fix Break oracle, but disable the Break transition for now, while we finalize the gold-standard experiments
This commit is contained in:
		
							parent
							
								
									399f15fbdf
								
							
						
					
					
						commit
						bdd07bf000
					
				|  | @ -20,7 +20,7 @@ from .stateclass cimport StateClass | ||||||
| 
 | 
 | ||||||
| DEF NON_MONOTONIC = True | DEF NON_MONOTONIC = True | ||||||
| DEF USE_BREAK = False | DEF USE_BREAK = False | ||||||
| DEF USE_ROOT_ARC_SEGMENT = True | DEF USE_ROOT_ARC_SEGMENT = False | ||||||
| 
 | 
 | ||||||
| cdef weight_t MIN_SCORE = -90000 | cdef weight_t MIN_SCORE = -90000 | ||||||
| 
 | 
 | ||||||
|  | @ -69,6 +69,7 @@ cdef int pop_cost(StateClass stcls, const GoldParseC* gold, int target) nogil: | ||||||
|         cost += gold.heads[target] == B_i |         cost += gold.heads[target] == B_i | ||||||
|         if gold.heads[B_i] == B_i or gold.heads[B_i] < target: |         if gold.heads[B_i] == B_i or gold.heads[B_i] < target: | ||||||
|             break |             break | ||||||
|  |     cost += Break.is_valid(stcls, -1) and Break.move_cost(stcls, gold) == 0 | ||||||
|     return cost |     return cost | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -244,14 +245,22 @@ cdef class Break: | ||||||
| 
 | 
 | ||||||
|     @staticmethod |     @staticmethod | ||||||
|     cdef inline int move_cost(StateClass s, const GoldParseC* gold) nogil: |     cdef inline int move_cost(StateClass s, const GoldParseC* gold) nogil: | ||||||
|  |         cdef int cost = 0 | ||||||
|  |         cdef int S_i, B_i | ||||||
|  |         for i in range(s.stack_depth()): | ||||||
|  |             S_i = s.S(i) | ||||||
|  |             for j in range(s.buffer_length()): | ||||||
|  |                 B_i = s.B(j) | ||||||
|  |                 cost += gold.heads[S_i] == B_i | ||||||
|  |                 cost += gold.heads[B_i] == S_i | ||||||
|         # Check for sentence boundary --- if it's here, we can't have any deps |         # Check for sentence boundary --- if it's here, we can't have any deps | ||||||
|         # between stack and buffer, so rest of action is irrelevant. |         # between stack and buffer, so rest of action is irrelevant. | ||||||
|         s0_root = _get_root(s.S(0), gold) |         s0_root = _get_root(s.S(0), gold) | ||||||
|         b0_root = _get_root(s.B(0), gold) |         b0_root = _get_root(s.B(0), gold) | ||||||
|         if s0_root == -1 or b0_root == -1 or s0_root != b0_root: |         if s0_root != b0_root or s0_root == -1 or b0_root == -1: | ||||||
|             return 0 |             return cost | ||||||
|         else: |         else: | ||||||
|             return 1 |             return cost + 1 | ||||||
|      |      | ||||||
|     @staticmethod |     @staticmethod | ||||||
|     cdef inline int label_cost(StateClass s, const GoldParseC* gold, int label) nogil: |     cdef inline int label_cost(StateClass s, const GoldParseC* gold, int label) nogil: | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user