我正在尝试使用Mallet库训练CRF序列模型,但我遗漏了一些重要信息。我在https://github.com/mimno/Mallet/blob/master/src/cc/mallet/examples/TrainCRF.java的图书馆里找到了一个例子 但是该示例没有说明输入训练数据的格式,因此我不知道如何重新创建它。
Mallet确实在http://mallet.cs.umass.edu/import-devel.php有一个数据导入示例,但特定示例似乎是文档分类而不是CRF序列模型,这是我的用例。
我尝试将输入训练数据放在http://mallet.cs.umass.edu/sequences.php所用的表格中,即
Bill CAPITALIZED noun
slept non-noun
here LOWERCASE STOPWORD non-noun
以表格
测试数据CAPITAL Al
slept
here
但是根据输出日志,它似乎不是正确的格式。例如,日志中的一行是INFO: testing label slept P � R 0 F1 �
,但slept
不是标签 - 标签应为noun
或non-noun
。
因此,如果有人能告诉我训练数据的格式应该是多么好。
答案 0 :(得分:1)
您链接到的代码示例已the line that refers to the training file注释掉了。您的代码是否可能尝试在测试文件上进行训练?这会导致slept
看起来像一个标签,因为它位于该行的末尾,并会解释错误。
为了记录,我使用你上面给出的测试数据(使用命令行,而不是代码示例)尝试了这个例子并且它工作正常,所以测试/训练格式似乎没问题。