Невозможно обучить пользовательский объект - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь написать код для пользовательского объекта, используя 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
...