Я обучил простую модель нижеследующим предложениям.
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)