Пространственная модель противоречивого прогноза - PullRequest
0 голосов
/ 31 октября 2019

Я обучил простую модель нижеследующим предложениям.

sent1 - STREET abc city: pqr COUNTY: STATE: qw ziP: 99999
sent2 - STREET qwe city: ewwe COUNTY: STATE: we ziP: 99990

Я прокомментировал, как показано ниже:

risk_street_label   STREET
risk_street_value   abc
risk_city_label     city
risk_city_value     pqr 
risk_state_label    STATE
risk_state_value    qw
risk_zip_label      ziP
risk_zip_value      99999

Имейте обучающий набор из примерно 50 предложений. Содержит разные значения, но метка и порядок одинаковы.

Для похожих предложений предсказание является правильным.

Но, принимая предсказание для случайных предложений, оно также предсказывает классы.

Например, Рам - отличный

Предсказание:

risk_street_value   Ram is a great

Я также обучил Watson Knowledge Studio и там все предсказывается нормально. Ниже приведен пример прогноза Уотсона:

RiskStreetLabel STREET  RiskStreetValue abc 
RiskCityLabel   city    RiskCityValue   pqr 
RiskStateLabel  STATE   RiskStateValue  qw  
RiskZipLabel    ziP RiskZipValue    12345   

Может ли кто-нибудь помочь мне в том, где я иду не так?

Ниже приведен стандартный код:

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()
    sizes = util.decaying(0.6, 0.2, 1e-4)
    for itn in range(iterations):
        print("Statring iteration " + str(itn))
        random.shuffle(TRAIN_DATA)
        losses = {}
        for text, annotations in TRAIN_DATA:
            nlp.update(
                [text],  # batch of texts
                [annotations],  # batch of annotations
                drop=0.5,  # dropout - make it harder to memorise data
                sgd=optimizer,  # callable to update weights
                losses=losses)
        print(losses)

1 Ответ

1 голос
/ 01 ноября 2019

Есть несколько проблем с вашим подходом. Я укажу некоторые, и вы можете исследовать глубже:

Размер набора данных : 50 предложений слишком мало для подхода, основанного на машинном обучении. Что делает простота: она обучает модель машинного обучения, которая учитывает слово POS и окружающие слова POS, векторы и т. Д. Это, в свою очередь, требует много примеров для алгоритма, чтобы правильно «вывести» некоторую информацию.

Ваши данные не являются "естественным языком" : Я имею в виду, что вы структурировали данные и хотите обобщить их. Модели естественного языка изучают контекст (окружающие слова), и вы предоставляете неестественный, структурированный контекст для всех обучающих образцов. Вы не сможете обобщить из этого, так как ваши выборки не являются достаточно общими.

В итоге: соберите более разнообразные данные.

...