空间模型预测不一致

时间:2019-10-31 11:53:33

标签: python nlp spacy

我已经在下面的句子中训练了一个伪造模型。

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)

1 个答案:

答案 0 :(得分:1)

您的方法存在几个问题。我会指出一些,您可以进行更深入的研究:

数据集大小:50个句子对于基于机器学习的方法来说太小了。 spacy的作用是:它训练了一种机器学习模型,该模型将单词POS和周围单词POS,向量等考虑在内。这又需要大量示例,以便算法可以正确地“推断”某些信息。 / p>

您的数据不是“自然语言” :我的意思是,您具有结构化的数据,并希望从中进行概括。自然语言模型从上下文(环绕单词)中学习,并且您正在为所有训练样本提供不自然,结构化的上下文。您将无法对此进行概括,因为您的样本不够全面。

总结:收集更多的数据。