#!/usr/bin/env ruby require_relative '../lib/zipf' require 'test/unit' class TestHG < Test::Unit::TestCase def test_viterbi semiring = ViterbiSemiring.new hypergraph, nodes_by_label, nodes_by_index = HG::read_hypergraph_from_json('test/hypergraph/hg.json', semiring, true) HG::viterbi hypergraph, nodes_by_label['root'], semiring assert_equal('Goal', nodes_by_index.last.cat) assert_equal(228.95, Math.log(nodes_by_index.last.score).round(2)) # do all operations in log space semiring = ViterbiLogSemiring.new hypergraph, nodes_by_label, nodes_by_index = HG::read_hypergraph_from_json('test/hypergraph/hg.json', semiring) HG::viterbi hypergraph, nodes_by_label['root'], semiring assert_equal('Goal', nodes_by_index.last.cat) assert_equal(228.95, nodes_by_index.last.score.round(2)) assert_equal hypergraph.nodes.size, 221 assert_equal hypergraph.edges.size, 16640 end end