Apache Open NLP中的自定义模型

时间:2017-06-01 05:45:16

标签: apache opennlp

我目前正在使用自定义模型,我正在为自己的用例进行培训。我的用例是根据是否是地址变更请求对电子邮件进行分类。如果可以从单个句子理解地址更改请求,则它可以正常工作而不会出现问题。但是,如果需要从多个句子中理解地址更改请求,则它无法正常工作。 举几个例子如下: - 示例1: - 这是工作 1。 a)培训档案: -

Guys I wish to <START:contactupdate> change my address <END> .

我的新地址是西米德兰兹郡考文垂多塞特路68号,CV1 4ED。 一旦完成,请确认。 感谢。

b)用以下句子测试模型: - 字符串输入=&#34;伙计们我想改变我的地址。我的新地址是68 Dorset Road,Coventry,West Midlands,CV1 4ED。请在完成后确认。感谢。&#34 ;; //工作

  1. 示例2: - 这不起作用。 让我们说地址变更请求只能从多行推断出来。

    &#34;我的旧地址不再有效。需要更新它。&#34;

  2. 如何在这种情况下训练我的模型?如何为上面指定自定义标签?

    你能帮忙吗?我被卡住了。 非常感谢

2 个答案:

答案 0 :(得分:0)

你不工作是什么意思?你想要检索的东西没有被检索?或者,当标签分布在多条线上时,训练会在某处崩溃?

通常,您在此过程中训练的(默认为MaxEnt)模型会尝试检测您正在训练的事物的常用功能。通常,这些是命名实体,如人员,组织,位置。在许多语言中,这些都包含典型的功能(如前缀Mr.Mrs。,后缀corp。,语素“street”)。这可以由模型拾取并应用于新数据,从而可以识别您想要识别的任何一个。然而,你要做的事情是非常先进的NLP。由于短语越长,可能的变化越大,拾取共性变得更加困难。我要说的是,对于你的用例,人们通常使用解析(选区或依赖解析)或其他更复杂的工具,而不仅仅是这种相对平坦的模式识别。所以你可能想要研究这些。我不知道您掌握了多少数据,您可以从中推断出表达希望更改客户数据库中地址的不同方式。如果合理(即不仅仅是几个句子),您可能需要手动注释它们,解析语料库,在解析树/图表上使用机器学习感兴趣的句子并以这种方式进行处理。如上所述,在我看来,非常先进的NLP,而不是具有开箱即用解决方案的东西。

答案 1 :(得分:0)

如果我正确理解了您的问题,则认为您正在尝试对电子邮件进行分类,以查找其地址是否更改。但是模型示例看起来像是命名实体。我认为,最好使用Apache OpenNLP的“文档分类程序”功能。

您可以为可能的句子提供不同的样本,这些样本可以归类为地址更改。 “地址更改”,“一般查询”等可以是一个类别。这样,您可以根据需要添加任意数量的不同样本,以及多种句子变体。这是easy & basic tutorial for document categorization training & usage.