def match2key(cls, match): charspan_ref = cls.match2charspan_ref(match) charspan_hyp = cls.match2charspan_hyp(match) key = ( -SpanTool.span2len(cls.match2tokenspan_ref(match)), -SpanTool.span2len(charspan_hyp), -SpanTool.span2len(charspan_ref), charspan_hyp, charspan_ref, ) return key
def match2entity_list(match): span = match.span() assert_in(SpanTool.span2len(span), (2, 3)) entity_list = [] s, e = span span_nutmeg = (s, s + 1) entity_nutmeg = { FoxylibEntity.Field.SPAN: span_nutmeg, FoxylibEntity.Field.TEXT: StringTool.str_span2substr(text_in, span_nutmeg), FoxylibEntity.Field.VALUE: "Nutmeg", FoxylibEntity.Field.TYPE: TradegoodEntity.entity_type(), } entity_list.append(entity_nutmeg) span_mace = (s + 1, s + 2) entity_mace = { FoxylibEntity.Field.SPAN: span_mace, FoxylibEntity.Field.TEXT: StringTool.str_span2substr(text_in, span_mace), FoxylibEntity.Field.VALUE: "Mace", FoxylibEntity.Field.TYPE: TradegoodEntity.entity_type(), } entity_list.append(entity_mace) if SpanTool.span2len(span) == 3: span_clove = (s + 2, s + 3) entity_cloves = { FoxylibEntity.Field.SPAN: span_clove, FoxylibEntity.Field.TEXT: StringTool.str_span2substr(text_in, span_clove), FoxylibEntity.Field.VALUE: "Cloves", FoxylibEntity.Field.TYPE: TradegoodEntity.entity_type(), } entity_list.append(entity_cloves) return entity_list
def cospan2key(cls, cospan, token_list_ref, token_list_hyp): span_ref = Cospan.cospan2span_ref(cospan) charspan_ref = cls.Token.token_list_span2charspan( token_list_ref, span_ref) span_hyp = Cospan.cospan2span_hyp(cospan) charspan_hyp = cls.Token.token_list_span2charspan( token_list_hyp, span_hyp) key = ( -SpanTool.span2len(span_ref), -SpanTool.span2len(charspan_hyp), -SpanTool.span2len(charspan_ref), charspan_hyp, charspan_ref, ) return key
def match2len(cls, m): return SpanTool.span2len(cls.match2span(m))
def match2has_equal_token_span_len(cls, _match): span_hyp = cls.match2tokenspan_ref(_match) span_ref = cls.match2tokenspan_hyp(_match) return SpanTool.span2len(span_hyp) == SpanTool.span2len(span_ref)
def data2match_list_digit_2(cls, data): m_list_digit = cls.data2match_list_digit(data) return lfilter(lambda m: SpanTool.span2len(m.span()) == 2, m_list_digit)