首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CRF++模板文件和句子语法

CRF++模板文件和句子语法
EN

Stack Overflow用户
提问于 2017-01-20 06:02:00
回答 1查看 532关注 0票数 0

我正在尝试使用CRF++将产品字符串解析为各种属性类,以便可以执行类似于this question的产品匹配。

然而,我遇到的问题是,当训练文件中还没有看到产品字符串中单词的顺序时,CRF无法准确预测标签。

作为示例,我简单地使用了一个词袋模板文件:

代码语言:javascript
复制
#Unigrams
U00:%x[-1,0]
U00:%x[0,0]
U00:%x[1,0]

#Bigrams
B

然后我运行包含以下示例训练数据的crf_learn

代码语言:javascript
复制
panasonic  NOUN  B-BRAND
digital  ADJ  B-PRODUCT
monitor  NOUN  I-PRODUCT
17  #  B-SIZE
inch  #  I-SIZE

当使用此训练数据时,该模型正确地将测试字符串"panasonic digital monitor 17 it“解析为其正确的输出标签。然而,当我在诸如"panasonic monitor digital 17 on“之类的字符串上使用该型号时,该型号无法识别正确的标签,而是将”digital“和”monitor“的标签更改为如下所示:

代码语言:javascript
复制
panasonic  NOUN  B-BRAND
monitor  NOUN  B-PRODUCT
digital  ADJ  I-PRODUCT
17  #  B-SIZE
inch  #  I-SIZE

然而,我需要的是:

代码语言:javascript
复制
panasonic  NOUN  B-BRAND
monitor  NOUN  I-PRODUCT
digital  ADJ  B-PRODUCT
17  #  B-SIZE
inch  #  I-SIZE

这是我的模板文件的问题,还是CRF固有的语法限制?或者,我是否可以通过某种方式修改模板文件或训练数据列,以捕获/忽略产品字符串中单词的排序?

EN

回答 1

Stack Overflow用户

发布于 2017-05-09 01:33:51

首先,模板文件中的特征定义是错误的。

所有要素模板都标识为U00。这意味着本质上只有1个特性,而不是3个。

其次,我认为你应该尝试更多的功能模板,例如:

代码语言:javascript
复制
#context of 3 words
U00:%x[-1,0]
U01:%x[0,0]
U02:%x[1,0]

#for POS Tag
U03:%x[0,1]

希望这有助于提高性能:)

PS:您可以查看https://youtu.be/GJHeTvDkIaE以了解CRF++模板文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41752524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档