mirror of
https://github.com/explosion/spaCy.git
synced 2025-04-25 11:23:40 +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