# Path: yaya/collection/hmm.py
# class OrgTranMatrix:
#     def __init__(self):
#         self.hmm = HMMMatrix.load(config.ORG_TR_PATH, NT)
# 
# Path: yaya/common/nt.py
# NT = Enum(
#     'A',  # 上文	[参与]亚太经合组织的活动
#     'B',  # 下文	中央电视台[报道]
#     'X',  # 连接词	北京电视台[和]天津电视台
#     'C',  # 特征词的一般性前缀	 北京[电影]学院
#     'F',  # 特征词的译名性前缀 	美国[摩托罗拉]公司
#     'G',  # 特征词的地名性前缀 	交通银行[北京]分行
#     'H',  # 特征词的机构名前缀	  [中共中央]顾问委员会
#     'I',  # 特征词的特殊性前缀	 [华谊]医院
#     'J',  # 特征词的简称性前缀 	[巴]政府
#     'K',  # 整个机构 [麦当劳]
#     'L',  # 方位词
#     'M',  # 数词 公交集团[五]分公司
#     'P',  # 单字碎片
#     'W',  # 符号
#     'D',  # 机构名的特征词	国务院侨务[办公室]
#     'Z',  # 非机构名成份
#     'S',  # 句子的开头
#     enum_name="NT"
# )
# 
# Path: yaya/seg/segment.py
# def vertexs_to_terms(vertexs, word_only=False):
#     terms = []
#     offset = 0
#     if word_only:
#         terms = [v.real_word for v in vertexs]
#     else:
#         for v in vertexs[1:-1]:
#             terms.append((v.real_word, str(v.nature), offset))
#             offset += len(v.real_word)
#     return terms


from unittest import TestCase
from yaya.collection.hmm import OrgTranMatrix
from yaya.common.nt import NT
from yaya.seg.segment import vertexs_to_terms
from yaya.seg.viterbi import *
from yaya.seg.wordnet import *
        self.assertTrue(u"24" in vertex_list)
        self.assertTrue(u"口" in vertex_list)
        self.assertTrue(u"交换机" in vertex_list)
        self.assertTrue(u"等" in vertex_list)
        self.assertTrue(u"技术性" in vertex_list)
        self.assertTrue(u"器件" in vertex_list)
        self.assertTrue(u"的" in vertex_list)
        self.assertTrue(u"安装" in vertex_list)
        self.assertTrue(u"工作" in vertex_list)

    def test_custom_dict(self):
        text = u"黄勇今天来上班了"
        word_net = WordNet(text)
        gen_word_net(text, word_net)
        vertex_list = viterbi(word_net.vertexs)
        vertex_list = combine_by_custom_dict(vertex_list)
        self.assertEqual(vertex_list[1].real_word, u"黄勇")


class TestViterbi(TestCase):
    def test_computer(self):
        node_list = []
        node_list.append(Attribute((NT.S, 19800)))
        node_list.append(Attribute((NT.K, 1000, NT.D, 1000)))
        node_list.append(Attribute((NT.C, 1000, NT.B, 1000)))
        node_list.append(Attribute((NT.M, 1000)))
        node_list.append(Attribute((NT.P, 12, NT.D, 1)))
        node_list.append(Attribute((NT.B, 19800)))
        tag_list = viterbi_standard(node_list, hmm=OrgTranMatrix().hmm)
        self.assertEquals(6, len(tag_list))

# Path: yaya/collection/hmm.py
# class OrgTranMatrix:
#     def __init__(self):
#         self.hmm = HMMMatrix.load(config.ORG_TR_PATH, NT)
# 
# Path: yaya/common/nt.py
# NT = Enum(
#     'A',  # 上文	[参与]亚太经合组织的活动
#     'B',  # 下文	中央电视台[报道]
#     'X',  # 连接词	北京电视台[和]天津电视台
#     'C',  # 特征词的一般性前缀	 北京[电影]学院
#     'F',  # 特征词的译名性前缀 	美国[摩托罗拉]公司
#     'G',  # 特征词的地名性前缀 	交通银行[北京]分行
#     'H',  # 特征词的机构名前缀	  [中共中央]顾问委员会
#     'I',  # 特征词的特殊性前缀	 [华谊]医院
#     'J',  # 特征词的简称性前缀 	[巴]政府
#     'K',  # 整个机构 [麦当劳]
#     'L',  # 方位词
#     'M',  # 数词 公交集团[五]分公司
#     'P',  # 单字碎片
#     'W',  # 符号
#     'D',  # 机构名的特征词	国务院侨务[办公室]
#     'Z',  # 非机构名成份
#     'S',  # 句子的开头
#     enum_name="NT"
# )
# 
# Path: yaya/seg/segment.py
# def vertexs_to_terms(vertexs, word_only=False):
#     terms = []
#     offset = 0
#     if word_only:
#         terms = [v.real_word for v in vertexs]
#     else:
#         for v in vertexs[1:-1]:
#             terms.append((v.real_word, str(v.nature), offset))
#             offset += len(v.real_word)
#     return terms


# Path: test/test_viterbi_segment.py
from unittest import TestCase
from yaya.collection.hmm import OrgTranMatrix
from yaya.common.nt import NT
from yaya.seg.segment import vertexs_to_terms
from yaya.seg.viterbi import *
from yaya.seg.wordnet import *

        self.assertTrue(u"24" in vertex_list)
        self.assertTrue(u"口" in vertex_list)
        self.assertTrue(u"交换机" in vertex_list)
        self.assertTrue(u"等" in vertex_list)
        self.assertTrue(u"技术性" in vertex_list)
        self.assertTrue(u"器件" in vertex_list)
        self.assertTrue(u"的" in vertex_list)
        self.assertTrue(u"安装" in vertex_list)
        self.assertTrue(u"工作" in vertex_list)

    def test_custom_dict(self):
        text = u"黄勇今天来上班了"
        word_net = WordNet(text)
        gen_word_net(text, word_net)
        vertex_list = viterbi(word_net.vertexs)
        vertex_list = combine_by_custom_dict(vertex_list)
        self.assertEqual(vertex_list[1].real_word, u"黄勇")


class TestViterbi(TestCase):
    def test_computer(self):
        node_list = []
        node_list.append(Attribute((NT.S, 19800)))
        node_list.append(Attribute((NT.K, 1000, NT.D, 1000)))
        node_list.append(Attribute((NT.C, 1000, NT.B, 1000)))
        node_list.append(Attribute((NT.M, 1000)))
        node_list.append(Attribute((NT.P, 12, NT.D, 1)))
        node_list.append(Attribute((NT.B, 19800)))
        tag_list = viterbi_standard(node_list, hmm=OrgTranMatrix().hmm)
        self.assertEquals(6, len(tag_list))

        self.assertEqual(NT.K, tag_list[1])