10

CRF++允许我们获得每个标签的边际概率(每个输出标签的一种置信度度量)和输出的可能条件(整个输出的置信度度量)。

% crf_test -v2 -m model test.data
# 0.478113
Rockwell        NNP     B       B/0.992465      B/0.992465      I/0.00144946    O/0.00608594
International   NNP     I       I/0.979089      B/0.0105273     I/0.979089      O/0.0103833
Corp.           NNP     I       I/0.954883      B/0.00477976    I/0.954883      O/0.040337
's              POS     B       B/0.986396      B/0.986396      I/0.00655976    O/0.00704426
Tulsa           NNP     I       I/0.991966      B/0.00787494    I/0.991966      O/0.00015949
unit            NN      I       I/0.996169      B/0.00283111    I/0.996169      O/0.000999975
..

Tensorflow 有自己的 crf 实现。在训练一个 crf 模型之后,我们可以通过ory得到每个测试输入序列的最佳标签序列及其非归一化分数。xtf.contrib.crf.viterbi_decode()tf.contrib.crf.crf_decode()

但是,仅获得一个最佳序列对我来说是不够的。目前,top-k 最好的序列及其对应的分数都对我有用。我注意到目前上述两个功能不提供这些信息。因此,我想知道在对 tensorflow 源代码进行微小修改后是否有可能获得前 k 个最佳候选者。

  1. top-k 标签序列及其对应的非标准化分数。
  2. 每个标签的边际概率(如 CRF++)
4

0 回答 0