我已经在下面的句子中训练了一个伪造模型。
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进行了培训,并且可以预测。 以下是Watson预测的示例:
RiskStreetLabel STREET RiskStreetValue abc
RiskCityLabel city RiskCityValue pqr
RiskStateLabel STATE RiskStateValue qw
RiskZipLabel ziP RiskZipValue 12345
有人可以帮我解决我的问题吗?
以下是spacy标准代码:
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)
答案 0 :(得分:1)
您的方法存在几个问题。我会指出一些,您可以进行更深入的研究:
数据集大小:50个句子对于基于机器学习的方法来说太小了。 spacy的作用是:它训练了一种机器学习模型,该模型将单词POS和周围单词POS,向量等考虑在内。这又需要大量示例,以便算法可以正确地“推断”某些信息。 / p>
您的数据不是“自然语言” :我的意思是,您具有结构化的数据,并希望从中进行概括。自然语言模型从上下文(环绕单词)中学习,并且您正在为所有训练样本提供不自然,结构化的上下文。您将无法对此进行概括,因为您的样本不够全面。
总结:收集更多的数据。