Пользовательский NER Spacy выбрасывает IndexError: индекс списка вне диапазона - PullRequest
1 голос
/ 04 мая 2019

Я пытаюсь создать пользовательский NER, используя Spacy, но во время обучения я получаю следующую ошибку: gold = GoldParse (doc, entity = entity_offsets) Файл "gold.pyx", строка 565, в spacy.gold.GoldParse. init IndexError: список индексов вне диапазона

Есть идеи, как это исправить?

Самое распространенное разрешение, которое появилосьпосле выполнения какого-либо поиска в Google было обрезать начальные и конечные пробелы в данных обучения.Поэтому я использовал этот код, чтобы обрезать их.Но все равно было бесполезно.

'' 'invalid_span_tokens = re.compile (r' \ s ')

cleaned_data = []
for text, annotations in data:
    entities = annotations['entities']
    valid_entities = []
    for start, end, label in entities:
        valid_start = start
        valid_end = end
        while valid_start < len(text) and invalid_span_tokens.match(
                text[valid_start]):
            valid_start += 1
        while valid_end > 1 and invalid_span_tokens.match(
                text[valid_end - 1]):
            valid_end -= 1
        valid_entities.append([valid_start, valid_end, label])
    cleaned_data.append([text, {'entities': valid_entities}])

' ''

1 Ответ

1 голос
/ 09 мая 2019

Ах, так что слова будут аргументом ключевого слова для объекта GoldParse. Это позволяет вам указать жетон золотого стандарта, если он не совпадает с жетоном spaCy. Предполагая, что ваш ввод выглядит так:

text = 'helloworld'
words = ['hello', 'world']
tags = ['INTJ', 'NOUN']

Вы можете сделать следующее:

doc = Doc(text)
gold = GoldParse(doc, words=words, tags=tags)
nlp.update([doc], [gold])

Кроме того, вы также можете использовать новый «простой стиль обучения» и просто передать текст в виде строки, а аннотации в виде словаря:

nlp.update([text], [{'words': words, 'tags': tags}])

В общем, мы рекомендуем использовать простой стиль, так как он удаляет один уровень абстракции и позволяет избавиться от импорта Doc и GoldParse. Но в конечном итоге стиль, который вы выбираете, зависит от ваших личных предпочтений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...