Я пытаюсь написать код для пользовательского объекта, используя spacy, но модель не обучается. Это случайное предположение о сущности, а не вывод из обученных данных
Данные: [('0, Alerts, "Рабочий сервер с именем VW-PNS-0193-02 по IP-адресу 10.96.205.6 в настоящее время недоступен. Попытка восстановить сервер. Если вы не можете найти сервер или не удается восстановить его, свяжитесь с: Если контактная информация отсутствует, используйте группы контактов по умолчанию, указанные ниже. Группы контактов по умолчанию: Серверы и виртуальные машины - Системная инженерия (706) 580-6871 Маршрутизаторы и коммутаторы - Сетевая инженерия (706) 580 -6862 Устройства безопасности - Информационная безопасность ИТ (762) 207-3677 ИБП - Операции в сети (706) 641-6766 ", 2 - Высокий, рабочий узел не работает: Рабочий сервер с именем VW-PNS-0193-02 в настоящее время не работает. ' , {'entity': [(67, 78, 'ip_address'), (38, 52, 'address'), (14, 31, 'production'), (2, 8, 'category')]}), ('1, Alerts, "Рабочий сервер с именем VW-PNS-0193-04 по IP-адресу 10.96.205.7 в настоящее время не работает. Попытка восстановить сервер. Если вы не можете найти сервер или не можете восстановить его , свяжитесь по адресу Если контактная информация отсутствует используйте группы контактов по умолчанию ниже. Группы контактов по умолчанию: серверы и хосты виртуальных машин - системная инженерия (706) 580-6871 маршрутизаторы и коммутаторы - сетевая инженерия (706) 580-6862 устройства безопасности - информационная безопасность информационных технологий (762) 207-3677 ИБП - сетевые операции (706) 641- 6766 ", 2 - высокий, рабочий узел не работает: производственный сервер с именем VW-PNS-0193-04 в настоящее время не работает. ', {' Entity ': [(67, 78,' ip_address '), (38, 52,' имя_устройства '), (14, 31,' production ')]})]
Данные вполне, но похожи на то, что было упомянуто выше
################### Train Spacy NER.###########
def train_spacy():
TRAIN_DATA = convert_dataturks_to_spacy("/content/tickets_final.json");
nlp = spacy.blank('en') # create blank Language class
# create the built-in pipeline components and add them to the pipeline
# nlp.create_pipe works for built-ins that are registered with spaCy
if 'ner' not in nlp.pipe_names:
ner = nlp.create_pipe('ner')
nlp.add_pipe(ner, last=True)
# add labels
for _, annotations in TRAIN_DATA:
for ent in annotations.get('entities'):
ner.add_label(ent[2])
# print(ent[2])
# get names of other pipes to disable them during training
other_pipes = [pipe for pipe in nlp.pipe_names if pipe != 'ner']
with nlp.disable_pipes(*other_pipes): # only train NER
optimizer = nlp.begin_training()
for itn in range(1):
print("Statring iteration " + str(itn))
random.shuffle(TRAIN_DATA)
losses = {}
for text, annotations in TRAIN_DATA:
# print(text)
# print(annotations)
nlp.update(
[text], # batch of texts
[annotations], # batch of annotations
drop=0.2, # dropout - make it harder to memorise data
sgd=optimizer, # callable to update weights
losses=losses)
#print("LOL")
print(losses)
#do prediction
doc = nlp("Production Server named VW-PNS-0193-02 at IP Address 10.96.205.6 is currently Down")
print ("Entities= " + str(["" + str(ent.text) + "_" + str(ent.label_) for ent in doc.ents]))```
I am expecting outputs like a category of ticket or ip address or machine name