raise error when links are not aligned to tokens

This commit is contained in:
svlandeg 2020-07-02 13:57:35 +02:00
parent f503817623
commit 04ed4d60a8
3 changed files with 5 additions and 2 deletions

View File

@ -556,6 +556,8 @@ class Errors(object):
E979 = ("Cannot convert {type} to an Example object.")
E980 = ("Each link annotation should refer to a dictionary with at most one "
"identifier mapping to 1.0, and all others to 0.0.")
E981 = ("The offsets of the annotations for 'links' could not be aligned "
"to token boundaries.")
E982 = ("The 'ent_iob' attribute of a Token should be an integer indexing "
"into {values}, but found {value}.")
E983 = ("Invalid key for '{dict}': {key}. Available keys: "

View File

@ -396,6 +396,8 @@ def _parse_links(vocab, words, spaces, links):
start_char, end_char = index
start_token = starts.get(start_char)
end_token = ends.get(end_char)
if start_token is None or end_token is None:
raise ValueError(Errors.E981)
for i in range(start_token, end_token+1):
ent_kb_ids[i] = true_kb_ids[0]

View File

@ -230,8 +230,7 @@ def test_Example_from_dict_with_links(annots):
[
{
"words": ["I", "like", "New", "York", "and", "Berlin", "."],
"entities": [(7, 15, "LOC"), (20, 26, "LOC")],
"links": {(0, 1): {"Q7381115": 1.0, "Q2146908": 0.0}},
"links": {(7, 14): {"Q7381115": 1.0, "Q2146908": 0.0}},
}
],
)