#python #nlp #pickle #spacy
Вопрос:
У меня есть данные для точной настройки в этом формате:
[[(('Kaweah', 'NNP'), 'O'),
(('Delta', 'NNP'), 'O'),
(('Mental', 'NNP'), 'O'),
(('Health', 'NNP'), 'O'),
(('Hospital', 'NNP'), 'O'),
(('D/p', 'NNP'), 'O'),
(('Aph', 'NNP'), 'O'),
(('is', 'VBZ'), 'O'),
(('located', 'VBN'), 'O'),
(('at', 'IN'), 'O'),
(('1100', 'CD'), 'B-GPE'),
(('SO', 'NNP'), 'I-GPE'),
(('.', '.'), 'I-GPE'),
(('AKERS', 'NNP'), 'I-GPE'),
(('STREET', 'NNP'), 'I-GPE')],
[(('CHARLTON', 'NNP'), 'O'),
(('MEMORIAL', 'NNP'), 'O'),
(('HOSPITAL', 'NNP'), 'O'),
(('is', 'VBZ'), 'O'),
(('located', 'VBN'), 'O'),
(('at', 'IN'), 'O'),
(('2449', 'CD'), 'B-GPE'),
(('THIRD', 'NNP'), 'I-GPE'),
(('STREET', 'NNP'), 'I-GPE'),
((',', ','), 'I-GPE'),
(('GA', 'NNP'), 'I-GPE')]]
Но формат обучения spacy выглядит так:
TRAIN_DATA =[ ("Pizza is a common fast food.", {"entities": [(0, 5, "FOOD")]}),
("Pasta is an italian recipe", {"entities": [(0, 5, "FOOD")]}) ]
Что мне нужно сделать, чтобы конвертировать мой файл pickle в формат spacy?
Ответ №1:
Вы можете просто взять каждый маркер и объединить пробелы на них, чтобы получить ввод текста, а затем рассчитать начало и остановку для промежутков каждой метки сущности.
но вы будете создавать искусственные обучающие данные, так как не знаете, какие пробелы использовались вокруг каждого токена. Эта информация теряется в формате CoNLL.
Таким образом, модель NER, которую вы тренируете, не будет надежной, поскольку она не знает, как маркировать токены, поскольку она научится всегда ожидать объединения пробелов по вашему выбору.
В принципе, это невозможно сделать, вы потеряли информацию в формате CoNLL, которую невозможно восстановить.