如何在CRF中使用以前的令牌标签作为功能?

时间:2017-05-26 17:02:21

标签: mallet crf

我正在寻找一种方法来使用以属性为条件的功能并在mallet中标记bigrams。我仍然试图了解如何才能使用刚生成的令牌标签作为确定下一个令牌标签的功能?生成的标记的特征向量是否为前一个标记的标签?

我是否误解了CRF允许使用预测的先前标签作为下一个令牌的功能?

提前致谢!

1 个答案:

答案 0 :(得分:2)

  

令牌的特征向量是否作为前一个令牌的标签生成?

不,CRF联合优化损失,没有从MEMM中预测标签然后使用它的从左到右的处理。 CRF会考虑所有可能的先前标签并找到最可能的序列。

  

我是否误解了CRF允许使用预测的先前标签作为下一个令牌的功能?

CRF允许使用以前的标签作为功能;很可能它已经在您的情况下自动发生。我没有Mallet的经验,但在大多数开箱即用的线性链CRF包中有两种功能:

  1. “州特色”。这些是用户定义的每个令牌功能;他们可以使用输入序列中的任何信息(例如当前和先前的令牌,当前令牌的最后3个字母等)。每个状态功能通常以当前输出标签为条件。
  2. “过渡功能”。在最常见的1阶线性链CRF中,它是以先前标签为条件的当前标签。通常,对于所有可能的标签对,这些特征是自动生成的。
  3. 有时您还可以在用户定义的功能上调节(2)转换功能,这些功能取决于当前令牌。看来这就是你要找的东西,但我不确定。一些包实现了这个(例如马鹿),有些不实现(例如crfsuite)。一些包允许定义任意CRF,并使用任意特征(例如pystruct,factorie,GRMM(?))。对不起,我没有使用Mallet的经验,所以这不是一个真正的答案:)