Python 在tensorflow中使用CRF解码时如何获得top-k最佳候选序列

Python 在tensorflow中使用CRF解码时如何获得top-k最佳候选序列,python,tensorflow,crf,viterbi,beam-search,Python,Tensorflow,Crf,Viterbi,Beam Search,允许我们获得每个标记的边际概率(每个输出标记的一种置信度度量)和输出的条件概率(整个输出的置信度度量) Tensorflow有自己的crf实现。训练crf模型后,我们可以通过tf.contrib.crf.viterbi_decode()或tf.contrib.crf.crf_decode()获得每个测试输入序列的最佳标记序列y及其非标准化分数 然而,这并不足以让我得到一个最好的序列。目前,top-k最佳序列及其相应的分数对我都很有用。我注意到,目前上述两个功能没有提供这些信息。因此,我想知道是否

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

Tensorflow有自己的crf实现。训练crf模型后,我们可以通过
tf.contrib.crf.viterbi_decode()
tf.contrib.crf.crf_decode()
获得每个测试输入序列的最佳标记序列
y
及其非标准化分数

然而,这并不足以让我得到一个最好的序列。目前,top-k最佳序列及其相应的分数对我都很有用。我注意到,目前上述两个功能没有提供这些信息。因此,我想知道是否有可能在对tensorflow源代码稍作修改后获得top-k最佳候选代码

  • top-k标签序列及其相应的非规范化分数
  • 每个标签的边际概率(如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
    ..