Fix handling of preset entities in NER

* Fix check of valid ent_type for B
* Add valid L as preset-I followed by not-I
This commit is contained in:
Adriane Boyd 2019-09-04 13:42:42 +02:00
parent 419ae59c79
commit 6b0fec76fd

View File

@ -258,7 +258,7 @@ cdef class Begin:
@staticmethod
cdef bint is_valid(const StateC* st, attr_t label) nogil:
cdef int preset_ent_iob = st.B_(0).ent_iob
cdef int preset_ent_label = st.B_(0).ent_type
cdef attr_t preset_ent_label = st.B_(0).ent_type
# If we're the last token of the input, we can't B -- must U or O.
if st.B(1) == -1:
return False
@ -395,6 +395,9 @@ cdef class Last:
return False
elif not st.entity_is_open():
return False
elif st.B_(0).ent_iob == 1 and st.B_(1).ent_iob != 1:
# If a preset entity has I followed by not-I, is L
return True
elif st.E_(0).ent_type != label:
return False
elif st.B_(1).ent_iob == 1: