Как получить топ-k лучших последовательностей-кандидатов при использовании CRF для декодирования в тензорном потоке

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, мы можем получить лучшую последовательность тегов y и его нормализованная оценка для каждой тестовой входной последовательности x через tf.contrib.crf.viterbi_decode() или же tf.contrib.crf.crf_decode(),

Однако для меня недостаточно получить одну лучшую последовательность. В настоящее время лучшие из лучших последовательностей и их соответствующие оценки все полезны для меня. Я заметил, что в настоящее время вышеупомянутые две функции не предоставляют эту информацию. Следовательно, мне интересно, возможно ли получить топ-k лучших кандидатов после незначительных изменений в исходном коде тензорного потока.

  1. последовательности тегов top-k и соответствующие им не нормированные оценки.
  2. предельные вероятности для каждого тега (как CRF++)

0 ответов

Другие вопросы по тегам