Add option to use label karg to determine ent_type in doc.merge

This commit is contained in:
Eric Zhao 2017-03-28 23:35:03 -07:00
parent 9c809efc25
commit aafdf6ffb8
2 changed files with 17 additions and 1 deletions

View File

@ -19,6 +19,15 @@ def test_spans_merge_tokens(en_tokenizer):
assert doc[0].text == 'Los Angeles'
assert doc[0].head.text == 'start'
doc = get_doc(tokens.vocab, [t.text for t in tokens], heads=heads)
assert len(doc) == 4
assert doc[0].head.text == 'Angeles'
assert doc[1].head.text == 'start'
doc.merge(0, len('Los Angeles'), tag='NNP', lemma='Los Angeles', label='GPE')
assert len(doc) == 3
assert doc[0].text == 'Los Angeles'
assert doc[0].head.text == 'start'
assert doc[0].ent_type_ == 'GPE'
def test_spans_merge_heads(en_tokenizer):
text = "I found a pilates class near work."

View File

@ -667,6 +667,13 @@ cdef class Doc:
attributes[TAG] = self.vocab.strings[tag]
attributes[LEMMA] = self.vocab.strings[lemma]
attributes[ENT_TYPE] = self.vocab.strings[ent_type]
elif not args:
if "label" in attributes and ENT_TYPE not in attributes:
if type(attributes["label"]) == int:
attributes[ENT_TYPE] = attributes["label"]
else:
attributes[ENT_TYPE] = self.vocab.strings[attributes["label"]]
elif args:
raise ValueError(
"Doc.merge received %d non-keyword arguments. "