用(Python)CRFSuite创建自定义特征函数

3
我目前只了解CRF的理论,并希望在我的硕士论文中使用Python crfsuite从食谱中提取成分。非常感谢任何帮助。
据我所知,我可以像下面的图片一样向crfsuite提供训练数据,其中w [0]提供当前单词的标识符,w [i]是相对于i的单词,pos [i]是相对于i的词性标签。

training data format

然后 crfsuite 基于给定的属性训练自己的特征函数。

但我找不到提供自定义特征函数的方法,例如“w[i]在字典中”(例如食谱成分字典)或“句子中是否有否定词”(例如“not”或“don't”)。

总的来说,我很需要好的教程,因为从我的角度来看,手册(https://python-crfsuite.readthedocs.io/en/latest/http://www.chokkan.org/software/crfsuite/manual.html)不适合初学者。

1个回答

2
使用 python-crfsuite(或sklearn-crfsuite),训练数据不必采用您所描述的形式;单个训练序列应该是一个{"feature_name": <feature_value>"}字典列表,其中每个序列元素都有特征(例如句子中的令牌)。特征不必是单词或POS标签。还支持其他几种特征格式(请参见http://python-crfsuite.readthedocs.io/en/latest)。
更完整的示例,请查看https://github.com/TeamHG-Memex/sklearn-crfsuite/blob/master/docs/CoNLL2002.ipynb——它使用自定义特征。

我现在明白了,一个特征函数可以通过额外的标签来实现。例如,当特征函数是starts-with-upper-case时,我可以为每个单词添加一个标签UPPER_CASE或NOT_UPPER_CASE。在我看来,文档不是很好。在阅读理论之后,我期望覆盖一些函数。这个标签技巧很聪明,因为它不依赖于任何编程语言,但对于我这样的初学者来说太聪明了...^^ - shaman-apprentice

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接