├── .gitignore ├── README.md ├── analysis.py ├── analysis.txt ├── buildTree.py ├── data ├── emb ├── test_list ├── train_list └── zp_raw_data.zip ├── data_builder.py ├── data_generator.py ├── main.py ├── net.py ├── parse_analysis.py ├── properties_loader.py └── utils.py /.gitignore: -------------------------------------------------------------------------------- 1 | models/ 2 | results/ 3 | .DS_Store 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Hierarchical Attention Network with Pairwise Loss for Chinese Zero Pronoun Resolution 2 | Recent neural network methods for Chinese zero pronoun resolution typically model zero pronouns by only utilizing contexts of the zero pronouns while ignoring candidate antecedents information and simply treat the task as a classification task. In this paper, we propose a Hierarchical Attention Network with Pairwise Loss (HAN-PL), for Chinese zero pronoun resolution. In the proposed HAN-PL, we design a two-layer attention model to generate more powerful representations for zero pronouns and candidate antecedents. In addition, we integrate constraint of similarities among correct antecedents into max-margin loss, for guiding the training of the model. Our model achieves state-of-the-art performance on OntoNotes 5.0 dataset. 3 | 4 | ## Requirements 5 | * Python 2.7 6 | * Pytorch(0.4.0) 7 | * CUDA 8 | 9 | ## Citation 10 | 11 | ``` 12 | @inproceedings{lin2020hierarchical, 13 | title={Hierarchical Attention Network with Pairwise Loss for Chinese Zero Pronoun Resolution}, 14 | author={Lin, Peiqin and Yang, Meng}, 15 | booktitle={Proceedings of the AAAI Conference on Artificial Intelligence}, 16 | volume={34}, 17 | number={05}, 18 | pages={8352--8359}, 19 | year={2020} 20 | } 21 | ``` 22 | 23 | -------------------------------------------------------------------------------- /analysis.py: -------------------------------------------------------------------------------- 1 | # coding=utf8 2 | from data_generator import * 3 | from net import * 4 | from conf import * 5 | import sys 6 | import numpy 7 | 8 | random.seed(0) 9 | numpy.random.seed(0) 10 | sys.setrecursionlimit(1000000) 11 | 12 | 13 | 14 | 15 | 16 | # 获取文件中句子 17 | def get_info_from_file(file_name): 18 | f = open(file_name) 19 | cut_sentences = [] 20 | while True: 21 | line = f.readline() 22 | if not line: 23 | break 24 | line = line.strip() 25 | if line == 'Treebanked sentence:': 26 | f.readline() 27 | sentence = [] 28 | line = f.readline().strip() 29 | while line != '': 30 | sentence.extend(line.split(' ')) 31 | line = f.readline().strip() 32 | cut_sentences.append(sentence) 33 | return cut_sentences 34 | 35 | 36 | # 句子转换为对应 id 37 | def list_vectorized(wl, words): 38 | il = [] 39 | for word in wl: 40 | if word in words: 41 | index = words.index(word) 42 | else: 43 | index = 0 44 | il.append(index) 45 | return il 46 | 47 | 48 | # 向量化句子 49 | def vectorized_sentences(file_name): 50 | sentences = [] 51 | read_f = file('./data/emb', 'rb') 52 | embedding, words, wd = cPickle.load(read_f) 53 | read_f.close() 54 | 55 | cut_sentences = get_info_from_file(file_name) 56 | for cut_sentence in cut_sentences: 57 | vectorized_words = list_vectorized(cut_sentence, words) 58 | sentences.append((' '.join(cut_sentence), vectorized_words)) 59 | return sentences 60 | 61 | 62 | # 获取原数据内容 63 | def get_raw_data(arg): 64 | paths = [w.strip() for w in open(arg).readlines()] 65 | sentences = [] 66 | for p in paths: 67 | sentences.extend(vectorized_sentences(p.strip())) 68 | return sentences 69 | 70 | 71 | # 获取预处理后内容 72 | def get_processed_data(data_path): 73 | processed_data = [] 74 | 75 | read_f = file(data_path + 'zp_info', 'rb') 76 | zp_info_test = cPickle.load(read_f) 77 | read_f.close() 78 | 79 | vectorized_sentences = numpy.load(data_path + 'sen.npy') 80 | for zp, candi_info in zp_info_test: 81 | index_in_file, sentence_index, zp_begin_index, zp_end_index = zp 82 | word_embedding_indexs = vectorized_sentences[index_in_file] 83 | max_index = len(word_embedding_indexs) 84 | 85 | prefix = word_embedding_indexs[max(0, zp_begin_index - 10):zp_begin_index] 86 | 87 | postfix = word_embedding_indexs[zp_end_index + 1:min(zp_end_index + 11, max_index)] 88 | 89 | candis = [] 90 | for candi_index_in_file, candi_sentence_index, candi_begin, candi_end, res, target, ifl in candi_info: 91 | candi_word_embedding_indexs = vectorized_sentences[candi_index_in_file] 92 | candi_vec = candi_word_embedding_indexs[candi_begin:candi_end + 1] 93 | candis.append((candi_index_in_file, candi_begin, candi_end, candi_vec)) 94 | processed_data.append((index_in_file, zp_begin_index, zp_end_index, prefix, postfix, candis)) 95 | 96 | return processed_data 97 | 98 | 99 | # 获取预测结果 100 | def get_predict_max(data): 101 | predicts = [] 102 | predict_ids = [] 103 | wrong_res = [] 104 | for id, (result, output) in enumerate(data): 105 | if isinstance(result, int) and isinstance(output, int): 106 | predicts.append(-1) 107 | predict_ids.append(-1) 108 | continue 109 | max_index = -1 110 | max_pro = 0.0 111 | for i in range(len(output)): 112 | if output[i] > max_pro: 113 | max_index = i 114 | max_pro = output[i] 115 | if result[max_index] != 1: 116 | correct_id, correct_score = 0, -1 117 | for i in range(len(output)): 118 | if result[i] == 1: 119 | correct_id = i 120 | correct_score = output[i] 121 | wrong_res.append((id, max_index, max_pro, correct_id, correct_score)) 122 | predicts.append(result[max_index]) 123 | predict_ids.append(max_index) 124 | return predicts, predict_ids, wrong_res 125 | 126 | 127 | # 获取模型消解结果 128 | def get_result(model_name, generator): 129 | random.seed(0) 130 | numpy.random.seed(0) 131 | torch.manual_seed(args.random_seed) 132 | torch.cuda.manual_seed(args.random_seed) 133 | torch.cuda.set_device(args.gpu) 134 | 135 | read_f = file('./data/emb', 'rb') 136 | embedding_matrix, _, _ = cPickle.load(read_f) 137 | read_f.close() 138 | 139 | print 'Building torch model' 140 | best_model = torch.load('./models/' + model_name) 141 | 142 | predict = [] 143 | for data in generator.generate_data(): 144 | zp_rep, npc_rep, np_rep, feature = best_model.forward(data) 145 | output = best_model.generate_score(zp_rep, npc_rep, np_rep, feature) 146 | output = output.data.cpu().numpy() 147 | for s, e in data["s2e"]: 148 | if s == e: 149 | predict.append((-1, -1)) 150 | continue 151 | predict.append((data['result'][s:e], output[s:e])) 152 | 153 | predicts, predict_id, wrong_res = get_predict_max(predict) 154 | 155 | save_f = file(model_name + '_predict', 'wb') 156 | cPickle.dump(predicts, save_f, protocol=cPickle.HIGHEST_PROTOCOL) 157 | return wrong_res 158 | 159 | 160 | # 可视化结果 161 | def vis_result(processed_data, sentences, info): 162 | search_id, wrong_id, wrong_sco, correct_id, correct_sco = info 163 | index_in_file, zp_begin_index, zp_end_index, zp_prefixs, zp_postfixs, candis = processed_data[search_id] 164 | wrong_candi_index_in_file, wrong_candi_begin, wrong_candi_end, _ = candis[wrong_id] 165 | correct_candi_index_in_file, correct_candi_begin, correct_candi_end, _ = candis[correct_id] 166 | 167 | return '错误 ZP 所在句子:%s\n位置:%s\n错的先行词所在句子:%s\n位置:%s-%s,分数:%s\n对的先行词所在句子:%s\n位置:%s-%s,分数:%s\n' % ( 168 | sentences[index_in_file][0], zp_begin_index, sentences[wrong_candi_index_in_file][0], wrong_candi_begin, 169 | wrong_candi_end, wrong_sco, sentences[correct_candi_index_in_file][0], correct_candi_begin, correct_candi_end, 170 | correct_sco) 171 | 172 | 173 | if __name__ == '__main__': 174 | # 查看处理数据情况 175 | # vis_raw_data() 176 | 177 | # 可视化实验结果 178 | is_test = False 179 | if is_test: 180 | raw_data_file = './data/test_list' 181 | processed_data_file = './data/test/' 182 | generator = DataGenerator("test", 256) 183 | else: 184 | raw_data_file = './data/train_list' 185 | processed_data_file = './data/train/' 186 | generator = DataGenerator('train', 256) 187 | 188 | # get raw data 189 | sentences = get_raw_data(raw_data_file) 190 | # get processed data 191 | processed_data = get_processed_data(processed_data_file) 192 | # get result 193 | wrong_res = get_result('model', generator) 194 | # visualize result 195 | with open('analysis.txt', 'w') as f: 196 | for info in wrong_res: 197 | analysis_res = vis_result(processed_data, sentences, info) 198 | f.write(analysis_res) 199 | -------------------------------------------------------------------------------- /buildTree.py: -------------------------------------------------------------------------------- 1 | # coding=utf8 2 | import re 3 | import parse_analysis 4 | 5 | 6 | def dif(l1, l2): 7 | if not (len(l1) == len(l2)): 8 | return True 9 | for i in range(len(l1)): 10 | if not (l1[i] == l2[i]): 11 | return True 12 | return False 13 | 14 | 15 | def is_pro(leaf_nodes): 16 | if len(leaf_nodes) == 1: 17 | if leaf_nodes[0].word == "*pro*": 18 | return True 19 | return False 20 | 21 | 22 | def is_zero_tag(leaf_nodes): 23 | if len(leaf_nodes) == 1: 24 | if leaf_nodes[0].word.find("*") >= 0: 25 | return True 26 | return False 27 | 28 | 29 | def is_np(tag): 30 | np_list = ['NP-SBJ', 'NP', 'NP-PN-OBJ', 'NP-PN', 'NP-PN-SBJ', 'NP-OBJ', 'NP-TPC-1', 'NP-TPC', 'NP-PN-VOC', 'NP-VOC', 31 | 'NP-IO', 'NP-SBJ-1', 'NP-PN-TPC', 'NP-PRD', 'NP-TMP', 'NP-PN-PRD', 'NP-PN-SBJ-1', 'NP-APP', 'NP-TPC-2', 32 | 'NP-PN-SBJ-3', 'NP-PN-IO', 'NP-PN-LOC', 'NP-SBJ-2', 'NP-PN-OBJ-1', 'NP-LGS', 'NP-MNR', 'NP-SBJ-3', 33 | 'NP-OBJ-PN', 'NP-SBJ-4', 'NP-PN-SBJ-2', 'NP-TPC-3', 'NP-HLN', 'NP-PN-APP', 'NP-SBJ-PN', 'NP-DIR', 34 | 'NP-LOC', 'NP-ADV', 'NP-WH-SBJ'] 35 | 36 | if tag in np_list: 37 | return True 38 | else: 39 | return False 40 | 41 | 42 | def get_info_from_file(file_name): 43 | pattern = re.compile("(\d+?)\ +(.+?)$") 44 | pattern_zp = re.compile("(\d+?)\.(\d+?)\-(\d+?)\ +(.+?)$") 45 | 46 | total = 0 47 | 48 | inline = "new" 49 | f = open(file_name) 50 | 51 | sentence_num = 0 52 | 53 | nodes_info = {} 54 | candi = {} 55 | zps = [] 56 | azps = [] 57 | 58 | while True: 59 | line = f.readline() 60 | if not line: 61 | break 62 | line = line.strip() 63 | 64 | if line == "Leaves:": 65 | while True: 66 | inline = f.readline() 67 | if inline.strip() == "": 68 | break 69 | inline = inline.strip() 70 | match = pattern.match(inline) 71 | if match: 72 | word = match.groups()[1] 73 | sentence_num += 1 74 | 75 | elif line == "Tree:": 76 | candi[sentence_num] = [] 77 | nodes_info[sentence_num] = None 78 | parse_info = "" 79 | inline = f.readline() 80 | while True: 81 | inline = f.readline() 82 | if inline.strip("\n") == "": 83 | break 84 | parse_info = parse_info + " " + inline.strip() 85 | parse_info = parse_info.strip() 86 | nl, wl = parse_analysis.buildTree(parse_info) 87 | 88 | nodes_info[sentence_num] = (nl, wl) 89 | 90 | for node in nl: 91 | if is_np(node.tag): 92 | if node.parent.tag.startswith("NP"): 93 | if not (node == node.parent.child[0]): 94 | continue 95 | leaf_nodes = node.get_leaf() 96 | if is_pro(leaf_nodes): 97 | continue 98 | if is_zero_tag(leaf_nodes): 99 | continue 100 | candi[sentence_num].append((leaf_nodes[0].index, leaf_nodes[-1].index)) 101 | total += 1 102 | for node in wl: 103 | if node.word == "*pro*": 104 | zps.append((sentence_num, node.index)) 105 | 106 | elif line.startswith("Coreference chain"): 107 | first = True 108 | antecedents = [] 109 | 110 | while True: 111 | inline = f.readline() 112 | if not inline: break 113 | if inline.startswith( 114 | "----------------------------------------------------------------------------------"): 115 | break 116 | inline = inline.strip() 117 | if len(inline) <= 0: continue 118 | if inline.startswith("Chain"): 119 | first = True 120 | antecedents = [] 121 | coref_id = inline.strip().split(" ")[1] 122 | else: 123 | match = pattern_zp.match(inline) 124 | if match: 125 | sentence_index = int(match.groups()[0]) 126 | begin_word_index = int(match.groups()[1]) 127 | end_word_index = int(match.groups()[2]) 128 | word = match.groups()[-1] 129 | if word == "*pro*": 130 | if not first: 131 | azps.append((sentence_index, begin_word_index, end_word_index, antecedents, coref_id, 1)) 132 | if not word == "*pro*": 133 | first = False 134 | antecedents.append((sentence_index, begin_word_index, end_word_index, coref_id)) 135 | # if not first: 136 | # azps.append((sentence_index, begin_word_index, end_word_index, antecedents, coref_id, 0)) 137 | 138 | if not inline: 139 | break 140 | return zps, azps, candi, nodes_info 141 | -------------------------------------------------------------------------------- /data/emb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lpq29743/HAN-PL/3a9f315babf119b0df1b8766734fefe1e1942d05/data/emb -------------------------------------------------------------------------------- /data/test_list: -------------------------------------------------------------------------------- 1 | ./data/zp_data/test/nw/xinhua/02/chtb_0290.onf 2 | ./data/zp_data/test/nw/xinhua/02/chtb_0250.onf 3 | ./data/zp_data/test/nw/xinhua/02/chtb_0220.onf 4 | ./data/zp_data/test/nw/xinhua/02/chtb_0270.onf 5 | ./data/zp_data/test/nw/xinhua/02/chtb_0200.onf 6 | ./data/zp_data/test/nw/xinhua/02/chtb_0240.onf 7 | ./data/zp_data/test/nw/xinhua/02/chtb_0210.onf 8 | ./data/zp_data/test/nw/xinhua/02/chtb_0280.onf 9 | ./data/zp_data/test/nw/xinhua/02/chtb_0260.onf 10 | ./data/zp_data/test/nw/xinhua/02/chtb_0230.onf 11 | ./data/zp_data/test/nw/xinhua/00/chtb_0080.onf 12 | ./data/zp_data/test/nw/xinhua/00/chtb_0050.onf 13 | ./data/zp_data/test/nw/xinhua/00/chtb_0020.onf 14 | ./data/zp_data/test/nw/xinhua/00/chtb_0090.onf 15 | ./data/zp_data/test/nw/xinhua/00/chtb_0060.onf 16 | ./data/zp_data/test/nw/xinhua/00/chtb_0070.onf 17 | ./data/zp_data/test/nw/xinhua/00/chtb_0030.onf 18 | ./data/zp_data/test/nw/xinhua/00/chtb_0010.onf 19 | ./data/zp_data/test/nw/xinhua/00/chtb_0040.onf 20 | ./data/zp_data/test/nw/xinhua/01/chtb_0170.onf 21 | ./data/zp_data/test/nw/xinhua/01/chtb_0190.onf 22 | ./data/zp_data/test/nw/xinhua/01/chtb_0160.onf 23 | ./data/zp_data/test/nw/xinhua/01/chtb_0120.onf 24 | ./data/zp_data/test/nw/xinhua/01/chtb_0110.onf 25 | ./data/zp_data/test/nw/xinhua/01/chtb_0100.onf 26 | ./data/zp_data/test/nw/xinhua/01/chtb_0180.onf 27 | ./data/zp_data/test/nw/xinhua/01/chtb_0130.onf 28 | ./data/zp_data/test/nw/xinhua/01/chtb_0150.onf 29 | ./data/zp_data/test/nw/xinhua/01/chtb_0140.onf 30 | ./data/zp_data/test/nw/xinhua/03/chtb_0310.onf 31 | ./data/zp_data/test/nw/xinhua/03/chtb_0320.onf 32 | ./data/zp_data/test/nw/xinhua/03/chtb_0300.onf 33 | ./data/zp_data/test/mz/sinorama/10/chtb_1050.onf 34 | ./data/zp_data/test/mz/sinorama/10/chtb_1020.onf 35 | ./data/zp_data/test/mz/sinorama/10/chtb_1010.onf 36 | ./data/zp_data/test/mz/sinorama/10/chtb_1040.onf 37 | ./data/zp_data/test/mz/sinorama/10/chtb_1030.onf 38 | ./data/zp_data/test/mz/sinorama/10/chtb_1060.onf 39 | ./data/zp_data/test/mz/sinorama/10/chtb_1070.onf 40 | ./data/zp_data/test/wb/cmn/00/cmn_0030.onf 41 | ./data/zp_data/test/wb/cmn/00/cmn_0010.onf 42 | ./data/zp_data/test/wb/cmn/00/cmn_0040.onf 43 | ./data/zp_data/test/wb/cmn/00/cmn_0050.onf 44 | ./data/zp_data/test/wb/e2c/00/e2c_0010.onf 45 | ./data/zp_data/test/wb/dev_09_cmn/00/dev_09_cmn_0000.onf 46 | ./data/zp_data/test/wb/dev_09_cmn/00/dev_09_cmn_0060.onf 47 | ./data/zp_data/test/wb/dev_09_cmn/00/dev_09_cmn_0040.onf 48 | ./data/zp_data/test/wb/dev_09_cmn/00/dev_09_cmn_0030.onf 49 | ./data/zp_data/test/wb/dev_09_cmn/00/dev_09_cmn_0050.onf 50 | ./data/zp_data/test/bc/cnn/00/cnn_0000.onf 51 | ./data/zp_data/test/bc/phoenix/00/phoenix_0010.onf 52 | ./data/zp_data/test/bc/phoenix/00/phoenix_0000.onf 53 | ./data/zp_data/test/bc/cctv/00/cctv_0000.onf 54 | ./data/zp_data/test/bc/msnbc/00/msnbc_0000.onf 55 | ./data/zp_data/test/bn/cts/02/cts_0200.onf 56 | ./data/zp_data/test/bn/cts/02/cts_0250.onf 57 | ./data/zp_data/test/bn/cts/02/cts_0290.onf 58 | ./data/zp_data/test/bn/cts/02/cts_0260.onf 59 | ./data/zp_data/test/bn/cts/02/cts_0220.onf 60 | ./data/zp_data/test/bn/cts/02/cts_0240.onf 61 | ./data/zp_data/test/bn/cts/02/cts_0210.onf 62 | ./data/zp_data/test/bn/cts/02/cts_0270.onf 63 | ./data/zp_data/test/bn/cts/02/cts_0230.onf 64 | ./data/zp_data/test/bn/cts/02/cts_0280.onf 65 | ./data/zp_data/test/bn/cts/00/cts_0060.onf 66 | ./data/zp_data/test/bn/cts/00/cts_0090.onf 67 | ./data/zp_data/test/bn/cts/00/cts_0020.onf 68 | ./data/zp_data/test/bn/cts/00/cts_0050.onf 69 | ./data/zp_data/test/bn/cts/00/cts_0040.onf 70 | ./data/zp_data/test/bn/cts/00/cts_0030.onf 71 | ./data/zp_data/test/bn/cts/00/cts_0010.onf 72 | ./data/zp_data/test/bn/cts/00/cts_0070.onf 73 | ./data/zp_data/test/bn/cts/00/cts_0080.onf 74 | ./data/zp_data/test/bn/cts/01/cts_0130.onf 75 | ./data/zp_data/test/bn/cts/01/cts_0110.onf 76 | ./data/zp_data/test/bn/cts/01/cts_0100.onf 77 | ./data/zp_data/test/bn/cts/01/cts_0150.onf 78 | ./data/zp_data/test/bn/cts/01/cts_0160.onf 79 | ./data/zp_data/test/bn/cts/01/cts_0170.onf 80 | ./data/zp_data/test/bn/cts/01/cts_0190.onf 81 | ./data/zp_data/test/bn/cts/01/cts_0120.onf 82 | ./data/zp_data/test/bn/cts/01/cts_0180.onf 83 | ./data/zp_data/test/bn/cts/01/cts_0140.onf 84 | ./data/zp_data/test/bn/cts/03/cts_0310.onf 85 | ./data/zp_data/test/bn/cts/03/cts_0300.onf 86 | ./data/zp_data/test/bn/cnr/00/cnr_0020.onf 87 | ./data/zp_data/test/bn/cnr/00/cnr_0070.onf 88 | ./data/zp_data/test/bn/cnr/00/cnr_0060.onf 89 | ./data/zp_data/test/bn/cnr/00/cnr_0050.onf 90 | ./data/zp_data/test/bn/cnr/00/cnr_0030.onf 91 | ./data/zp_data/test/bn/cnr/00/cnr_0010.onf 92 | ./data/zp_data/test/bn/cnr/00/cnr_0040.onf 93 | ./data/zp_data/test/bn/cnr/00/cnr_0090.onf 94 | ./data/zp_data/test/bn/cnr/00/cnr_0080.onf 95 | ./data/zp_data/test/bn/cnr/01/cnr_0130.onf 96 | ./data/zp_data/test/bn/cnr/01/cnr_0100.onf 97 | ./data/zp_data/test/bn/cnr/01/cnr_0140.onf 98 | ./data/zp_data/test/bn/cnr/01/cnr_0110.onf 99 | ./data/zp_data/test/bn/cnr/01/cnr_0120.onf 100 | ./data/zp_data/test/bn/vom/02/vom_0290.onf 101 | ./data/zp_data/test/bn/vom/02/vom_0240.onf 102 | ./data/zp_data/test/bn/vom/02/vom_0260.onf 103 | ./data/zp_data/test/bn/vom/02/vom_0230.onf 104 | ./data/zp_data/test/bn/vom/02/vom_0220.onf 105 | ./data/zp_data/test/bn/vom/02/vom_0200.onf 106 | ./data/zp_data/test/bn/vom/02/vom_0280.onf 107 | ./data/zp_data/test/bn/vom/02/vom_0210.onf 108 | ./data/zp_data/test/bn/vom/02/vom_0270.onf 109 | ./data/zp_data/test/bn/vom/02/vom_0250.onf 110 | ./data/zp_data/test/bn/vom/00/vom_0040.onf 111 | ./data/zp_data/test/bn/vom/00/vom_0050.onf 112 | ./data/zp_data/test/bn/vom/00/vom_0080.onf 113 | ./data/zp_data/test/bn/vom/00/vom_0060.onf 114 | ./data/zp_data/test/bn/vom/00/vom_0010.onf 115 | ./data/zp_data/test/bn/vom/00/vom_0030.onf 116 | ./data/zp_data/test/bn/vom/00/vom_0090.onf 117 | ./data/zp_data/test/bn/vom/00/vom_0020.onf 118 | ./data/zp_data/test/bn/vom/00/vom_0070.onf 119 | ./data/zp_data/test/bn/vom/01/vom_0110.onf 120 | ./data/zp_data/test/bn/vom/01/vom_0170.onf 121 | ./data/zp_data/test/bn/vom/01/vom_0190.onf 122 | ./data/zp_data/test/bn/vom/01/vom_0140.onf 123 | ./data/zp_data/test/bn/vom/01/vom_0180.onf 124 | ./data/zp_data/test/bn/vom/01/vom_0150.onf 125 | ./data/zp_data/test/bn/vom/01/vom_0100.onf 126 | ./data/zp_data/test/bn/vom/01/vom_0130.onf 127 | ./data/zp_data/test/bn/vom/01/vom_0160.onf 128 | ./data/zp_data/test/bn/vom/01/vom_0120.onf 129 | ./data/zp_data/test/bn/vom/03/vom_0320.onf 130 | ./data/zp_data/test/bn/vom/03/vom_0310.onf 131 | ./data/zp_data/test/bn/vom/03/vom_0300.onf 132 | ./data/zp_data/test/bn/ctv/00/ctv_0060.onf 133 | ./data/zp_data/test/bn/ctv/00/ctv_0050.onf 134 | ./data/zp_data/test/bn/ctv/00/ctv_0030.onf 135 | ./data/zp_data/test/bn/ctv/00/ctv_0010.onf 136 | ./data/zp_data/test/bn/ctv/00/ctv_0090.onf 137 | ./data/zp_data/test/bn/ctv/00/ctv_0070.onf 138 | ./data/zp_data/test/bn/ctv/00/ctv_0040.onf 139 | ./data/zp_data/test/bn/ctv/00/ctv_0020.onf 140 | ./data/zp_data/test/bn/ctv/00/ctv_0080.onf 141 | ./data/zp_data/test/bn/ctv/01/ctv_0160.onf 142 | ./data/zp_data/test/bn/ctv/01/ctv_0140.onf 143 | ./data/zp_data/test/bn/ctv/01/ctv_0180.onf 144 | ./data/zp_data/test/bn/ctv/01/ctv_0110.onf 145 | ./data/zp_data/test/bn/ctv/01/ctv_0120.onf 146 | ./data/zp_data/test/bn/ctv/01/ctv_0100.onf 147 | ./data/zp_data/test/bn/ctv/01/ctv_0170.onf 148 | ./data/zp_data/test/bn/ctv/01/ctv_0130.onf 149 | ./data/zp_data/test/bn/ctv/01/ctv_0190.onf 150 | ./data/zp_data/test/bn/ctv/01/ctv_0150.onf 151 | ./data/zp_data/test/bn/cbs/00/cbs_0060.onf 152 | ./data/zp_data/test/bn/cbs/00/cbs_0040.onf 153 | ./data/zp_data/test/bn/cbs/00/cbs_0080.onf 154 | ./data/zp_data/test/bn/cbs/00/cbs_0020.onf 155 | ./data/zp_data/test/bn/cbs/00/cbs_0010.onf 156 | ./data/zp_data/test/bn/cbs/00/cbs_0050.onf 157 | ./data/zp_data/test/bn/cbs/00/cbs_0090.onf 158 | ./data/zp_data/test/bn/cbs/00/cbs_0070.onf 159 | ./data/zp_data/test/bn/cbs/00/cbs_0030.onf 160 | ./data/zp_data/test/bn/cbs/01/cbs_0140.onf 161 | ./data/zp_data/test/bn/cbs/01/cbs_0170.onf 162 | ./data/zp_data/test/bn/cbs/01/cbs_0150.onf 163 | ./data/zp_data/test/bn/cbs/01/cbs_0110.onf 164 | ./data/zp_data/test/bn/cbs/01/cbs_0130.onf 165 | ./data/zp_data/test/bn/cbs/01/cbs_0120.onf 166 | ./data/zp_data/test/bn/cbs/01/cbs_0180.onf 167 | ./data/zp_data/test/bn/cbs/01/cbs_0160.onf 168 | ./data/zp_data/test/bn/cbs/01/cbs_0100.onf 169 | ./data/zp_data/test/tc/ch/00/ch_0010.onf 170 | ./data/zp_data/test/tc/ch/00/ch_0040.onf 171 | ./data/zp_data/test/tc/ch/00/ch_0030.onf 172 | ./data/zp_data/test/tc/ch/00/ch_0020.onf 173 | -------------------------------------------------------------------------------- /data/train_list: -------------------------------------------------------------------------------- 1 | ./data/zp_data/train/nw/xinhua/02/chtb_0236.onf 2 | ./data/zp_data/train/nw/xinhua/02/chtb_0205.onf 3 | ./data/zp_data/train/nw/xinhua/02/chtb_0228.onf 4 | ./data/zp_data/train/nw/xinhua/02/chtb_0267.onf 5 | ./data/zp_data/train/nw/xinhua/02/chtb_0263.onf 6 | ./data/zp_data/train/nw/xinhua/02/chtb_0238.onf 7 | ./data/zp_data/train/nw/xinhua/02/chtb_0272.onf 8 | ./data/zp_data/train/nw/xinhua/02/chtb_0261.onf 9 | ./data/zp_data/train/nw/xinhua/02/chtb_0275.onf 10 | ./data/zp_data/train/nw/xinhua/02/chtb_0225.onf 11 | ./data/zp_data/train/nw/xinhua/02/chtb_0233.onf 12 | ./data/zp_data/train/nw/xinhua/02/chtb_0203.onf 13 | ./data/zp_data/train/nw/xinhua/02/chtb_0287.onf 14 | ./data/zp_data/train/nw/xinhua/02/chtb_0231.onf 15 | ./data/zp_data/train/nw/xinhua/02/chtb_0246.onf 16 | ./data/zp_data/train/nw/xinhua/02/chtb_0258.onf 17 | ./data/zp_data/train/nw/xinhua/02/chtb_0214.onf 18 | ./data/zp_data/train/nw/xinhua/02/chtb_0273.onf 19 | ./data/zp_data/train/nw/xinhua/02/chtb_0235.onf 20 | ./data/zp_data/train/nw/xinhua/02/chtb_0245.onf 21 | ./data/zp_data/train/nw/xinhua/02/chtb_0281.onf 22 | ./data/zp_data/train/nw/xinhua/02/chtb_0211.onf 23 | ./data/zp_data/train/nw/xinhua/02/chtb_0285.onf 24 | ./data/zp_data/train/nw/xinhua/02/chtb_0215.onf 25 | ./data/zp_data/train/nw/xinhua/02/chtb_0283.onf 26 | ./data/zp_data/train/nw/xinhua/02/chtb_0208.onf 27 | ./data/zp_data/train/nw/xinhua/02/chtb_0224.onf 28 | ./data/zp_data/train/nw/xinhua/02/chtb_0201.onf 29 | ./data/zp_data/train/nw/xinhua/02/chtb_0202.onf 30 | ./data/zp_data/train/nw/xinhua/02/chtb_0278.onf 31 | ./data/zp_data/train/nw/xinhua/02/chtb_0286.onf 32 | ./data/zp_data/train/nw/xinhua/02/chtb_0252.onf 33 | ./data/zp_data/train/nw/xinhua/02/chtb_0207.onf 34 | ./data/zp_data/train/nw/xinhua/02/chtb_0254.onf 35 | ./data/zp_data/train/nw/xinhua/02/chtb_0237.onf 36 | ./data/zp_data/train/nw/xinhua/02/chtb_0284.onf 37 | ./data/zp_data/train/nw/xinhua/02/chtb_0247.onf 38 | ./data/zp_data/train/nw/xinhua/02/chtb_0222.onf 39 | ./data/zp_data/train/nw/xinhua/02/chtb_0242.onf 40 | ./data/zp_data/train/nw/xinhua/02/chtb_0265.onf 41 | ./data/zp_data/train/nw/xinhua/02/chtb_0251.onf 42 | ./data/zp_data/train/nw/xinhua/02/chtb_0241.onf 43 | ./data/zp_data/train/nw/xinhua/02/chtb_0271.onf 44 | ./data/zp_data/train/nw/xinhua/02/chtb_0268.onf 45 | ./data/zp_data/train/nw/xinhua/02/chtb_0221.onf 46 | ./data/zp_data/train/nw/xinhua/02/chtb_0288.onf 47 | ./data/zp_data/train/nw/xinhua/02/chtb_0234.onf 48 | ./data/zp_data/train/nw/xinhua/02/chtb_0256.onf 49 | ./data/zp_data/train/nw/xinhua/02/chtb_0255.onf 50 | ./data/zp_data/train/nw/xinhua/02/chtb_0298.onf 51 | ./data/zp_data/train/nw/xinhua/02/chtb_0223.onf 52 | ./data/zp_data/train/nw/xinhua/02/chtb_0227.onf 53 | ./data/zp_data/train/nw/xinhua/02/chtb_0213.onf 54 | ./data/zp_data/train/nw/xinhua/02/chtb_0212.onf 55 | ./data/zp_data/train/nw/xinhua/02/chtb_0226.onf 56 | ./data/zp_data/train/nw/xinhua/02/chtb_0218.onf 57 | ./data/zp_data/train/nw/xinhua/02/chtb_0264.onf 58 | ./data/zp_data/train/nw/xinhua/02/chtb_0248.onf 59 | ./data/zp_data/train/nw/xinhua/02/chtb_0216.onf 60 | ./data/zp_data/train/nw/xinhua/02/chtb_0244.onf 61 | ./data/zp_data/train/nw/xinhua/02/chtb_0293.onf 62 | ./data/zp_data/train/nw/xinhua/02/chtb_0232.onf 63 | ./data/zp_data/train/nw/xinhua/02/chtb_0282.onf 64 | ./data/zp_data/train/nw/xinhua/02/chtb_0297.onf 65 | ./data/zp_data/train/nw/xinhua/02/chtb_0295.onf 66 | ./data/zp_data/train/nw/xinhua/02/chtb_0204.onf 67 | ./data/zp_data/train/nw/xinhua/02/chtb_0262.onf 68 | ./data/zp_data/train/nw/xinhua/02/chtb_0274.onf 69 | ./data/zp_data/train/nw/xinhua/02/chtb_0294.onf 70 | ./data/zp_data/train/nw/xinhua/02/chtb_0276.onf 71 | ./data/zp_data/train/nw/xinhua/02/chtb_0253.onf 72 | ./data/zp_data/train/nw/xinhua/02/chtb_0266.onf 73 | ./data/zp_data/train/nw/xinhua/02/chtb_0292.onf 74 | ./data/zp_data/train/nw/xinhua/02/chtb_0217.onf 75 | ./data/zp_data/train/nw/xinhua/02/chtb_0206.onf 76 | ./data/zp_data/train/nw/xinhua/02/chtb_0243.onf 77 | ./data/zp_data/train/nw/xinhua/02/chtb_0291.onf 78 | ./data/zp_data/train/nw/xinhua/02/chtb_0296.onf 79 | ./data/zp_data/train/nw/xinhua/02/chtb_0277.onf 80 | ./data/zp_data/train/nw/xinhua/02/chtb_0257.onf 81 | ./data/zp_data/train/nw/xinhua/00/chtb_0002.onf 82 | ./data/zp_data/train/nw/xinhua/00/chtb_0062.onf 83 | ./data/zp_data/train/nw/xinhua/00/chtb_0064.onf 84 | ./data/zp_data/train/nw/xinhua/00/chtb_0044.onf 85 | ./data/zp_data/train/nw/xinhua/00/chtb_0061.onf 86 | ./data/zp_data/train/nw/xinhua/00/chtb_0056.onf 87 | ./data/zp_data/train/nw/xinhua/00/chtb_0084.onf 88 | ./data/zp_data/train/nw/xinhua/00/chtb_0032.onf 89 | ./data/zp_data/train/nw/xinhua/00/chtb_0093.onf 90 | ./data/zp_data/train/nw/xinhua/00/chtb_0078.onf 91 | ./data/zp_data/train/nw/xinhua/00/chtb_0046.onf 92 | ./data/zp_data/train/nw/xinhua/00/chtb_0068.onf 93 | ./data/zp_data/train/nw/xinhua/00/chtb_0027.onf 94 | ./data/zp_data/train/nw/xinhua/00/chtb_0008.onf 95 | ./data/zp_data/train/nw/xinhua/00/chtb_0051.onf 96 | ./data/zp_data/train/nw/xinhua/00/chtb_0054.onf 97 | ./data/zp_data/train/nw/xinhua/00/chtb_0036.onf 98 | ./data/zp_data/train/nw/xinhua/00/chtb_0072.onf 99 | ./data/zp_data/train/nw/xinhua/00/chtb_0094.onf 100 | ./data/zp_data/train/nw/xinhua/00/chtb_0035.onf 101 | ./data/zp_data/train/nw/xinhua/00/chtb_0074.onf 102 | ./data/zp_data/train/nw/xinhua/00/chtb_0016.onf 103 | ./data/zp_data/train/nw/xinhua/00/chtb_0033.onf 104 | ./data/zp_data/train/nw/xinhua/00/chtb_0026.onf 105 | ./data/zp_data/train/nw/xinhua/00/chtb_0048.onf 106 | ./data/zp_data/train/nw/xinhua/00/chtb_0034.onf 107 | ./data/zp_data/train/nw/xinhua/00/chtb_0017.onf 108 | ./data/zp_data/train/nw/xinhua/00/chtb_0053.onf 109 | ./data/zp_data/train/nw/xinhua/00/chtb_0087.onf 110 | ./data/zp_data/train/nw/xinhua/00/chtb_0071.onf 111 | ./data/zp_data/train/nw/xinhua/00/chtb_0098.onf 112 | ./data/zp_data/train/nw/xinhua/00/chtb_0011.onf 113 | ./data/zp_data/train/nw/xinhua/00/chtb_0047.onf 114 | ./data/zp_data/train/nw/xinhua/00/chtb_0073.onf 115 | ./data/zp_data/train/nw/xinhua/00/chtb_0028.onf 116 | ./data/zp_data/train/nw/xinhua/00/chtb_0022.onf 117 | ./data/zp_data/train/nw/xinhua/00/chtb_0063.onf 118 | ./data/zp_data/train/nw/xinhua/00/chtb_0007.onf 119 | ./data/zp_data/train/nw/xinhua/00/chtb_0067.onf 120 | ./data/zp_data/train/nw/xinhua/00/chtb_0083.onf 121 | ./data/zp_data/train/nw/xinhua/00/chtb_0031.onf 122 | ./data/zp_data/train/nw/xinhua/00/chtb_0065.onf 123 | ./data/zp_data/train/nw/xinhua/00/chtb_0015.onf 124 | ./data/zp_data/train/nw/xinhua/00/chtb_0086.onf 125 | ./data/zp_data/train/nw/xinhua/00/chtb_0076.onf 126 | ./data/zp_data/train/nw/xinhua/00/chtb_0055.onf 127 | ./data/zp_data/train/nw/xinhua/00/chtb_0058.onf 128 | ./data/zp_data/train/nw/xinhua/00/chtb_0018.onf 129 | ./data/zp_data/train/nw/xinhua/00/chtb_0057.onf 130 | ./data/zp_data/train/nw/xinhua/00/chtb_0012.onf 131 | ./data/zp_data/train/nw/xinhua/00/chtb_0095.onf 132 | ./data/zp_data/train/nw/xinhua/00/chtb_0024.onf 133 | ./data/zp_data/train/nw/xinhua/00/chtb_0045.onf 134 | ./data/zp_data/train/nw/xinhua/00/chtb_0005.onf 135 | ./data/zp_data/train/nw/xinhua/00/chtb_0021.onf 136 | ./data/zp_data/train/nw/xinhua/00/chtb_0001.onf 137 | ./data/zp_data/train/nw/xinhua/00/chtb_0043.onf 138 | ./data/zp_data/train/nw/xinhua/00/chtb_0037.onf 139 | ./data/zp_data/train/nw/xinhua/00/chtb_0025.onf 140 | ./data/zp_data/train/nw/xinhua/00/chtb_0088.onf 141 | ./data/zp_data/train/nw/xinhua/00/chtb_0082.onf 142 | ./data/zp_data/train/nw/xinhua/00/chtb_0085.onf 143 | ./data/zp_data/train/nw/xinhua/00/chtb_0075.onf 144 | ./data/zp_data/train/nw/xinhua/00/chtb_0066.onf 145 | ./data/zp_data/train/nw/xinhua/00/chtb_0081.onf 146 | ./data/zp_data/train/nw/xinhua/00/chtb_0003.onf 147 | ./data/zp_data/train/nw/xinhua/00/chtb_0038.onf 148 | ./data/zp_data/train/nw/xinhua/00/chtb_0004.onf 149 | ./data/zp_data/train/nw/xinhua/00/chtb_0096.onf 150 | ./data/zp_data/train/nw/xinhua/00/chtb_0013.onf 151 | ./data/zp_data/train/nw/xinhua/00/chtb_0052.onf 152 | ./data/zp_data/train/nw/xinhua/00/chtb_0091.onf 153 | ./data/zp_data/train/nw/xinhua/00/chtb_0014.onf 154 | ./data/zp_data/train/nw/xinhua/00/chtb_0077.onf 155 | ./data/zp_data/train/nw/xinhua/00/chtb_0042.onf 156 | ./data/zp_data/train/nw/xinhua/00/chtb_0097.onf 157 | ./data/zp_data/train/nw/xinhua/00/chtb_0023.onf 158 | ./data/zp_data/train/nw/xinhua/00/chtb_0041.onf 159 | ./data/zp_data/train/nw/xinhua/00/chtb_0092.onf 160 | ./data/zp_data/train/nw/xinhua/00/chtb_0006.onf 161 | ./data/zp_data/train/nw/xinhua/01/chtb_0137.onf 162 | ./data/zp_data/train/nw/xinhua/01/chtb_0126.onf 163 | ./data/zp_data/train/nw/xinhua/01/chtb_0141.onf 164 | ./data/zp_data/train/nw/xinhua/01/chtb_0175.onf 165 | ./data/zp_data/train/nw/xinhua/01/chtb_0152.onf 166 | ./data/zp_data/train/nw/xinhua/01/chtb_0135.onf 167 | ./data/zp_data/train/nw/xinhua/01/chtb_0102.onf 168 | ./data/zp_data/train/nw/xinhua/01/chtb_0198.onf 169 | ./data/zp_data/train/nw/xinhua/01/chtb_0178.onf 170 | ./data/zp_data/train/nw/xinhua/01/chtb_0163.onf 171 | ./data/zp_data/train/nw/xinhua/01/chtb_0192.onf 172 | ./data/zp_data/train/nw/xinhua/01/chtb_0151.onf 173 | ./data/zp_data/train/nw/xinhua/01/chtb_0133.onf 174 | ./data/zp_data/train/nw/xinhua/01/chtb_0153.onf 175 | ./data/zp_data/train/nw/xinhua/01/chtb_0144.onf 176 | ./data/zp_data/train/nw/xinhua/01/chtb_0104.onf 177 | ./data/zp_data/train/nw/xinhua/01/chtb_0191.onf 178 | ./data/zp_data/train/nw/xinhua/01/chtb_0157.onf 179 | ./data/zp_data/train/nw/xinhua/01/chtb_0142.onf 180 | ./data/zp_data/train/nw/xinhua/01/chtb_0161.onf 181 | ./data/zp_data/train/nw/xinhua/01/chtb_0164.onf 182 | ./data/zp_data/train/nw/xinhua/01/chtb_0171.onf 183 | ./data/zp_data/train/nw/xinhua/01/chtb_0122.onf 184 | ./data/zp_data/train/nw/xinhua/01/chtb_0184.onf 185 | ./data/zp_data/train/nw/xinhua/01/chtb_0187.onf 186 | ./data/zp_data/train/nw/xinhua/01/chtb_0134.onf 187 | ./data/zp_data/train/nw/xinhua/01/chtb_0112.onf 188 | ./data/zp_data/train/nw/xinhua/01/chtb_0114.onf 189 | ./data/zp_data/train/nw/xinhua/01/chtb_0156.onf 190 | ./data/zp_data/train/nw/xinhua/01/chtb_0193.onf 191 | ./data/zp_data/train/nw/xinhua/01/chtb_0155.onf 192 | ./data/zp_data/train/nw/xinhua/01/chtb_0176.onf 193 | ./data/zp_data/train/nw/xinhua/01/chtb_0162.onf 194 | ./data/zp_data/train/nw/xinhua/01/chtb_0115.onf 195 | ./data/zp_data/train/nw/xinhua/01/chtb_0154.onf 196 | ./data/zp_data/train/nw/xinhua/01/chtb_0145.onf 197 | ./data/zp_data/train/nw/xinhua/01/chtb_0196.onf 198 | ./data/zp_data/train/nw/xinhua/01/chtb_0101.onf 199 | ./data/zp_data/train/nw/xinhua/01/chtb_0168.onf 200 | ./data/zp_data/train/nw/xinhua/01/chtb_0118.onf 201 | ./data/zp_data/train/nw/xinhua/01/chtb_0182.onf 202 | ./data/zp_data/train/nw/xinhua/01/chtb_0127.onf 203 | ./data/zp_data/train/nw/xinhua/01/chtb_0138.onf 204 | ./data/zp_data/train/nw/xinhua/01/chtb_0123.onf 205 | ./data/zp_data/train/nw/xinhua/01/chtb_0174.onf 206 | ./data/zp_data/train/nw/xinhua/01/chtb_0194.onf 207 | ./data/zp_data/train/nw/xinhua/01/chtb_0147.onf 208 | ./data/zp_data/train/nw/xinhua/01/chtb_0172.onf 209 | ./data/zp_data/train/nw/xinhua/01/chtb_0181.onf 210 | ./data/zp_data/train/nw/xinhua/01/chtb_0121.onf 211 | ./data/zp_data/train/nw/xinhua/01/chtb_0106.onf 212 | ./data/zp_data/train/nw/xinhua/01/chtb_0167.onf 213 | ./data/zp_data/train/nw/xinhua/01/chtb_0107.onf 214 | ./data/zp_data/train/nw/xinhua/01/chtb_0103.onf 215 | ./data/zp_data/train/nw/xinhua/01/chtb_0132.onf 216 | ./data/zp_data/train/nw/xinhua/01/chtb_0111.onf 217 | ./data/zp_data/train/nw/xinhua/01/chtb_0165.onf 218 | ./data/zp_data/train/nw/xinhua/01/chtb_0195.onf 219 | ./data/zp_data/train/nw/xinhua/01/chtb_0128.onf 220 | ./data/zp_data/train/nw/xinhua/01/chtb_0108.onf 221 | ./data/zp_data/train/nw/xinhua/01/chtb_0146.onf 222 | ./data/zp_data/train/nw/xinhua/01/chtb_0143.onf 223 | ./data/zp_data/train/nw/xinhua/01/chtb_0125.onf 224 | ./data/zp_data/train/nw/xinhua/01/chtb_0188.onf 225 | ./data/zp_data/train/nw/xinhua/01/chtb_0131.onf 226 | ./data/zp_data/train/nw/xinhua/01/chtb_0183.onf 227 | ./data/zp_data/train/nw/xinhua/01/chtb_0148.onf 228 | ./data/zp_data/train/nw/xinhua/01/chtb_0185.onf 229 | ./data/zp_data/train/nw/xinhua/01/chtb_0173.onf 230 | ./data/zp_data/train/nw/xinhua/01/chtb_0113.onf 231 | ./data/zp_data/train/nw/xinhua/01/chtb_0116.onf 232 | ./data/zp_data/train/nw/xinhua/01/chtb_0117.onf 233 | ./data/zp_data/train/nw/xinhua/01/chtb_0186.onf 234 | ./data/zp_data/train/nw/xinhua/01/chtb_0177.onf 235 | ./data/zp_data/train/nw/xinhua/01/chtb_0158.onf 236 | ./data/zp_data/train/nw/xinhua/01/chtb_0105.onf 237 | ./data/zp_data/train/nw/xinhua/01/chtb_0197.onf 238 | ./data/zp_data/train/nw/xinhua/01/chtb_0136.onf 239 | ./data/zp_data/train/nw/xinhua/01/chtb_0166.onf 240 | ./data/zp_data/train/nw/xinhua/01/chtb_0124.onf 241 | ./data/zp_data/train/nw/xinhua/03/chtb_0311.onf 242 | ./data/zp_data/train/nw/xinhua/03/chtb_0323.onf 243 | ./data/zp_data/train/nw/xinhua/03/chtb_0304.onf 244 | ./data/zp_data/train/nw/xinhua/03/chtb_0312.onf 245 | ./data/zp_data/train/nw/xinhua/03/chtb_0317.onf 246 | ./data/zp_data/train/nw/xinhua/03/chtb_0313.onf 247 | ./data/zp_data/train/nw/xinhua/03/chtb_0318.onf 248 | ./data/zp_data/train/nw/xinhua/03/chtb_0314.onf 249 | ./data/zp_data/train/nw/xinhua/03/chtb_0321.onf 250 | ./data/zp_data/train/nw/xinhua/03/chtb_0306.onf 251 | ./data/zp_data/train/nw/xinhua/03/chtb_0302.onf 252 | ./data/zp_data/train/nw/xinhua/03/chtb_0303.onf 253 | ./data/zp_data/train/nw/xinhua/03/chtb_0316.onf 254 | ./data/zp_data/train/nw/xinhua/03/chtb_0325.onf 255 | ./data/zp_data/train/nw/xinhua/03/chtb_0307.onf 256 | ./data/zp_data/train/nw/xinhua/03/chtb_0315.onf 257 | ./data/zp_data/train/nw/xinhua/03/chtb_0322.onf 258 | ./data/zp_data/train/nw/xinhua/03/chtb_0305.onf 259 | ./data/zp_data/train/nw/xinhua/03/chtb_0301.onf 260 | ./data/zp_data/train/nw/xinhua/03/chtb_0308.onf 261 | ./data/zp_data/train/nw/xinhua/03/chtb_0324.onf 262 | ./data/zp_data/train/mz/sinorama/10/chtb_1072.onf 263 | ./data/zp_data/train/mz/sinorama/10/chtb_1077.onf 264 | ./data/zp_data/train/mz/sinorama/10/chtb_1016.onf 265 | ./data/zp_data/train/mz/sinorama/10/chtb_1038.onf 266 | ./data/zp_data/train/mz/sinorama/10/chtb_1036.onf 267 | ./data/zp_data/train/mz/sinorama/10/chtb_1068.onf 268 | ./data/zp_data/train/mz/sinorama/10/chtb_1074.onf 269 | ./data/zp_data/train/mz/sinorama/10/chtb_1057.onf 270 | ./data/zp_data/train/mz/sinorama/10/chtb_1045.onf 271 | ./data/zp_data/train/mz/sinorama/10/chtb_1003.onf 272 | ./data/zp_data/train/mz/sinorama/10/chtb_1018.onf 273 | ./data/zp_data/train/mz/sinorama/10/chtb_1027.onf 274 | ./data/zp_data/train/mz/sinorama/10/chtb_1017.onf 275 | ./data/zp_data/train/mz/sinorama/10/chtb_1002.onf 276 | ./data/zp_data/train/mz/sinorama/10/chtb_1024.onf 277 | ./data/zp_data/train/mz/sinorama/10/chtb_1035.onf 278 | ./data/zp_data/train/mz/sinorama/10/chtb_1033.onf 279 | ./data/zp_data/train/mz/sinorama/10/chtb_1015.onf 280 | ./data/zp_data/train/mz/sinorama/10/chtb_1011.onf 281 | ./data/zp_data/train/mz/sinorama/10/chtb_1006.onf 282 | ./data/zp_data/train/mz/sinorama/10/chtb_1022.onf 283 | ./data/zp_data/train/mz/sinorama/10/chtb_1056.onf 284 | ./data/zp_data/train/mz/sinorama/10/chtb_1052.onf 285 | ./data/zp_data/train/mz/sinorama/10/chtb_1043.onf 286 | ./data/zp_data/train/mz/sinorama/10/chtb_1062.onf 287 | ./data/zp_data/train/mz/sinorama/10/chtb_1013.onf 288 | ./data/zp_data/train/mz/sinorama/10/chtb_1031.onf 289 | ./data/zp_data/train/mz/sinorama/10/chtb_1054.onf 290 | ./data/zp_data/train/mz/sinorama/10/chtb_1021.onf 291 | ./data/zp_data/train/mz/sinorama/10/chtb_1067.onf 292 | ./data/zp_data/train/mz/sinorama/10/chtb_1032.onf 293 | ./data/zp_data/train/mz/sinorama/10/chtb_1025.onf 294 | ./data/zp_data/train/mz/sinorama/10/chtb_1012.onf 295 | ./data/zp_data/train/mz/sinorama/10/chtb_1034.onf 296 | ./data/zp_data/train/mz/sinorama/10/chtb_1037.onf 297 | ./data/zp_data/train/mz/sinorama/10/chtb_1061.onf 298 | ./data/zp_data/train/mz/sinorama/10/chtb_1001.onf 299 | ./data/zp_data/train/mz/sinorama/10/chtb_1046.onf 300 | ./data/zp_data/train/mz/sinorama/10/chtb_1051.onf 301 | ./data/zp_data/train/mz/sinorama/10/chtb_1078.onf 302 | ./data/zp_data/train/mz/sinorama/10/chtb_1058.onf 303 | ./data/zp_data/train/mz/sinorama/10/chtb_1028.onf 304 | ./data/zp_data/train/mz/sinorama/10/chtb_1063.onf 305 | ./data/zp_data/train/mz/sinorama/10/chtb_1042.onf 306 | ./data/zp_data/train/mz/sinorama/10/chtb_1055.onf 307 | ./data/zp_data/train/mz/sinorama/10/chtb_1047.onf 308 | ./data/zp_data/train/mz/sinorama/10/chtb_1023.onf 309 | ./data/zp_data/train/mz/sinorama/10/chtb_1041.onf 310 | ./data/zp_data/train/mz/sinorama/10/chtb_1026.onf 311 | ./data/zp_data/train/mz/sinorama/10/chtb_1008.onf 312 | ./data/zp_data/train/mz/sinorama/10/chtb_1064.onf 313 | ./data/zp_data/train/mz/sinorama/10/chtb_1073.onf 314 | ./data/zp_data/train/mz/sinorama/10/chtb_1053.onf 315 | ./data/zp_data/train/mz/sinorama/10/chtb_1007.onf 316 | ./data/zp_data/train/mz/sinorama/10/chtb_1048.onf 317 | ./data/zp_data/train/mz/sinorama/10/chtb_1044.onf 318 | ./data/zp_data/train/mz/sinorama/10/chtb_1014.onf 319 | ./data/zp_data/train/mz/sinorama/10/chtb_1076.onf 320 | ./data/zp_data/train/mz/sinorama/10/chtb_1004.onf 321 | ./data/zp_data/train/mz/sinorama/10/chtb_1065.onf 322 | ./data/zp_data/train/mz/sinorama/10/chtb_1075.onf 323 | ./data/zp_data/train/mz/sinorama/10/chtb_1005.onf 324 | ./data/zp_data/train/mz/sinorama/10/chtb_1071.onf 325 | ./data/zp_data/train/mz/sinorama/10/chtb_1066.onf 326 | ./data/zp_data/train/wb/cmn/00/cmn_0001.onf 327 | ./data/zp_data/train/wb/cmn/00/cmn_0032.onf 328 | ./data/zp_data/train/wb/cmn/00/cmn_0027.onf 329 | ./data/zp_data/train/wb/cmn/00/cmn_0034.onf 330 | ./data/zp_data/train/wb/cmn/00/cmn_0057.onf 331 | ./data/zp_data/train/wb/cmn/00/cmn_0045.onf 332 | ./data/zp_data/train/wb/cmn/00/cmn_0044.onf 333 | ./data/zp_data/train/wb/cmn/00/cmn_0031.onf 334 | ./data/zp_data/train/wb/cmn/00/cmn_0003.onf 335 | ./data/zp_data/train/wb/cmn/00/cmn_0055.onf 336 | ./data/zp_data/train/wb/cmn/00/cmn_0061.onf 337 | ./data/zp_data/train/wb/cmn/00/cmn_0043.onf 338 | ./data/zp_data/train/wb/cmn/00/cmn_0011.onf 339 | ./data/zp_data/train/wb/cmn/00/cmn_0014.onf 340 | ./data/zp_data/train/wb/cmn/00/cmn_0062.onf 341 | ./data/zp_data/train/wb/cmn/00/cmn_0048.onf 342 | ./data/zp_data/train/wb/cmn/00/cmn_0002.onf 343 | ./data/zp_data/train/wb/cmn/00/cmn_0065.onf 344 | ./data/zp_data/train/wb/cmn/00/cmn_0006.onf 345 | ./data/zp_data/train/wb/cmn/00/cmn_0007.onf 346 | ./data/zp_data/train/wb/cmn/00/cmn_0005.onf 347 | ./data/zp_data/train/wb/cmn/00/cmn_0041.onf 348 | ./data/zp_data/train/wb/cmn/00/cmn_0056.onf 349 | ./data/zp_data/train/wb/cmn/00/cmn_0015.onf 350 | ./data/zp_data/train/wb/cmn/00/cmn_0028.onf 351 | ./data/zp_data/train/wb/cmn/00/cmn_0035.onf 352 | ./data/zp_data/train/wb/cmn/00/cmn_0054.onf 353 | ./data/zp_data/train/wb/cmn/00/cmn_0036.onf 354 | ./data/zp_data/train/wb/cmn/00/cmn_0042.onf 355 | ./data/zp_data/train/wb/cmn/00/cmn_0022.onf 356 | ./data/zp_data/train/wb/cmn/00/cmn_0047.onf 357 | ./data/zp_data/train/wb/cmn/00/cmn_0018.onf 358 | ./data/zp_data/train/wb/cmn/00/cmn_0025.onf 359 | ./data/zp_data/train/wb/cmn/00/cmn_0052.onf 360 | ./data/zp_data/train/wb/cmn/00/cmn_0037.onf 361 | ./data/zp_data/train/wb/cmn/00/cmn_0012.onf 362 | ./data/zp_data/train/wb/cmn/00/cmn_0016.onf 363 | ./data/zp_data/train/wb/cmn/00/cmn_0021.onf 364 | ./data/zp_data/train/wb/cmn/00/cmn_0033.onf 365 | ./data/zp_data/train/wb/cmn/00/cmn_0038.onf 366 | ./data/zp_data/train/wb/cmn/00/cmn_0063.onf 367 | ./data/zp_data/train/wb/cmn/00/cmn_0051.onf 368 | ./data/zp_data/train/wb/cmn/00/cmn_0064.onf 369 | ./data/zp_data/train/wb/cmn/00/cmn_0046.onf 370 | ./data/zp_data/train/wb/cmn/00/cmn_0008.onf 371 | ./data/zp_data/train/wb/e2c/00/e2c_0001.onf 372 | ./data/zp_data/train/wb/e2c/00/e2c_0006.onf 373 | ./data/zp_data/train/wb/e2c/00/e2c_0004.onf 374 | ./data/zp_data/train/wb/e2c/00/e2c_0012.onf 375 | ./data/zp_data/train/wb/e2c/00/e2c_0002.onf 376 | ./data/zp_data/train/wb/e2c/00/e2c_0007.onf 377 | ./data/zp_data/train/wb/e2c/00/e2c_0013.onf 378 | ./data/zp_data/train/wb/e2c/00/e2c_0005.onf 379 | ./data/zp_data/train/wb/e2c/00/e2c_0003.onf 380 | ./data/zp_data/train/wb/e2c/00/e2c_0011.onf 381 | ./data/zp_data/train/wb/e2c/00/e2c_0016.onf 382 | ./data/zp_data/train/wb/e2c/00/e2c_0015.onf 383 | ./data/zp_data/train/wb/e2c/00/e2c_0014.onf 384 | ./data/zp_data/train/wb/e2c/00/e2c_0017.onf 385 | ./data/zp_data/train/wb/e2c/00/e2c_0008.onf 386 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0032.onf 387 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0044.onf 388 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0036.onf 389 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0023.onf 390 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0004.onf 391 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0062.onf 392 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0001.onf 393 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0033.onf 394 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0034.onf 395 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0057.onf 396 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0046.onf 397 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0063.onf 398 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0027.onf 399 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0058.onf 400 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0056.onf 401 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0031.onf 402 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0041.onf 403 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0002.onf 404 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0052.onf 405 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0051.onf 406 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0005.onf 407 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0055.onf 408 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0025.onf 409 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0047.onf 410 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0037.onf 411 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0042.onf 412 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0053.onf 413 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0064.onf 414 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0066.onf 415 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0045.onf 416 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0035.onf 417 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0054.onf 418 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0048.onf 419 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0043.onf 420 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0003.onf 421 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0024.onf 422 | ./data/zp_data/train/wb/dev_09_cmn/00/dev_09_cmn_0038.onf 423 | ./data/zp_data/train/bc/cnn/00/cnn_0003.onf 424 | ./data/zp_data/train/bc/cnn/00/cnn_0002.onf 425 | ./data/zp_data/train/bc/cnn/00/cnn_0001.onf 426 | ./data/zp_data/train/bc/phoenix/00/phoenix_0007.onf 427 | ./data/zp_data/train/bc/phoenix/00/phoenix_0008.onf 428 | ./data/zp_data/train/bc/phoenix/00/phoenix_0004.onf 429 | ./data/zp_data/train/bc/phoenix/00/phoenix_0001.onf 430 | ./data/zp_data/train/bc/phoenix/00/phoenix_0005.onf 431 | ./data/zp_data/train/bc/phoenix/00/phoenix_0003.onf 432 | ./data/zp_data/train/bc/phoenix/00/phoenix_0006.onf 433 | ./data/zp_data/train/bc/phoenix/00/phoenix_0002.onf 434 | ./data/zp_data/train/bc/phoenix/00/phoenix_0011.onf 435 | ./data/zp_data/train/bc/cctv/00/cctv_0003.onf 436 | ./data/zp_data/train/bc/cctv/00/cctv_0001.onf 437 | ./data/zp_data/train/bc/cctv/00/cctv_0006.onf 438 | ./data/zp_data/train/bc/cctv/00/cctv_0005.onf 439 | ./data/zp_data/train/bc/cctv/00/cctv_0004.onf 440 | ./data/zp_data/train/bc/cctv/00/cctv_0002.onf 441 | ./data/zp_data/train/bn/cts/02/cts_0215.onf 442 | ./data/zp_data/train/bn/cts/02/cts_0294.onf 443 | ./data/zp_data/train/bn/cts/02/cts_0222.onf 444 | ./data/zp_data/train/bn/cts/02/cts_0295.onf 445 | ./data/zp_data/train/bn/cts/02/cts_0292.onf 446 | ./data/zp_data/train/bn/cts/02/cts_0211.onf 447 | ./data/zp_data/train/bn/cts/02/cts_0245.onf 448 | ./data/zp_data/train/bn/cts/02/cts_0278.onf 449 | ./data/zp_data/train/bn/cts/02/cts_0283.onf 450 | ./data/zp_data/train/bn/cts/02/cts_0201.onf 451 | ./data/zp_data/train/bn/cts/02/cts_0248.onf 452 | ./data/zp_data/train/bn/cts/02/cts_0225.onf 453 | ./data/zp_data/train/bn/cts/02/cts_0266.onf 454 | ./data/zp_data/train/bn/cts/02/cts_0221.onf 455 | ./data/zp_data/train/bn/cts/02/cts_0228.onf 456 | ./data/zp_data/train/bn/cts/02/cts_0276.onf 457 | ./data/zp_data/train/bn/cts/02/cts_0214.onf 458 | ./data/zp_data/train/bn/cts/02/cts_0277.onf 459 | ./data/zp_data/train/bn/cts/02/cts_0267.onf 460 | ./data/zp_data/train/bn/cts/02/cts_0242.onf 461 | ./data/zp_data/train/bn/cts/02/cts_0226.onf 462 | ./data/zp_data/train/bn/cts/02/cts_0227.onf 463 | ./data/zp_data/train/bn/cts/02/cts_0202.onf 464 | ./data/zp_data/train/bn/cts/02/cts_0243.onf 465 | ./data/zp_data/train/bn/cts/02/cts_0282.onf 466 | ./data/zp_data/train/bn/cts/02/cts_0272.onf 467 | ./data/zp_data/train/bn/cts/02/cts_0281.onf 468 | ./data/zp_data/train/bn/cts/02/cts_0288.onf 469 | ./data/zp_data/train/bn/cts/02/cts_0287.onf 470 | ./data/zp_data/train/bn/cts/02/cts_0268.onf 471 | ./data/zp_data/train/bn/cts/02/cts_0256.onf 472 | ./data/zp_data/train/bn/cts/02/cts_0241.onf 473 | ./data/zp_data/train/bn/cts/02/cts_0297.onf 474 | ./data/zp_data/train/bn/cts/02/cts_0246.onf 475 | ./data/zp_data/train/bn/cts/02/cts_0262.onf 476 | ./data/zp_data/train/bn/cts/02/cts_0212.onf 477 | ./data/zp_data/train/bn/cts/02/cts_0208.onf 478 | ./data/zp_data/train/bn/cts/02/cts_0254.onf 479 | ./data/zp_data/train/bn/cts/02/cts_0275.onf 480 | ./data/zp_data/train/bn/cts/02/cts_0274.onf 481 | ./data/zp_data/train/bn/cts/02/cts_0263.onf 482 | ./data/zp_data/train/bn/cts/02/cts_0231.onf 483 | ./data/zp_data/train/bn/cts/02/cts_0296.onf 484 | ./data/zp_data/train/bn/cts/02/cts_0213.onf 485 | ./data/zp_data/train/bn/cts/02/cts_0235.onf 486 | ./data/zp_data/train/bn/cts/02/cts_0261.onf 487 | ./data/zp_data/train/bn/cts/02/cts_0232.onf 488 | ./data/zp_data/train/bn/cts/02/cts_0264.onf 489 | ./data/zp_data/train/bn/cts/02/cts_0255.onf 490 | ./data/zp_data/train/bn/cts/02/cts_0252.onf 491 | ./data/zp_data/train/bn/cts/02/cts_0218.onf 492 | ./data/zp_data/train/bn/cts/02/cts_0244.onf 493 | ./data/zp_data/train/bn/cts/02/cts_0258.onf 494 | ./data/zp_data/train/bn/cts/02/cts_0205.onf 495 | ./data/zp_data/train/bn/cts/02/cts_0206.onf 496 | ./data/zp_data/train/bn/cts/02/cts_0284.onf 497 | ./data/zp_data/train/bn/cts/02/cts_0223.onf 498 | ./data/zp_data/train/bn/cts/02/cts_0234.onf 499 | ./data/zp_data/train/bn/cts/02/cts_0285.onf 500 | ./data/zp_data/train/bn/cts/02/cts_0273.onf 501 | ./data/zp_data/train/bn/cts/02/cts_0247.onf 502 | ./data/zp_data/train/bn/cts/02/cts_0251.onf 503 | ./data/zp_data/train/bn/cts/02/cts_0233.onf 504 | ./data/zp_data/train/bn/cts/02/cts_0291.onf 505 | ./data/zp_data/train/bn/cts/02/cts_0271.onf 506 | ./data/zp_data/train/bn/cts/02/cts_0293.onf 507 | ./data/zp_data/train/bn/cts/02/cts_0238.onf 508 | ./data/zp_data/train/bn/cts/02/cts_0224.onf 509 | ./data/zp_data/train/bn/cts/02/cts_0217.onf 510 | ./data/zp_data/train/bn/cts/02/cts_0257.onf 511 | ./data/zp_data/train/bn/cts/02/cts_0203.onf 512 | ./data/zp_data/train/bn/cts/02/cts_0207.onf 513 | ./data/zp_data/train/bn/cts/02/cts_0236.onf 514 | ./data/zp_data/train/bn/cts/02/cts_0204.onf 515 | ./data/zp_data/train/bn/cts/02/cts_0286.onf 516 | ./data/zp_data/train/bn/cts/02/cts_0298.onf 517 | ./data/zp_data/train/bn/cts/02/cts_0216.onf 518 | ./data/zp_data/train/bn/cts/02/cts_0265.onf 519 | ./data/zp_data/train/bn/cts/02/cts_0237.onf 520 | ./data/zp_data/train/bn/cts/02/cts_0253.onf 521 | ./data/zp_data/train/bn/cts/00/cts_0085.onf 522 | ./data/zp_data/train/bn/cts/00/cts_0082.onf 523 | ./data/zp_data/train/bn/cts/00/cts_0032.onf 524 | ./data/zp_data/train/bn/cts/00/cts_0021.onf 525 | ./data/zp_data/train/bn/cts/00/cts_0092.onf 526 | ./data/zp_data/train/bn/cts/00/cts_0072.onf 527 | ./data/zp_data/train/bn/cts/00/cts_0035.onf 528 | ./data/zp_data/train/bn/cts/00/cts_0043.onf 529 | ./data/zp_data/train/bn/cts/00/cts_0037.onf 530 | ./data/zp_data/train/bn/cts/00/cts_0053.onf 531 | ./data/zp_data/train/bn/cts/00/cts_0083.onf 532 | ./data/zp_data/train/bn/cts/00/cts_0095.onf 533 | ./data/zp_data/train/bn/cts/00/cts_0066.onf 534 | ./data/zp_data/train/bn/cts/00/cts_0042.onf 535 | ./data/zp_data/train/bn/cts/00/cts_0036.onf 536 | ./data/zp_data/train/bn/cts/00/cts_0041.onf 537 | ./data/zp_data/train/bn/cts/00/cts_0011.onf 538 | ./data/zp_data/train/bn/cts/00/cts_0038.onf 539 | ./data/zp_data/train/bn/cts/00/cts_0051.onf 540 | ./data/zp_data/train/bn/cts/00/cts_0086.onf 541 | ./data/zp_data/train/bn/cts/00/cts_0061.onf 542 | ./data/zp_data/train/bn/cts/00/cts_0084.onf 543 | ./data/zp_data/train/bn/cts/00/cts_0077.onf 544 | ./data/zp_data/train/bn/cts/00/cts_0045.onf 545 | ./data/zp_data/train/bn/cts/00/cts_0094.onf 546 | ./data/zp_data/train/bn/cts/00/cts_0097.onf 547 | ./data/zp_data/train/bn/cts/00/cts_0031.onf 548 | ./data/zp_data/train/bn/cts/00/cts_0033.onf 549 | ./data/zp_data/train/bn/cts/00/cts_0091.onf 550 | ./data/zp_data/train/bn/cts/00/cts_0073.onf 551 | ./data/zp_data/train/bn/cts/00/cts_0025.onf 552 | ./data/zp_data/train/bn/cts/00/cts_0093.onf 553 | ./data/zp_data/train/bn/cts/00/cts_0018.onf 554 | ./data/zp_data/train/bn/cts/00/cts_0081.onf 555 | ./data/zp_data/train/bn/cts/00/cts_0013.onf 556 | ./data/zp_data/train/bn/cts/00/cts_0034.onf 557 | ./data/zp_data/train/bn/cts/00/cts_0027.onf 558 | ./data/zp_data/train/bn/cts/00/cts_0064.onf 559 | ./data/zp_data/train/bn/cts/00/cts_0047.onf 560 | ./data/zp_data/train/bn/cts/00/cts_0015.onf 561 | ./data/zp_data/train/bn/cts/00/cts_0067.onf 562 | ./data/zp_data/train/bn/cts/00/cts_0062.onf 563 | ./data/zp_data/train/bn/cts/00/cts_0016.onf 564 | ./data/zp_data/train/bn/cts/00/cts_0058.onf 565 | ./data/zp_data/train/bn/cts/00/cts_0046.onf 566 | ./data/zp_data/train/bn/cts/00/cts_0054.onf 567 | ./data/zp_data/train/bn/cts/00/cts_0014.onf 568 | ./data/zp_data/train/bn/cts/00/cts_0024.onf 569 | ./data/zp_data/train/bn/cts/00/cts_0026.onf 570 | ./data/zp_data/train/bn/cts/00/cts_0023.onf 571 | ./data/zp_data/train/bn/cts/00/cts_0055.onf 572 | ./data/zp_data/train/bn/cts/00/cts_0098.onf 573 | ./data/zp_data/train/bn/cts/00/cts_0052.onf 574 | ./data/zp_data/train/bn/cts/00/cts_0087.onf 575 | ./data/zp_data/train/bn/cts/00/cts_0068.onf 576 | ./data/zp_data/train/bn/cts/00/cts_0096.onf 577 | ./data/zp_data/train/bn/cts/00/cts_0012.onf 578 | ./data/zp_data/train/bn/cts/00/cts_0048.onf 579 | ./data/zp_data/train/bn/cts/00/cts_0075.onf 580 | ./data/zp_data/train/bn/cts/00/cts_0071.onf 581 | ./data/zp_data/train/bn/cts/00/cts_0074.onf 582 | ./data/zp_data/train/bn/cts/00/cts_0078.onf 583 | ./data/zp_data/train/bn/cts/00/cts_0017.onf 584 | ./data/zp_data/train/bn/cts/00/cts_0065.onf 585 | ./data/zp_data/train/bn/cts/00/cts_0088.onf 586 | ./data/zp_data/train/bn/cts/00/cts_0056.onf 587 | ./data/zp_data/train/bn/cts/00/cts_0044.onf 588 | ./data/zp_data/train/bn/cts/00/cts_0063.onf 589 | ./data/zp_data/train/bn/cts/00/cts_0076.onf 590 | ./data/zp_data/train/bn/cts/00/cts_0022.onf 591 | ./data/zp_data/train/bn/cts/00/cts_0028.onf 592 | ./data/zp_data/train/bn/cts/00/cts_0057.onf 593 | ./data/zp_data/train/bn/cts/01/cts_0177.onf 594 | ./data/zp_data/train/bn/cts/01/cts_0146.onf 595 | ./data/zp_data/train/bn/cts/01/cts_0156.onf 596 | ./data/zp_data/train/bn/cts/01/cts_0106.onf 597 | ./data/zp_data/train/bn/cts/01/cts_0124.onf 598 | ./data/zp_data/train/bn/cts/01/cts_0163.onf 599 | ./data/zp_data/train/bn/cts/01/cts_0197.onf 600 | ./data/zp_data/train/bn/cts/01/cts_0193.onf 601 | ./data/zp_data/train/bn/cts/01/cts_0183.onf 602 | ./data/zp_data/train/bn/cts/01/cts_0145.onf 603 | ./data/zp_data/train/bn/cts/01/cts_0115.onf 604 | ./data/zp_data/train/bn/cts/01/cts_0108.onf 605 | ./data/zp_data/train/bn/cts/01/cts_0114.onf 606 | ./data/zp_data/train/bn/cts/01/cts_0121.onf 607 | ./data/zp_data/train/bn/cts/01/cts_0198.onf 608 | ./data/zp_data/train/bn/cts/01/cts_0127.onf 609 | ./data/zp_data/train/bn/cts/01/cts_0178.onf 610 | ./data/zp_data/train/bn/cts/01/cts_0126.onf 611 | ./data/zp_data/train/bn/cts/01/cts_0167.onf 612 | ./data/zp_data/train/bn/cts/01/cts_0168.onf 613 | ./data/zp_data/train/bn/cts/01/cts_0174.onf 614 | ./data/zp_data/train/bn/cts/01/cts_0133.onf 615 | ./data/zp_data/train/bn/cts/01/cts_0165.onf 616 | ./data/zp_data/train/bn/cts/01/cts_0164.onf 617 | ./data/zp_data/train/bn/cts/01/cts_0162.onf 618 | ./data/zp_data/train/bn/cts/01/cts_0116.onf 619 | ./data/zp_data/train/bn/cts/01/cts_0142.onf 620 | ./data/zp_data/train/bn/cts/01/cts_0175.onf 621 | ./data/zp_data/train/bn/cts/01/cts_0188.onf 622 | ./data/zp_data/train/bn/cts/01/cts_0136.onf 623 | ./data/zp_data/train/bn/cts/01/cts_0191.onf 624 | ./data/zp_data/train/bn/cts/01/cts_0143.onf 625 | ./data/zp_data/train/bn/cts/01/cts_0132.onf 626 | ./data/zp_data/train/bn/cts/01/cts_0148.onf 627 | ./data/zp_data/train/bn/cts/01/cts_0138.onf 628 | ./data/zp_data/train/bn/cts/01/cts_0101.onf 629 | ./data/zp_data/train/bn/cts/01/cts_0186.onf 630 | ./data/zp_data/train/bn/cts/01/cts_0184.onf 631 | ./data/zp_data/train/bn/cts/01/cts_0172.onf 632 | ./data/zp_data/train/bn/cts/01/cts_0112.onf 633 | ./data/zp_data/train/bn/cts/01/cts_0152.onf 634 | ./data/zp_data/train/bn/cts/01/cts_0105.onf 635 | ./data/zp_data/train/bn/cts/01/cts_0102.onf 636 | ./data/zp_data/train/bn/cts/01/cts_0155.onf 637 | ./data/zp_data/train/bn/cts/01/cts_0187.onf 638 | ./data/zp_data/train/bn/cts/01/cts_0151.onf 639 | ./data/zp_data/train/bn/cts/01/cts_0166.onf 640 | ./data/zp_data/train/bn/cts/01/cts_0181.onf 641 | ./data/zp_data/train/bn/cts/01/cts_0117.onf 642 | ./data/zp_data/train/bn/cts/01/cts_0176.onf 643 | ./data/zp_data/train/bn/cts/01/cts_0192.onf 644 | ./data/zp_data/train/bn/cts/01/cts_0125.onf 645 | ./data/zp_data/train/bn/cts/01/cts_0123.onf 646 | ./data/zp_data/train/bn/cts/01/cts_0131.onf 647 | ./data/zp_data/train/bn/cts/01/cts_0118.onf 648 | ./data/zp_data/train/bn/cts/01/cts_0104.onf 649 | ./data/zp_data/train/bn/cts/01/cts_0157.onf 650 | ./data/zp_data/train/bn/cts/01/cts_0122.onf 651 | ./data/zp_data/train/bn/cts/01/cts_0103.onf 652 | ./data/zp_data/train/bn/cts/01/cts_0173.onf 653 | ./data/zp_data/train/bn/cts/01/cts_0194.onf 654 | ./data/zp_data/train/bn/cts/01/cts_0185.onf 655 | ./data/zp_data/train/bn/cts/01/cts_0171.onf 656 | ./data/zp_data/train/bn/cts/01/cts_0161.onf 657 | ./data/zp_data/train/bn/cts/01/cts_0147.onf 658 | ./data/zp_data/train/bn/cts/01/cts_0141.onf 659 | ./data/zp_data/train/bn/cts/01/cts_0144.onf 660 | ./data/zp_data/train/bn/cts/01/cts_0154.onf 661 | ./data/zp_data/train/bn/cts/01/cts_0137.onf 662 | ./data/zp_data/train/bn/cts/01/cts_0153.onf 663 | ./data/zp_data/train/bn/cts/01/cts_0107.onf 664 | ./data/zp_data/train/bn/cts/01/cts_0134.onf 665 | ./data/zp_data/train/bn/cts/01/cts_0128.onf 666 | ./data/zp_data/train/bn/cts/01/cts_0113.onf 667 | ./data/zp_data/train/bn/cts/01/cts_0158.onf 668 | ./data/zp_data/train/bn/cts/01/cts_0135.onf 669 | ./data/zp_data/train/bn/cts/01/cts_0196.onf 670 | ./data/zp_data/train/bn/cts/01/cts_0182.onf 671 | ./data/zp_data/train/bn/cts/01/cts_0195.onf 672 | ./data/zp_data/train/bn/cts/01/cts_0111.onf 673 | ./data/zp_data/train/bn/cts/03/cts_0311.onf 674 | ./data/zp_data/train/bn/cts/03/cts_0301.onf 675 | ./data/zp_data/train/bn/cts/03/cts_0307.onf 676 | ./data/zp_data/train/bn/cts/03/cts_0306.onf 677 | ./data/zp_data/train/bn/cts/03/cts_0303.onf 678 | ./data/zp_data/train/bn/cts/03/cts_0312.onf 679 | ./data/zp_data/train/bn/cts/03/cts_0305.onf 680 | ./data/zp_data/train/bn/cts/03/cts_0302.onf 681 | ./data/zp_data/train/bn/cts/03/cts_0304.onf 682 | ./data/zp_data/train/bn/cts/03/cts_0308.onf 683 | ./data/zp_data/train/bn/cnr/00/cnr_0018.onf 684 | ./data/zp_data/train/bn/cnr/00/cnr_0063.onf 685 | ./data/zp_data/train/bn/cnr/00/cnr_0066.onf 686 | ./data/zp_data/train/bn/cnr/00/cnr_0095.onf 687 | ./data/zp_data/train/bn/cnr/00/cnr_0054.onf 688 | ./data/zp_data/train/bn/cnr/00/cnr_0042.onf 689 | ./data/zp_data/train/bn/cnr/00/cnr_0026.onf 690 | ./data/zp_data/train/bn/cnr/00/cnr_0098.onf 691 | ./data/zp_data/train/bn/cnr/00/cnr_0067.onf 692 | ./data/zp_data/train/bn/cnr/00/cnr_0076.onf 693 | ./data/zp_data/train/bn/cnr/00/cnr_0078.onf 694 | ./data/zp_data/train/bn/cnr/00/cnr_0083.onf 695 | ./data/zp_data/train/bn/cnr/00/cnr_0077.onf 696 | ./data/zp_data/train/bn/cnr/00/cnr_0001.onf 697 | ./data/zp_data/train/bn/cnr/00/cnr_0084.onf 698 | ./data/zp_data/train/bn/cnr/00/cnr_0072.onf 699 | ./data/zp_data/train/bn/cnr/00/cnr_0036.onf 700 | ./data/zp_data/train/bn/cnr/00/cnr_0037.onf 701 | ./data/zp_data/train/bn/cnr/00/cnr_0031.onf 702 | ./data/zp_data/train/bn/cnr/00/cnr_0041.onf 703 | ./data/zp_data/train/bn/cnr/00/cnr_0027.onf 704 | ./data/zp_data/train/bn/cnr/00/cnr_0091.onf 705 | ./data/zp_data/train/bn/cnr/00/cnr_0047.onf 706 | ./data/zp_data/train/bn/cnr/00/cnr_0035.onf 707 | ./data/zp_data/train/bn/cnr/00/cnr_0065.onf 708 | ./data/zp_data/train/bn/cnr/00/cnr_0053.onf 709 | ./data/zp_data/train/bn/cnr/00/cnr_0033.onf 710 | ./data/zp_data/train/bn/cnr/00/cnr_0082.onf 711 | ./data/zp_data/train/bn/cnr/00/cnr_0094.onf 712 | ./data/zp_data/train/bn/cnr/00/cnr_0096.onf 713 | ./data/zp_data/train/bn/cnr/00/cnr_0097.onf 714 | ./data/zp_data/train/bn/cnr/00/cnr_0085.onf 715 | ./data/zp_data/train/bn/cnr/00/cnr_0093.onf 716 | ./data/zp_data/train/bn/cnr/00/cnr_0088.onf 717 | ./data/zp_data/train/bn/cnr/00/cnr_0087.onf 718 | ./data/zp_data/train/bn/cnr/00/cnr_0023.onf 719 | ./data/zp_data/train/bn/cnr/00/cnr_0086.onf 720 | ./data/zp_data/train/bn/cnr/00/cnr_0051.onf 721 | ./data/zp_data/train/bn/cnr/00/cnr_0013.onf 722 | ./data/zp_data/train/bn/cnr/00/cnr_0032.onf 723 | ./data/zp_data/train/bn/cnr/00/cnr_0045.onf 724 | ./data/zp_data/train/bn/cnr/00/cnr_0004.onf 725 | ./data/zp_data/train/bn/cnr/00/cnr_0056.onf 726 | ./data/zp_data/train/bn/cnr/00/cnr_0057.onf 727 | ./data/zp_data/train/bn/cnr/00/cnr_0006.onf 728 | ./data/zp_data/train/bn/cnr/00/cnr_0068.onf 729 | ./data/zp_data/train/bn/cnr/00/cnr_0058.onf 730 | ./data/zp_data/train/bn/cnr/00/cnr_0061.onf 731 | ./data/zp_data/train/bn/cnr/00/cnr_0002.onf 732 | ./data/zp_data/train/bn/cnr/00/cnr_0028.onf 733 | ./data/zp_data/train/bn/cnr/00/cnr_0003.onf 734 | ./data/zp_data/train/bn/cnr/00/cnr_0075.onf 735 | ./data/zp_data/train/bn/cnr/00/cnr_0005.onf 736 | ./data/zp_data/train/bn/cnr/00/cnr_0016.onf 737 | ./data/zp_data/train/bn/cnr/00/cnr_0048.onf 738 | ./data/zp_data/train/bn/cnr/00/cnr_0008.onf 739 | ./data/zp_data/train/bn/cnr/00/cnr_0046.onf 740 | ./data/zp_data/train/bn/cnr/00/cnr_0025.onf 741 | ./data/zp_data/train/bn/cnr/00/cnr_0011.onf 742 | ./data/zp_data/train/bn/cnr/00/cnr_0044.onf 743 | ./data/zp_data/train/bn/cnr/00/cnr_0012.onf 744 | ./data/zp_data/train/bn/cnr/00/cnr_0073.onf 745 | ./data/zp_data/train/bn/cnr/00/cnr_0071.onf 746 | ./data/zp_data/train/bn/cnr/00/cnr_0034.onf 747 | ./data/zp_data/train/bn/cnr/00/cnr_0038.onf 748 | ./data/zp_data/train/bn/cnr/00/cnr_0074.onf 749 | ./data/zp_data/train/bn/cnr/00/cnr_0022.onf 750 | ./data/zp_data/train/bn/cnr/00/cnr_0015.onf 751 | ./data/zp_data/train/bn/cnr/00/cnr_0064.onf 752 | ./data/zp_data/train/bn/cnr/00/cnr_0055.onf 753 | ./data/zp_data/train/bn/cnr/00/cnr_0021.onf 754 | ./data/zp_data/train/bn/cnr/00/cnr_0007.onf 755 | ./data/zp_data/train/bn/cnr/00/cnr_0062.onf 756 | ./data/zp_data/train/bn/cnr/00/cnr_0052.onf 757 | ./data/zp_data/train/bn/cnr/00/cnr_0081.onf 758 | ./data/zp_data/train/bn/cnr/00/cnr_0092.onf 759 | ./data/zp_data/train/bn/cnr/00/cnr_0017.onf 760 | ./data/zp_data/train/bn/cnr/00/cnr_0043.onf 761 | ./data/zp_data/train/bn/cnr/00/cnr_0024.onf 762 | ./data/zp_data/train/bn/cnr/00/cnr_0014.onf 763 | ./data/zp_data/train/bn/cnr/01/cnr_0136.onf 764 | ./data/zp_data/train/bn/cnr/01/cnr_0101.onf 765 | ./data/zp_data/train/bn/cnr/01/cnr_0112.onf 766 | ./data/zp_data/train/bn/cnr/01/cnr_0123.onf 767 | ./data/zp_data/train/bn/cnr/01/cnr_0104.onf 768 | ./data/zp_data/train/bn/cnr/01/cnr_0102.onf 769 | ./data/zp_data/train/bn/cnr/01/cnr_0128.onf 770 | ./data/zp_data/train/bn/cnr/01/cnr_0121.onf 771 | ./data/zp_data/train/bn/cnr/01/cnr_0117.onf 772 | ./data/zp_data/train/bn/cnr/01/cnr_0132.onf 773 | ./data/zp_data/train/bn/cnr/01/cnr_0111.onf 774 | ./data/zp_data/train/bn/cnr/01/cnr_0114.onf 775 | ./data/zp_data/train/bn/cnr/01/cnr_0137.onf 776 | ./data/zp_data/train/bn/cnr/01/cnr_0138.onf 777 | ./data/zp_data/train/bn/cnr/01/cnr_0107.onf 778 | ./data/zp_data/train/bn/cnr/01/cnr_0115.onf 779 | ./data/zp_data/train/bn/cnr/01/cnr_0106.onf 780 | ./data/zp_data/train/bn/cnr/01/cnr_0103.onf 781 | ./data/zp_data/train/bn/cnr/01/cnr_0113.onf 782 | ./data/zp_data/train/bn/cnr/01/cnr_0131.onf 783 | ./data/zp_data/train/bn/cnr/01/cnr_0118.onf 784 | ./data/zp_data/train/bn/cnr/01/cnr_0133.onf 785 | ./data/zp_data/train/bn/cnr/01/cnr_0122.onf 786 | ./data/zp_data/train/bn/cnr/01/cnr_0108.onf 787 | ./data/zp_data/train/bn/cnr/01/cnr_0134.onf 788 | ./data/zp_data/train/bn/cnr/01/cnr_0116.onf 789 | ./data/zp_data/train/bn/cnr/01/cnr_0135.onf 790 | ./data/zp_data/train/bn/cnr/01/cnr_0125.onf 791 | ./data/zp_data/train/bn/cnr/01/cnr_0126.onf 792 | ./data/zp_data/train/bn/cnr/01/cnr_0105.onf 793 | ./data/zp_data/train/bn/cnr/01/cnr_0127.onf 794 | ./data/zp_data/train/bn/cnr/01/cnr_0124.onf 795 | ./data/zp_data/train/bn/vom/02/vom_0235.onf 796 | ./data/zp_data/train/bn/vom/02/vom_0297.onf 797 | ./data/zp_data/train/bn/vom/02/vom_0228.onf 798 | ./data/zp_data/train/bn/vom/02/vom_0277.onf 799 | ./data/zp_data/train/bn/vom/02/vom_0254.onf 800 | ./data/zp_data/train/bn/vom/02/vom_0295.onf 801 | ./data/zp_data/train/bn/vom/02/vom_0211.onf 802 | ./data/zp_data/train/bn/vom/02/vom_0225.onf 803 | ./data/zp_data/train/bn/vom/02/vom_0271.onf 804 | ./data/zp_data/train/bn/vom/02/vom_0288.onf 805 | ./data/zp_data/train/bn/vom/02/vom_0257.onf 806 | ./data/zp_data/train/bn/vom/02/vom_0207.onf 807 | ./data/zp_data/train/bn/vom/02/vom_0273.onf 808 | ./data/zp_data/train/bn/vom/02/vom_0283.onf 809 | ./data/zp_data/train/bn/vom/02/vom_0241.onf 810 | ./data/zp_data/train/bn/vom/02/vom_0215.onf 811 | ./data/zp_data/train/bn/vom/02/vom_0296.onf 812 | ./data/zp_data/train/bn/vom/02/vom_0246.onf 813 | ./data/zp_data/train/bn/vom/02/vom_0224.onf 814 | ./data/zp_data/train/bn/vom/02/vom_0291.onf 815 | ./data/zp_data/train/bn/vom/02/vom_0267.onf 816 | ./data/zp_data/train/bn/vom/02/vom_0285.onf 817 | ./data/zp_data/train/bn/vom/02/vom_0238.onf 818 | ./data/zp_data/train/bn/vom/02/vom_0217.onf 819 | ./data/zp_data/train/bn/vom/02/vom_0264.onf 820 | ./data/zp_data/train/bn/vom/02/vom_0272.onf 821 | ./data/zp_data/train/bn/vom/02/vom_0287.onf 822 | ./data/zp_data/train/bn/vom/02/vom_0251.onf 823 | ./data/zp_data/train/bn/vom/02/vom_0252.onf 824 | ./data/zp_data/train/bn/vom/02/vom_0231.onf 825 | ./data/zp_data/train/bn/vom/02/vom_0233.onf 826 | ./data/zp_data/train/bn/vom/02/vom_0298.onf 827 | ./data/zp_data/train/bn/vom/02/vom_0203.onf 828 | ./data/zp_data/train/bn/vom/02/vom_0256.onf 829 | ./data/zp_data/train/bn/vom/02/vom_0237.onf 830 | ./data/zp_data/train/bn/vom/02/vom_0292.onf 831 | ./data/zp_data/train/bn/vom/02/vom_0223.onf 832 | ./data/zp_data/train/bn/vom/02/vom_0242.onf 833 | ./data/zp_data/train/bn/vom/02/vom_0218.onf 834 | ./data/zp_data/train/bn/vom/02/vom_0213.onf 835 | ./data/zp_data/train/bn/vom/02/vom_0284.onf 836 | ./data/zp_data/train/bn/vom/02/vom_0265.onf 837 | ./data/zp_data/train/bn/vom/02/vom_0268.onf 838 | ./data/zp_data/train/bn/vom/02/vom_0236.onf 839 | ./data/zp_data/train/bn/vom/02/vom_0278.onf 840 | ./data/zp_data/train/bn/vom/02/vom_0281.onf 841 | ./data/zp_data/train/bn/vom/02/vom_0266.onf 842 | ./data/zp_data/train/bn/vom/02/vom_0206.onf 843 | ./data/zp_data/train/bn/vom/02/vom_0286.onf 844 | ./data/zp_data/train/bn/vom/02/vom_0244.onf 845 | ./data/zp_data/train/bn/vom/02/vom_0274.onf 846 | ./data/zp_data/train/bn/vom/02/vom_0201.onf 847 | ./data/zp_data/train/bn/vom/02/vom_0294.onf 848 | ./data/zp_data/train/bn/vom/02/vom_0261.onf 849 | ./data/zp_data/train/bn/vom/02/vom_0262.onf 850 | ./data/zp_data/train/bn/vom/02/vom_0222.onf 851 | ./data/zp_data/train/bn/vom/02/vom_0212.onf 852 | ./data/zp_data/train/bn/vom/02/vom_0221.onf 853 | ./data/zp_data/train/bn/vom/02/vom_0202.onf 854 | ./data/zp_data/train/bn/vom/02/vom_0253.onf 855 | ./data/zp_data/train/bn/vom/02/vom_0205.onf 856 | ./data/zp_data/train/bn/vom/02/vom_0282.onf 857 | ./data/zp_data/train/bn/vom/02/vom_0232.onf 858 | ./data/zp_data/train/bn/vom/02/vom_0245.onf 859 | ./data/zp_data/train/bn/vom/02/vom_0263.onf 860 | ./data/zp_data/train/bn/vom/02/vom_0208.onf 861 | ./data/zp_data/train/bn/vom/02/vom_0276.onf 862 | ./data/zp_data/train/bn/vom/02/vom_0214.onf 863 | ./data/zp_data/train/bn/vom/02/vom_0255.onf 864 | ./data/zp_data/train/bn/vom/02/vom_0216.onf 865 | ./data/zp_data/train/bn/vom/02/vom_0293.onf 866 | ./data/zp_data/train/bn/vom/02/vom_0248.onf 867 | ./data/zp_data/train/bn/vom/02/vom_0227.onf 868 | ./data/zp_data/train/bn/vom/02/vom_0204.onf 869 | ./data/zp_data/train/bn/vom/02/vom_0247.onf 870 | ./data/zp_data/train/bn/vom/02/vom_0234.onf 871 | ./data/zp_data/train/bn/vom/02/vom_0258.onf 872 | ./data/zp_data/train/bn/vom/02/vom_0243.onf 873 | ./data/zp_data/train/bn/vom/02/vom_0226.onf 874 | ./data/zp_data/train/bn/vom/02/vom_0275.onf 875 | ./data/zp_data/train/bn/vom/00/vom_0026.onf 876 | ./data/zp_data/train/bn/vom/00/vom_0091.onf 877 | ./data/zp_data/train/bn/vom/00/vom_0062.onf 878 | ./data/zp_data/train/bn/vom/00/vom_0056.onf 879 | ./data/zp_data/train/bn/vom/00/vom_0047.onf 880 | ./data/zp_data/train/bn/vom/00/vom_0096.onf 881 | ./data/zp_data/train/bn/vom/00/vom_0021.onf 882 | ./data/zp_data/train/bn/vom/00/vom_0075.onf 883 | ./data/zp_data/train/bn/vom/00/vom_0077.onf 884 | ./data/zp_data/train/bn/vom/00/vom_0054.onf 885 | ./data/zp_data/train/bn/vom/00/vom_0011.onf 886 | ./data/zp_data/train/bn/vom/00/vom_0084.onf 887 | ./data/zp_data/train/bn/vom/00/vom_0048.onf 888 | ./data/zp_data/train/bn/vom/00/vom_0058.onf 889 | ./data/zp_data/train/bn/vom/00/vom_0044.onf 890 | ./data/zp_data/train/bn/vom/00/vom_0042.onf 891 | ./data/zp_data/train/bn/vom/00/vom_0081.onf 892 | ./data/zp_data/train/bn/vom/00/vom_0023.onf 893 | ./data/zp_data/train/bn/vom/00/vom_0006.onf 894 | ./data/zp_data/train/bn/vom/00/vom_0004.onf 895 | ./data/zp_data/train/bn/vom/00/vom_0005.onf 896 | ./data/zp_data/train/bn/vom/00/vom_0033.onf 897 | ./data/zp_data/train/bn/vom/00/vom_0016.onf 898 | ./data/zp_data/train/bn/vom/00/vom_0061.onf 899 | ./data/zp_data/train/bn/vom/00/vom_0063.onf 900 | ./data/zp_data/train/bn/vom/00/vom_0043.onf 901 | ./data/zp_data/train/bn/vom/00/vom_0072.onf 902 | ./data/zp_data/train/bn/vom/00/vom_0002.onf 903 | ./data/zp_data/train/bn/vom/00/vom_0035.onf 904 | ./data/zp_data/train/bn/vom/00/vom_0065.onf 905 | ./data/zp_data/train/bn/vom/00/vom_0025.onf 906 | ./data/zp_data/train/bn/vom/00/vom_0083.onf 907 | ./data/zp_data/train/bn/vom/00/vom_0015.onf 908 | ./data/zp_data/train/bn/vom/00/vom_0088.onf 909 | ./data/zp_data/train/bn/vom/00/vom_0036.onf 910 | ./data/zp_data/train/bn/vom/00/vom_0024.onf 911 | ./data/zp_data/train/bn/vom/00/vom_0028.onf 912 | ./data/zp_data/train/bn/vom/00/vom_0098.onf 913 | ./data/zp_data/train/bn/vom/00/vom_0007.onf 914 | ./data/zp_data/train/bn/vom/00/vom_0092.onf 915 | ./data/zp_data/train/bn/vom/00/vom_0057.onf 916 | ./data/zp_data/train/bn/vom/00/vom_0094.onf 917 | ./data/zp_data/train/bn/vom/00/vom_0086.onf 918 | ./data/zp_data/train/bn/vom/00/vom_0031.onf 919 | ./data/zp_data/train/bn/vom/00/vom_0097.onf 920 | ./data/zp_data/train/bn/vom/00/vom_0014.onf 921 | ./data/zp_data/train/bn/vom/00/vom_0066.onf 922 | ./data/zp_data/train/bn/vom/00/vom_0017.onf 923 | ./data/zp_data/train/bn/vom/00/vom_0003.onf 924 | ./data/zp_data/train/bn/vom/00/vom_0037.onf 925 | ./data/zp_data/train/bn/vom/00/vom_0051.onf 926 | ./data/zp_data/train/bn/vom/00/vom_0053.onf 927 | ./data/zp_data/train/bn/vom/00/vom_0041.onf 928 | ./data/zp_data/train/bn/vom/00/vom_0055.onf 929 | ./data/zp_data/train/bn/vom/00/vom_0045.onf 930 | ./data/zp_data/train/bn/vom/00/vom_0085.onf 931 | ./data/zp_data/train/bn/vom/00/vom_0074.onf 932 | ./data/zp_data/train/bn/vom/00/vom_0012.onf 933 | ./data/zp_data/train/bn/vom/00/vom_0034.onf 934 | ./data/zp_data/train/bn/vom/00/vom_0093.onf 935 | ./data/zp_data/train/bn/vom/00/vom_0022.onf 936 | ./data/zp_data/train/bn/vom/00/vom_0027.onf 937 | ./data/zp_data/train/bn/vom/00/vom_0018.onf 938 | ./data/zp_data/train/bn/vom/00/vom_0095.onf 939 | ./data/zp_data/train/bn/vom/00/vom_0067.onf 940 | ./data/zp_data/train/bn/vom/00/vom_0008.onf 941 | ./data/zp_data/train/bn/vom/00/vom_0087.onf 942 | ./data/zp_data/train/bn/vom/00/vom_0073.onf 943 | ./data/zp_data/train/bn/vom/00/vom_0013.onf 944 | ./data/zp_data/train/bn/vom/00/vom_0038.onf 945 | ./data/zp_data/train/bn/vom/00/vom_0052.onf 946 | ./data/zp_data/train/bn/vom/00/vom_0071.onf 947 | ./data/zp_data/train/bn/vom/00/vom_0076.onf 948 | ./data/zp_data/train/bn/vom/00/vom_0082.onf 949 | ./data/zp_data/train/bn/vom/00/vom_0046.onf 950 | ./data/zp_data/train/bn/vom/00/vom_0032.onf 951 | ./data/zp_data/train/bn/vom/00/vom_0068.onf 952 | ./data/zp_data/train/bn/vom/00/vom_0064.onf 953 | ./data/zp_data/train/bn/vom/00/vom_0078.onf 954 | ./data/zp_data/train/bn/vom/00/vom_0001.onf 955 | ./data/zp_data/train/bn/vom/01/vom_0108.onf 956 | ./data/zp_data/train/bn/vom/01/vom_0114.onf 957 | ./data/zp_data/train/bn/vom/01/vom_0182.onf 958 | ./data/zp_data/train/bn/vom/01/vom_0142.onf 959 | ./data/zp_data/train/bn/vom/01/vom_0184.onf 960 | ./data/zp_data/train/bn/vom/01/vom_0116.onf 961 | ./data/zp_data/train/bn/vom/01/vom_0102.onf 962 | ./data/zp_data/train/bn/vom/01/vom_0123.onf 963 | ./data/zp_data/train/bn/vom/01/vom_0131.onf 964 | ./data/zp_data/train/bn/vom/01/vom_0194.onf 965 | ./data/zp_data/train/bn/vom/01/vom_0181.onf 966 | ./data/zp_data/train/bn/vom/01/vom_0146.onf 967 | ./data/zp_data/train/bn/vom/01/vom_0157.onf 968 | ./data/zp_data/train/bn/vom/01/vom_0126.onf 969 | ./data/zp_data/train/bn/vom/01/vom_0151.onf 970 | ./data/zp_data/train/bn/vom/01/vom_0133.onf 971 | ./data/zp_data/train/bn/vom/01/vom_0188.onf 972 | ./data/zp_data/train/bn/vom/01/vom_0165.onf 973 | ./data/zp_data/train/bn/vom/01/vom_0127.onf 974 | ./data/zp_data/train/bn/vom/01/vom_0137.onf 975 | ./data/zp_data/train/bn/vom/01/vom_0177.onf 976 | ./data/zp_data/train/bn/vom/01/vom_0103.onf 977 | ./data/zp_data/train/bn/vom/01/vom_0141.onf 978 | ./data/zp_data/train/bn/vom/01/vom_0168.onf 979 | ./data/zp_data/train/bn/vom/01/vom_0178.onf 980 | ./data/zp_data/train/bn/vom/01/vom_0132.onf 981 | ./data/zp_data/train/bn/vom/01/vom_0113.onf 982 | ./data/zp_data/train/bn/vom/01/vom_0154.onf 983 | ./data/zp_data/train/bn/vom/01/vom_0167.onf 984 | ./data/zp_data/train/bn/vom/01/vom_0152.onf 985 | ./data/zp_data/train/bn/vom/01/vom_0135.onf 986 | ./data/zp_data/train/bn/vom/01/vom_0156.onf 987 | ./data/zp_data/train/bn/vom/01/vom_0161.onf 988 | ./data/zp_data/train/bn/vom/01/vom_0118.onf 989 | ./data/zp_data/train/bn/vom/01/vom_0124.onf 990 | ./data/zp_data/train/bn/vom/01/vom_0162.onf 991 | ./data/zp_data/train/bn/vom/01/vom_0107.onf 992 | ./data/zp_data/train/bn/vom/01/vom_0106.onf 993 | ./data/zp_data/train/bn/vom/01/vom_0144.onf 994 | ./data/zp_data/train/bn/vom/01/vom_0148.onf 995 | ./data/zp_data/train/bn/vom/01/vom_0186.onf 996 | ./data/zp_data/train/bn/vom/01/vom_0115.onf 997 | ./data/zp_data/train/bn/vom/01/vom_0195.onf 998 | ./data/zp_data/train/bn/vom/01/vom_0173.onf 999 | ./data/zp_data/train/bn/vom/01/vom_0185.onf 1000 | ./data/zp_data/train/bn/vom/01/vom_0175.onf 1001 | ./data/zp_data/train/bn/vom/01/vom_0193.onf 1002 | ./data/zp_data/train/bn/vom/01/vom_0128.onf 1003 | ./data/zp_data/train/bn/vom/01/vom_0174.onf 1004 | ./data/zp_data/train/bn/vom/01/vom_0121.onf 1005 | ./data/zp_data/train/bn/vom/01/vom_0166.onf 1006 | ./data/zp_data/train/bn/vom/01/vom_0187.onf 1007 | ./data/zp_data/train/bn/vom/01/vom_0112.onf 1008 | ./data/zp_data/train/bn/vom/01/vom_0196.onf 1009 | ./data/zp_data/train/bn/vom/01/vom_0136.onf 1010 | ./data/zp_data/train/bn/vom/01/vom_0197.onf 1011 | ./data/zp_data/train/bn/vom/01/vom_0176.onf 1012 | ./data/zp_data/train/bn/vom/01/vom_0171.onf 1013 | ./data/zp_data/train/bn/vom/01/vom_0117.onf 1014 | ./data/zp_data/train/bn/vom/01/vom_0138.onf 1015 | ./data/zp_data/train/bn/vom/01/vom_0163.onf 1016 | ./data/zp_data/train/bn/vom/01/vom_0143.onf 1017 | ./data/zp_data/train/bn/vom/01/vom_0172.onf 1018 | ./data/zp_data/train/bn/vom/01/vom_0101.onf 1019 | ./data/zp_data/train/bn/vom/01/vom_0147.onf 1020 | ./data/zp_data/train/bn/vom/01/vom_0164.onf 1021 | ./data/zp_data/train/bn/vom/01/vom_0122.onf 1022 | ./data/zp_data/train/bn/vom/01/vom_0134.onf 1023 | ./data/zp_data/train/bn/vom/01/vom_0155.onf 1024 | ./data/zp_data/train/bn/vom/01/vom_0158.onf 1025 | ./data/zp_data/train/bn/vom/01/vom_0111.onf 1026 | ./data/zp_data/train/bn/vom/01/vom_0125.onf 1027 | ./data/zp_data/train/bn/vom/01/vom_0183.onf 1028 | ./data/zp_data/train/bn/vom/01/vom_0192.onf 1029 | ./data/zp_data/train/bn/vom/01/vom_0191.onf 1030 | ./data/zp_data/train/bn/vom/01/vom_0105.onf 1031 | ./data/zp_data/train/bn/vom/01/vom_0198.onf 1032 | ./data/zp_data/train/bn/vom/01/vom_0153.onf 1033 | ./data/zp_data/train/bn/vom/01/vom_0104.onf 1034 | ./data/zp_data/train/bn/vom/01/vom_0145.onf 1035 | ./data/zp_data/train/bn/vom/03/vom_0315.onf 1036 | ./data/zp_data/train/bn/vom/03/vom_0322.onf 1037 | ./data/zp_data/train/bn/vom/03/vom_0302.onf 1038 | ./data/zp_data/train/bn/vom/03/vom_0316.onf 1039 | ./data/zp_data/train/bn/vom/03/vom_0321.onf 1040 | ./data/zp_data/train/bn/vom/03/vom_0306.onf 1041 | ./data/zp_data/train/bn/vom/03/vom_0318.onf 1042 | ./data/zp_data/train/bn/vom/03/vom_0301.onf 1043 | ./data/zp_data/train/bn/vom/03/vom_0307.onf 1044 | ./data/zp_data/train/bn/vom/03/vom_0308.onf 1045 | ./data/zp_data/train/bn/vom/03/vom_0304.onf 1046 | ./data/zp_data/train/bn/vom/03/vom_0324.onf 1047 | ./data/zp_data/train/bn/vom/03/vom_0314.onf 1048 | ./data/zp_data/train/bn/vom/03/vom_0313.onf 1049 | ./data/zp_data/train/bn/vom/03/vom_0305.onf 1050 | ./data/zp_data/train/bn/vom/03/vom_0311.onf 1051 | ./data/zp_data/train/bn/vom/03/vom_0303.onf 1052 | ./data/zp_data/train/bn/vom/03/vom_0317.onf 1053 | ./data/zp_data/train/bn/vom/03/vom_0323.onf 1054 | ./data/zp_data/train/bn/vom/03/vom_0312.onf 1055 | ./data/zp_data/train/bn/ctv/00/ctv_0085.onf 1056 | ./data/zp_data/train/bn/ctv/00/ctv_0084.onf 1057 | ./data/zp_data/train/bn/ctv/00/ctv_0031.onf 1058 | ./data/zp_data/train/bn/ctv/00/ctv_0022.onf 1059 | ./data/zp_data/train/bn/ctv/00/ctv_0056.onf 1060 | ./data/zp_data/train/bn/ctv/00/ctv_0064.onf 1061 | ./data/zp_data/train/bn/ctv/00/ctv_0097.onf 1062 | ./data/zp_data/train/bn/ctv/00/ctv_0061.onf 1063 | ./data/zp_data/train/bn/ctv/00/ctv_0091.onf 1064 | ./data/zp_data/train/bn/ctv/00/ctv_0037.onf 1065 | ./data/zp_data/train/bn/ctv/00/ctv_0083.onf 1066 | ./data/zp_data/train/bn/ctv/00/ctv_0096.onf 1067 | ./data/zp_data/train/bn/ctv/00/ctv_0028.onf 1068 | ./data/zp_data/train/bn/ctv/00/ctv_0065.onf 1069 | ./data/zp_data/train/bn/ctv/00/ctv_0036.onf 1070 | ./data/zp_data/train/bn/ctv/00/ctv_0027.onf 1071 | ./data/zp_data/train/bn/ctv/00/ctv_0071.onf 1072 | ./data/zp_data/train/bn/ctv/00/ctv_0021.onf 1073 | ./data/zp_data/train/bn/ctv/00/ctv_0026.onf 1074 | ./data/zp_data/train/bn/ctv/00/ctv_0025.onf 1075 | ./data/zp_data/train/bn/ctv/00/ctv_0011.onf 1076 | ./data/zp_data/train/bn/ctv/00/ctv_0058.onf 1077 | ./data/zp_data/train/bn/ctv/00/ctv_0052.onf 1078 | ./data/zp_data/train/bn/ctv/00/ctv_0053.onf 1079 | ./data/zp_data/train/bn/ctv/00/ctv_0057.onf 1080 | ./data/zp_data/train/bn/ctv/00/ctv_0041.onf 1081 | ./data/zp_data/train/bn/ctv/00/ctv_0016.onf 1082 | ./data/zp_data/train/bn/ctv/00/ctv_0067.onf 1083 | ./data/zp_data/train/bn/ctv/00/ctv_0092.onf 1084 | ./data/zp_data/train/bn/ctv/00/ctv_0066.onf 1085 | ./data/zp_data/train/bn/ctv/00/ctv_0005.onf 1086 | ./data/zp_data/train/bn/ctv/00/ctv_0046.onf 1087 | ./data/zp_data/train/bn/ctv/00/ctv_0047.onf 1088 | ./data/zp_data/train/bn/ctv/00/ctv_0007.onf 1089 | ./data/zp_data/train/bn/ctv/00/ctv_0051.onf 1090 | ./data/zp_data/train/bn/ctv/00/ctv_0076.onf 1091 | ./data/zp_data/train/bn/ctv/00/ctv_0013.onf 1092 | ./data/zp_data/train/bn/ctv/00/ctv_0055.onf 1093 | ./data/zp_data/train/bn/ctv/00/ctv_0078.onf 1094 | ./data/zp_data/train/bn/ctv/00/ctv_0017.onf 1095 | ./data/zp_data/train/bn/ctv/00/ctv_0038.onf 1096 | ./data/zp_data/train/bn/ctv/00/ctv_0004.onf 1097 | ./data/zp_data/train/bn/ctv/00/ctv_0098.onf 1098 | ./data/zp_data/train/bn/ctv/00/ctv_0023.onf 1099 | ./data/zp_data/train/bn/ctv/00/ctv_0003.onf 1100 | ./data/zp_data/train/bn/ctv/00/ctv_0075.onf 1101 | ./data/zp_data/train/bn/ctv/00/ctv_0048.onf 1102 | ./data/zp_data/train/bn/ctv/00/ctv_0014.onf 1103 | ./data/zp_data/train/bn/ctv/00/ctv_0018.onf 1104 | ./data/zp_data/train/bn/ctv/00/ctv_0068.onf 1105 | ./data/zp_data/train/bn/ctv/00/ctv_0094.onf 1106 | ./data/zp_data/train/bn/ctv/00/ctv_0042.onf 1107 | ./data/zp_data/train/bn/ctv/00/ctv_0093.onf 1108 | ./data/zp_data/train/bn/ctv/00/ctv_0077.onf 1109 | ./data/zp_data/train/bn/ctv/00/ctv_0082.onf 1110 | ./data/zp_data/train/bn/ctv/00/ctv_0044.onf 1111 | ./data/zp_data/train/bn/ctv/00/ctv_0086.onf 1112 | ./data/zp_data/train/bn/ctv/00/ctv_0074.onf 1113 | ./data/zp_data/train/bn/ctv/00/ctv_0063.onf 1114 | ./data/zp_data/train/bn/ctv/00/ctv_0008.onf 1115 | ./data/zp_data/train/bn/ctv/00/ctv_0073.onf 1116 | ./data/zp_data/train/bn/ctv/00/ctv_0045.onf 1117 | ./data/zp_data/train/bn/ctv/00/ctv_0035.onf 1118 | ./data/zp_data/train/bn/ctv/00/ctv_0081.onf 1119 | ./data/zp_data/train/bn/ctv/00/ctv_0072.onf 1120 | ./data/zp_data/train/bn/ctv/00/ctv_0062.onf 1121 | ./data/zp_data/train/bn/ctv/00/ctv_0033.onf 1122 | ./data/zp_data/train/bn/ctv/00/ctv_0032.onf 1123 | ./data/zp_data/train/bn/ctv/00/ctv_0015.onf 1124 | ./data/zp_data/train/bn/ctv/00/ctv_0095.onf 1125 | ./data/zp_data/train/bn/ctv/00/ctv_0043.onf 1126 | ./data/zp_data/train/bn/ctv/00/ctv_0054.onf 1127 | ./data/zp_data/train/bn/ctv/00/ctv_0024.onf 1128 | ./data/zp_data/train/bn/ctv/00/ctv_0006.onf 1129 | ./data/zp_data/train/bn/ctv/00/ctv_0012.onf 1130 | ./data/zp_data/train/bn/ctv/00/ctv_0034.onf 1131 | ./data/zp_data/train/bn/ctv/00/ctv_0002.onf 1132 | ./data/zp_data/train/bn/ctv/00/ctv_0088.onf 1133 | ./data/zp_data/train/bn/ctv/00/ctv_0001.onf 1134 | ./data/zp_data/train/bn/ctv/00/ctv_0087.onf 1135 | ./data/zp_data/train/bn/ctv/01/ctv_0187.onf 1136 | ./data/zp_data/train/bn/ctv/01/ctv_0134.onf 1137 | ./data/zp_data/train/bn/ctv/01/ctv_0127.onf 1138 | ./data/zp_data/train/bn/ctv/01/ctv_0103.onf 1139 | ./data/zp_data/train/bn/ctv/01/ctv_0194.onf 1140 | ./data/zp_data/train/bn/ctv/01/ctv_0116.onf 1141 | ./data/zp_data/train/bn/ctv/01/ctv_0147.onf 1142 | ./data/zp_data/train/bn/ctv/01/ctv_0163.onf 1143 | ./data/zp_data/train/bn/ctv/01/ctv_0153.onf 1144 | ./data/zp_data/train/bn/ctv/01/ctv_0171.onf 1145 | ./data/zp_data/train/bn/ctv/01/ctv_0105.onf 1146 | ./data/zp_data/train/bn/ctv/01/ctv_0183.onf 1147 | ./data/zp_data/train/bn/ctv/01/ctv_0156.onf 1148 | ./data/zp_data/train/bn/ctv/01/ctv_0182.onf 1149 | ./data/zp_data/train/bn/ctv/01/ctv_0158.onf 1150 | ./data/zp_data/train/bn/ctv/01/ctv_0151.onf 1151 | ./data/zp_data/train/bn/ctv/01/ctv_0177.onf 1152 | ./data/zp_data/train/bn/ctv/01/ctv_0196.onf 1153 | ./data/zp_data/train/bn/ctv/01/ctv_0131.onf 1154 | ./data/zp_data/train/bn/ctv/01/ctv_0117.onf 1155 | ./data/zp_data/train/bn/ctv/01/ctv_0155.onf 1156 | ./data/zp_data/train/bn/ctv/01/ctv_0118.onf 1157 | ./data/zp_data/train/bn/ctv/01/ctv_0136.onf 1158 | ./data/zp_data/train/bn/ctv/01/ctv_0164.onf 1159 | ./data/zp_data/train/bn/ctv/01/ctv_0162.onf 1160 | ./data/zp_data/train/bn/ctv/01/ctv_0186.onf 1161 | ./data/zp_data/train/bn/ctv/01/ctv_0197.onf 1162 | ./data/zp_data/train/bn/ctv/01/ctv_0175.onf 1163 | ./data/zp_data/train/bn/ctv/01/ctv_0174.onf 1164 | ./data/zp_data/train/bn/ctv/01/ctv_0152.onf 1165 | ./data/zp_data/train/bn/ctv/01/ctv_0108.onf 1166 | ./data/zp_data/train/bn/ctv/01/ctv_0115.onf 1167 | ./data/zp_data/train/bn/ctv/01/ctv_0133.onf 1168 | ./data/zp_data/train/bn/ctv/01/ctv_0185.onf 1169 | ./data/zp_data/train/bn/ctv/01/ctv_0128.onf 1170 | ./data/zp_data/train/bn/ctv/01/ctv_0142.onf 1171 | ./data/zp_data/train/bn/ctv/01/ctv_0107.onf 1172 | ./data/zp_data/train/bn/ctv/01/ctv_0167.onf 1173 | ./data/zp_data/train/bn/ctv/01/ctv_0121.onf 1174 | ./data/zp_data/train/bn/ctv/01/ctv_0146.onf 1175 | ./data/zp_data/train/bn/ctv/01/ctv_0166.onf 1176 | ./data/zp_data/train/bn/ctv/01/ctv_0144.onf 1177 | ./data/zp_data/train/bn/ctv/01/ctv_0111.onf 1178 | ./data/zp_data/train/bn/ctv/01/ctv_0148.onf 1179 | ./data/zp_data/train/bn/ctv/01/ctv_0168.onf 1180 | ./data/zp_data/train/bn/ctv/01/ctv_0165.onf 1181 | ./data/zp_data/train/bn/ctv/01/ctv_0123.onf 1182 | ./data/zp_data/train/bn/ctv/01/ctv_0126.onf 1183 | ./data/zp_data/train/bn/ctv/01/ctv_0114.onf 1184 | ./data/zp_data/train/bn/ctv/01/ctv_0104.onf 1185 | ./data/zp_data/train/bn/ctv/01/ctv_0141.onf 1186 | ./data/zp_data/train/bn/ctv/01/ctv_0132.onf 1187 | ./data/zp_data/train/bn/ctv/01/ctv_0176.onf 1188 | ./data/zp_data/train/bn/ctv/01/ctv_0106.onf 1189 | ./data/zp_data/train/bn/ctv/01/ctv_0113.onf 1190 | ./data/zp_data/train/bn/ctv/01/ctv_0172.onf 1191 | ./data/zp_data/train/bn/ctv/01/ctv_0122.onf 1192 | ./data/zp_data/train/bn/ctv/01/ctv_0102.onf 1193 | ./data/zp_data/train/bn/ctv/01/ctv_0135.onf 1194 | ./data/zp_data/train/bn/ctv/01/ctv_0178.onf 1195 | ./data/zp_data/train/bn/ctv/01/ctv_0145.onf 1196 | ./data/zp_data/train/bn/ctv/01/ctv_0188.onf 1197 | ./data/zp_data/train/bn/ctv/01/ctv_0112.onf 1198 | ./data/zp_data/train/bn/ctv/01/ctv_0157.onf 1199 | ./data/zp_data/train/bn/ctv/01/ctv_0192.onf 1200 | ./data/zp_data/train/bn/ctv/01/ctv_0193.onf 1201 | ./data/zp_data/train/bn/ctv/01/ctv_0137.onf 1202 | ./data/zp_data/train/bn/ctv/01/ctv_0181.onf 1203 | ./data/zp_data/train/bn/ctv/01/ctv_0138.onf 1204 | ./data/zp_data/train/bn/ctv/01/ctv_0101.onf 1205 | ./data/zp_data/train/bn/ctv/01/ctv_0184.onf 1206 | ./data/zp_data/train/bn/ctv/01/ctv_0195.onf 1207 | ./data/zp_data/train/bn/ctv/01/ctv_0191.onf 1208 | ./data/zp_data/train/bn/ctv/01/ctv_0154.onf 1209 | ./data/zp_data/train/bn/ctv/01/ctv_0143.onf 1210 | ./data/zp_data/train/bn/ctv/01/ctv_0124.onf 1211 | ./data/zp_data/train/bn/ctv/01/ctv_0161.onf 1212 | ./data/zp_data/train/bn/ctv/01/ctv_0125.onf 1213 | ./data/zp_data/train/bn/ctv/01/ctv_0173.onf 1214 | ./data/zp_data/train/bn/cbs/00/cbs_0066.onf 1215 | ./data/zp_data/train/bn/cbs/00/cbs_0086.onf 1216 | ./data/zp_data/train/bn/cbs/00/cbs_0002.onf 1217 | ./data/zp_data/train/bn/cbs/00/cbs_0018.onf 1218 | ./data/zp_data/train/bn/cbs/00/cbs_0062.onf 1219 | ./data/zp_data/train/bn/cbs/00/cbs_0095.onf 1220 | ./data/zp_data/train/bn/cbs/00/cbs_0052.onf 1221 | ./data/zp_data/train/bn/cbs/00/cbs_0048.onf 1222 | ./data/zp_data/train/bn/cbs/00/cbs_0051.onf 1223 | ./data/zp_data/train/bn/cbs/00/cbs_0007.onf 1224 | ./data/zp_data/train/bn/cbs/00/cbs_0084.onf 1225 | ./data/zp_data/train/bn/cbs/00/cbs_0065.onf 1226 | ./data/zp_data/train/bn/cbs/00/cbs_0091.onf 1227 | ./data/zp_data/train/bn/cbs/00/cbs_0013.onf 1228 | ./data/zp_data/train/bn/cbs/00/cbs_0023.onf 1229 | ./data/zp_data/train/bn/cbs/00/cbs_0027.onf 1230 | ./data/zp_data/train/bn/cbs/00/cbs_0035.onf 1231 | ./data/zp_data/train/bn/cbs/00/cbs_0047.onf 1232 | ./data/zp_data/train/bn/cbs/00/cbs_0075.onf 1233 | ./data/zp_data/train/bn/cbs/00/cbs_0025.onf 1234 | ./data/zp_data/train/bn/cbs/00/cbs_0031.onf 1235 | ./data/zp_data/train/bn/cbs/00/cbs_0094.onf 1236 | ./data/zp_data/train/bn/cbs/00/cbs_0045.onf 1237 | ./data/zp_data/train/bn/cbs/00/cbs_0036.onf 1238 | ./data/zp_data/train/bn/cbs/00/cbs_0056.onf 1239 | ./data/zp_data/train/bn/cbs/00/cbs_0096.onf 1240 | ./data/zp_data/train/bn/cbs/00/cbs_0037.onf 1241 | ./data/zp_data/train/bn/cbs/00/cbs_0003.onf 1242 | ./data/zp_data/train/bn/cbs/00/cbs_0004.onf 1243 | ./data/zp_data/train/bn/cbs/00/cbs_0058.onf 1244 | ./data/zp_data/train/bn/cbs/00/cbs_0083.onf 1245 | ./data/zp_data/train/bn/cbs/00/cbs_0011.onf 1246 | ./data/zp_data/train/bn/cbs/00/cbs_0082.onf 1247 | ./data/zp_data/train/bn/cbs/00/cbs_0024.onf 1248 | ./data/zp_data/train/bn/cbs/00/cbs_0068.onf 1249 | ./data/zp_data/train/bn/cbs/00/cbs_0063.onf 1250 | ./data/zp_data/train/bn/cbs/00/cbs_0034.onf 1251 | ./data/zp_data/train/bn/cbs/00/cbs_0041.onf 1252 | ./data/zp_data/train/bn/cbs/00/cbs_0006.onf 1253 | ./data/zp_data/train/bn/cbs/00/cbs_0054.onf 1254 | ./data/zp_data/train/bn/cbs/00/cbs_0073.onf 1255 | ./data/zp_data/train/bn/cbs/00/cbs_0064.onf 1256 | ./data/zp_data/train/bn/cbs/00/cbs_0016.onf 1257 | ./data/zp_data/train/bn/cbs/00/cbs_0074.onf 1258 | ./data/zp_data/train/bn/cbs/00/cbs_0092.onf 1259 | ./data/zp_data/train/bn/cbs/00/cbs_0081.onf 1260 | ./data/zp_data/train/bn/cbs/00/cbs_0087.onf 1261 | ./data/zp_data/train/bn/cbs/00/cbs_0008.onf 1262 | ./data/zp_data/train/bn/cbs/00/cbs_0077.onf 1263 | ./data/zp_data/train/bn/cbs/00/cbs_0061.onf 1264 | ./data/zp_data/train/bn/cbs/00/cbs_0078.onf 1265 | ./data/zp_data/train/bn/cbs/00/cbs_0033.onf 1266 | ./data/zp_data/train/bn/cbs/00/cbs_0071.onf 1267 | ./data/zp_data/train/bn/cbs/00/cbs_0044.onf 1268 | ./data/zp_data/train/bn/cbs/00/cbs_0022.onf 1269 | ./data/zp_data/train/bn/cbs/00/cbs_0072.onf 1270 | ./data/zp_data/train/bn/cbs/00/cbs_0015.onf 1271 | ./data/zp_data/train/bn/cbs/00/cbs_0028.onf 1272 | ./data/zp_data/train/bn/cbs/00/cbs_0046.onf 1273 | ./data/zp_data/train/bn/cbs/00/cbs_0067.onf 1274 | ./data/zp_data/train/bn/cbs/00/cbs_0012.onf 1275 | ./data/zp_data/train/bn/cbs/00/cbs_0098.onf 1276 | ./data/zp_data/train/bn/cbs/00/cbs_0085.onf 1277 | ./data/zp_data/train/bn/cbs/00/cbs_0038.onf 1278 | ./data/zp_data/train/bn/cbs/00/cbs_0088.onf 1279 | ./data/zp_data/train/bn/cbs/00/cbs_0026.onf 1280 | ./data/zp_data/train/bn/cbs/00/cbs_0053.onf 1281 | ./data/zp_data/train/bn/cbs/00/cbs_0014.onf 1282 | ./data/zp_data/train/bn/cbs/00/cbs_0055.onf 1283 | ./data/zp_data/train/bn/cbs/00/cbs_0076.onf 1284 | ./data/zp_data/train/bn/cbs/00/cbs_0057.onf 1285 | ./data/zp_data/train/bn/cbs/00/cbs_0017.onf 1286 | ./data/zp_data/train/bn/cbs/00/cbs_0043.onf 1287 | ./data/zp_data/train/bn/cbs/00/cbs_0097.onf 1288 | ./data/zp_data/train/bn/cbs/00/cbs_0093.onf 1289 | ./data/zp_data/train/bn/cbs/00/cbs_0042.onf 1290 | ./data/zp_data/train/bn/cbs/00/cbs_0021.onf 1291 | ./data/zp_data/train/bn/cbs/00/cbs_0032.onf 1292 | ./data/zp_data/train/bn/cbs/00/cbs_0005.onf 1293 | ./data/zp_data/train/bn/cbs/00/cbs_0001.onf 1294 | ./data/zp_data/train/bn/cbs/01/cbs_0105.onf 1295 | ./data/zp_data/train/bn/cbs/01/cbs_0167.onf 1296 | ./data/zp_data/train/bn/cbs/01/cbs_0133.onf 1297 | ./data/zp_data/train/bn/cbs/01/cbs_0173.onf 1298 | ./data/zp_data/train/bn/cbs/01/cbs_0147.onf 1299 | ./data/zp_data/train/bn/cbs/01/cbs_0174.onf 1300 | ./data/zp_data/train/bn/cbs/01/cbs_0164.onf 1301 | ./data/zp_data/train/bn/cbs/01/cbs_0154.onf 1302 | ./data/zp_data/train/bn/cbs/01/cbs_0136.onf 1303 | ./data/zp_data/train/bn/cbs/01/cbs_0138.onf 1304 | ./data/zp_data/train/bn/cbs/01/cbs_0128.onf 1305 | ./data/zp_data/train/bn/cbs/01/cbs_0151.onf 1306 | ./data/zp_data/train/bn/cbs/01/cbs_0126.onf 1307 | ./data/zp_data/train/bn/cbs/01/cbs_0172.onf 1308 | ./data/zp_data/train/bn/cbs/01/cbs_0127.onf 1309 | ./data/zp_data/train/bn/cbs/01/cbs_0157.onf 1310 | ./data/zp_data/train/bn/cbs/01/cbs_0152.onf 1311 | ./data/zp_data/train/bn/cbs/01/cbs_0175.onf 1312 | ./data/zp_data/train/bn/cbs/01/cbs_0144.onf 1313 | ./data/zp_data/train/bn/cbs/01/cbs_0148.onf 1314 | ./data/zp_data/train/bn/cbs/01/cbs_0146.onf 1315 | ./data/zp_data/train/bn/cbs/01/cbs_0117.onf 1316 | ./data/zp_data/train/bn/cbs/01/cbs_0153.onf 1317 | ./data/zp_data/train/bn/cbs/01/cbs_0162.onf 1318 | ./data/zp_data/train/bn/cbs/01/cbs_0116.onf 1319 | ./data/zp_data/train/bn/cbs/01/cbs_0115.onf 1320 | ./data/zp_data/train/bn/cbs/01/cbs_0142.onf 1321 | ./data/zp_data/train/bn/cbs/01/cbs_0168.onf 1322 | ./data/zp_data/train/bn/cbs/01/cbs_0112.onf 1323 | ./data/zp_data/train/bn/cbs/01/cbs_0114.onf 1324 | ./data/zp_data/train/bn/cbs/01/cbs_0141.onf 1325 | ./data/zp_data/train/bn/cbs/01/cbs_0171.onf 1326 | ./data/zp_data/train/bn/cbs/01/cbs_0106.onf 1327 | ./data/zp_data/train/bn/cbs/01/cbs_0102.onf 1328 | ./data/zp_data/train/bn/cbs/01/cbs_0111.onf 1329 | ./data/zp_data/train/bn/cbs/01/cbs_0163.onf 1330 | ./data/zp_data/train/bn/cbs/01/cbs_0155.onf 1331 | ./data/zp_data/train/bn/cbs/01/cbs_0135.onf 1332 | ./data/zp_data/train/bn/cbs/01/cbs_0125.onf 1333 | ./data/zp_data/train/bn/cbs/01/cbs_0122.onf 1334 | ./data/zp_data/train/bn/cbs/01/cbs_0178.onf 1335 | ./data/zp_data/train/bn/cbs/01/cbs_0165.onf 1336 | ./data/zp_data/train/bn/cbs/01/cbs_0145.onf 1337 | ./data/zp_data/train/bn/cbs/01/cbs_0108.onf 1338 | ./data/zp_data/train/bn/cbs/01/cbs_0124.onf 1339 | ./data/zp_data/train/bn/cbs/01/cbs_0181.onf 1340 | ./data/zp_data/train/bn/cbs/01/cbs_0143.onf 1341 | ./data/zp_data/train/bn/cbs/01/cbs_0107.onf 1342 | ./data/zp_data/train/bn/cbs/01/cbs_0158.onf 1343 | ./data/zp_data/train/bn/cbs/01/cbs_0156.onf 1344 | ./data/zp_data/train/bn/cbs/01/cbs_0137.onf 1345 | ./data/zp_data/train/bn/cbs/01/cbs_0176.onf 1346 | ./data/zp_data/train/bn/cbs/01/cbs_0131.onf 1347 | ./data/zp_data/train/bn/cbs/01/cbs_0177.onf 1348 | ./data/zp_data/train/bn/cbs/01/cbs_0161.onf 1349 | ./data/zp_data/train/bn/cbs/01/cbs_0113.onf 1350 | ./data/zp_data/train/bn/cbs/01/cbs_0132.onf 1351 | ./data/zp_data/train/bn/cbs/01/cbs_0103.onf 1352 | ./data/zp_data/train/bn/cbs/01/cbs_0134.onf 1353 | ./data/zp_data/train/bn/cbs/01/cbs_0101.onf 1354 | ./data/zp_data/train/bn/cbs/01/cbs_0121.onf 1355 | ./data/zp_data/train/bn/cbs/01/cbs_0118.onf 1356 | ./data/zp_data/train/bn/cbs/01/cbs_0166.onf 1357 | ./data/zp_data/train/bn/cbs/01/cbs_0123.onf 1358 | ./data/zp_data/train/bn/cbs/01/cbs_0104.onf 1359 | ./data/zp_data/train/tc/ch/00/ch_0022.onf 1360 | ./data/zp_data/train/tc/ch/00/ch_0036.onf 1361 | ./data/zp_data/train/tc/ch/00/ch_0007.onf 1362 | ./data/zp_data/train/tc/ch/00/ch_0015.onf 1363 | ./data/zp_data/train/tc/ch/00/ch_0016.onf 1364 | ./data/zp_data/train/tc/ch/00/ch_0003.onf 1365 | ./data/zp_data/train/tc/ch/00/ch_0012.onf 1366 | ./data/zp_data/train/tc/ch/00/ch_0028.onf 1367 | ./data/zp_data/train/tc/ch/00/ch_0014.onf 1368 | ./data/zp_data/train/tc/ch/00/ch_0017.onf 1369 | ./data/zp_data/train/tc/ch/00/ch_0033.onf 1370 | ./data/zp_data/train/tc/ch/00/ch_0008.onf 1371 | ./data/zp_data/train/tc/ch/00/ch_0004.onf 1372 | ./data/zp_data/train/tc/ch/00/ch_0018.onf 1373 | ./data/zp_data/train/tc/ch/00/ch_0032.onf 1374 | ./data/zp_data/train/tc/ch/00/ch_0011.onf 1375 | ./data/zp_data/train/tc/ch/00/ch_0024.onf 1376 | ./data/zp_data/train/tc/ch/00/ch_0041.onf 1377 | ./data/zp_data/train/tc/ch/00/ch_0031.onf 1378 | ./data/zp_data/train/tc/ch/00/ch_0038.onf 1379 | ./data/zp_data/train/tc/ch/00/ch_0034.onf 1380 | ./data/zp_data/train/tc/ch/00/ch_0027.onf 1381 | ./data/zp_data/train/tc/ch/00/ch_0006.onf 1382 | ./data/zp_data/train/tc/ch/00/ch_0002.onf 1383 | ./data/zp_data/train/tc/ch/00/ch_0013.onf 1384 | ./data/zp_data/train/tc/ch/00/ch_0026.onf 1385 | ./data/zp_data/train/tc/ch/00/ch_0037.onf 1386 | ./data/zp_data/train/tc/ch/00/ch_0001.onf 1387 | ./data/zp_data/train/tc/ch/00/ch_0005.onf 1388 | ./data/zp_data/train/tc/ch/00/ch_0025.onf 1389 | ./data/zp_data/train/tc/ch/00/ch_0035.onf 1390 | ./data/zp_data/train/tc/ch/00/ch_0021.onf 1391 | ./data/zp_data/train/tc/ch/00/ch_0023.onf 1392 | -------------------------------------------------------------------------------- /data/zp_raw_data.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lpq29743/HAN-PL/3a9f315babf119b0df1b8766734fefe1e1942d05/data/zp_raw_data.zip -------------------------------------------------------------------------------- /data_builder.py: -------------------------------------------------------------------------------- 1 | # coding=utf8 2 | import sys 3 | import argparse 4 | import cPickle 5 | import random 6 | import numpy 7 | import timeit 8 | import collections 9 | import matplotlib.pyplot as plt 10 | from buildTree import get_info_from_file 11 | from data_generator import DataGenerator 12 | from utils import * 13 | 14 | DIR = "./data/" 15 | parser = argparse.ArgumentParser(description="Experiments\n") 16 | parser.add_argument("-data", default=DIR, type=str, help="saved vectorized data") 17 | parser.add_argument("-raw_data", default="./data/zp_data/", type=str, help="raw_data") 18 | parser.add_argument("-random_seed", default=0, type=int, help="random seed") 19 | parser.add_argument("-batch_size", default=256, type=int, help="batch size") 20 | 21 | args = parser.parse_args() 22 | random.seed(0) 23 | numpy.random.seed(0) 24 | 25 | 26 | def get_sentence(zp_sentence_index, zp_index, nodes_info): 27 | nl, wl = nodes_info[zp_sentence_index] 28 | return_words = [] 29 | for i in range(len(wl)): 30 | this_word = wl[i].word 31 | if i == zp_index: 32 | return_words.append("**pro**") 33 | else: 34 | if not (this_word == "*pro*"): 35 | return_words.append(this_word) 36 | return " ".join(return_words) 37 | 38 | 39 | def get_candi_info(candi_sentence_index, nodes_info, candi_begin, candi_end, res_result): 40 | nl, wl = nodes_info[candi_sentence_index] 41 | candi_word = [] 42 | for i in range(candi_begin, candi_end + 1): 43 | candi_word.append(wl[i].word) 44 | candi_word = "_".join(candi_word) 45 | 46 | candi_info = [str(res_result), candi_word] 47 | return candi_info 48 | 49 | 50 | def list_vectorize(wl, words): 51 | il = [] 52 | for w in wl: 53 | word = w.word 54 | if word in words: 55 | index = words.index(word) 56 | else: 57 | index = 0 58 | il.append(index) 59 | return il 60 | 61 | 62 | def generate_vector(path, files): 63 | read_f = file('./data/emb', "rb") 64 | embedding, words, wd = cPickle.load(read_f) 65 | read_f.close() 66 | 67 | paths = [w.strip() for w in open(files).readlines()] 68 | 69 | total_sentence_num = 0 70 | vectorized_sentences = [] 71 | zp_info = [] 72 | 73 | startt = timeit.default_timer() 74 | is_test = True if 'test' in path else False 75 | for p in paths: 76 | if p.strip().endswith("DS_Store"): 77 | continue 78 | file_name = p.strip() 79 | if file_name.endswith('onf'): 80 | print 'Processing', file_name 81 | zps, azps, candi, nodes_info = get_info_from_file(file_name) 82 | 83 | anaphorics = [] 84 | ana_zps = [] 85 | for (zp_sentence_index, zp_begin_index, zp_end_index, antecedents, coref_id, is_real) in azps: 86 | for (candi_sentence_index, begin_word_index, end_word_index, coref_id) in antecedents: 87 | anaphorics.append( 88 | (zp_sentence_index, zp_begin_index, zp_end_index, candi_sentence_index, begin_word_index, 89 | end_word_index)) 90 | ana_zps.append((zp_sentence_index, zp_begin_index, zp_end_index, is_real)) 91 | 92 | si2reali = {} 93 | for k in nodes_info: 94 | nl, wl = nodes_info[k] 95 | vectorize_words = list_vectorize(wl, words) 96 | vectorized_sentences.append(vectorize_words) 97 | si2reali[k] = total_sentence_num 98 | total_sentence_num += 1 99 | 100 | for (sentence_index, zp_begin_index, zp_end_index, antecedents, coref_id, is_real) in azps: 101 | index_in_file = si2reali[sentence_index] 102 | zp = (index_in_file, sentence_index, zp_begin_index, zp_end_index) 103 | zp_nl, zp_wl = nodes_info[sentence_index] 104 | 105 | if (sentence_index, zp_begin_index, zp_end_index, is_real) not in ana_zps: 106 | continue 107 | 108 | if is_test and is_real == 0: 109 | continue 110 | 111 | candi_info = [] 112 | for ci in range(max(0, sentence_index - 2), sentence_index + 1): 113 | candi_sentence_index = ci 114 | candi_nl, candi_wl = nodes_info[candi_sentence_index] 115 | 116 | for (candi_begin, candi_end) in candi[candi_sentence_index]: 117 | if ci == sentence_index and candi_end > zp_begin_index: 118 | continue 119 | res = 0 120 | if (sentence_index, zp_begin_index, zp_end_index, candi_sentence_index, candi_begin, 121 | candi_end) in anaphorics: 122 | res = 1 123 | candi_index_in_file = si2reali[candi_sentence_index] 124 | 125 | ifl = get_fl((sentence_index, zp_begin_index, zp_end_index), 126 | (candi_sentence_index, candi_begin, candi_end), 127 | zp_wl, candi_wl, wd) 128 | 129 | candidate = ( 130 | candi_index_in_file, candi_sentence_index, candi_begin, candi_end, res, -res, ifl) 131 | candi_info.append(candidate) 132 | zp_info.append((zp, candi_info)) 133 | 134 | endt = timeit.default_timer() 135 | print >> sys.stderr, "Total use %.3f seconds for Data Generating" % (endt - startt) 136 | vectorized_sentences = numpy.array(vectorized_sentences) 137 | return zp_info, vectorized_sentences 138 | 139 | 140 | def generate_vector_data(test_only=False): 141 | DATA = args.raw_data 142 | train_data_path = args.data + "train/" 143 | test_data_path = args.data + "test/" 144 | 145 | if not test_only: 146 | train_zp_info, train_vectorized_sentences = generate_vector(DATA + "train/", "./data/train_list") 147 | train_vec_path = train_data_path + "sen.npy" 148 | numpy.save(train_vec_path, train_vectorized_sentences) 149 | save_f = file(train_data_path + "zp_info", 'wb') 150 | cPickle.dump(train_zp_info, save_f, protocol=cPickle.HIGHEST_PROTOCOL) 151 | save_f.close() 152 | 153 | test_zp_info, test_vectorized_sentences = generate_vector(DATA + "test/", "./data/test_list") 154 | test_vec_path = test_data_path + "sen.npy" 155 | numpy.save(test_vec_path, test_vectorized_sentences) 156 | save_f = file(test_data_path + "zp_info", 'wb') 157 | cPickle.dump(test_zp_info, save_f, protocol=cPickle.HIGHEST_PROTOCOL) 158 | save_f.close() 159 | 160 | 161 | def generate_input_data(test_only=False): 162 | train_data_path = args.data + "train/" 163 | test_data_path = args.data + "test/" 164 | if not test_only: 165 | generate_vec(train_data_path) 166 | generate_vec(test_data_path) 167 | 168 | 169 | def generate_vec(data_path): 170 | zp_candi_target = [] 171 | zp_vec_index = 0 172 | candi_vec_index = 0 173 | 174 | zp_prefixs = [] 175 | zp_prefixs_mask = [] 176 | zp_postfixs = [] 177 | zp_postfixs_mask = [] 178 | candi_vecs = [] 179 | candi_vecs_mask = [] 180 | 181 | np_prefixs = [] 182 | np_prefixs_mask = [] 183 | np_postfixs = [] 184 | np_postfixs_mask = [] 185 | 186 | ifl_vecs = [] 187 | 188 | infos = [] 189 | 190 | read_f = file(data_path + "zp_info", "rb") 191 | zp_info_test = cPickle.load(read_f) 192 | read_f.close() 193 | 194 | vectorized_sentences = numpy.load(data_path + "sen.npy") 195 | for zp, candi_info in zp_info_test: 196 | index_in_file, sentence_index, zp_begin_index, zp_end_index = zp 197 | 198 | word_embedding_indexs = vectorized_sentences[index_in_file] 199 | max_index = len(word_embedding_indexs) 200 | 201 | prefix = word_embedding_indexs[max(0, zp_begin_index - 10):zp_begin_index] 202 | prefix_mask = (10 - len(prefix)) * [0] + len(prefix) * [1] 203 | prefix = (10 - len(prefix)) * [0] + prefix 204 | 205 | zp_prefixs.append(prefix) 206 | zp_prefixs_mask.append(prefix_mask) 207 | 208 | postfix = word_embedding_indexs[zp_end_index + 1:min(zp_end_index + 11, max_index)] 209 | postfix_mask = (len(postfix) * [1] + (10 - len(postfix)) * [0])[::-1] 210 | postfix = (postfix + (10 - len(postfix)) * [0])[::-1] 211 | 212 | zp_postfixs.append(postfix) 213 | zp_postfixs_mask.append(postfix_mask) 214 | 215 | candi_vec_index_inside = [] 216 | for candi_index_in_file, candi_sentence_index, candi_begin, candi_end, res, target, ifl in candi_info: 217 | candi_word_embedding_indexs = vectorized_sentences[candi_index_in_file] 218 | candi_max_index = len(candi_word_embedding_indexs) 219 | 220 | candi_prefix = candi_word_embedding_indexs[max(0, candi_begin - 10):candi_begin] 221 | candi_prefix_mask = (10 - len(candi_prefix)) * [0] + len(candi_prefix) * [1] 222 | candi_prefix = (10 - len(candi_prefix)) * [0] + candi_prefix 223 | 224 | np_prefixs.append(candi_prefix) 225 | np_prefixs_mask.append(candi_prefix_mask) 226 | 227 | candi_postfix = candi_word_embedding_indexs[candi_end + 1:min(candi_end + 11, candi_max_index)] 228 | candi_postfix_mask = (len(candi_postfix) * [1] + (10 - len(candi_postfix)) * [0])[::-1] 229 | candi_postfix = (candi_postfix + (10 - len(candi_postfix)) * [0])[::-1] 230 | 231 | np_postfixs.append(candi_postfix) 232 | np_postfixs_mask.append(candi_postfix_mask) 233 | 234 | candi_vec = candi_word_embedding_indexs[candi_begin:candi_end + 1] 235 | if len(candi_vec) >= 8: 236 | candi_vec = candi_vec[-8:] 237 | candi_mask = (8 - len(candi_vec)) * [0] + len(candi_vec) * [1] 238 | candi_vec = (8 - len(candi_vec)) * [0] + candi_vec 239 | 240 | candi_vecs.append(candi_vec) 241 | candi_vecs_mask.append(candi_mask) 242 | 243 | ifl_vecs.append(ifl) 244 | infos.append( 245 | (index_in_file, sentence_index, zp_begin_index, zp_end_index, candi_index_in_file, candi_sentence_index, 246 | candi_begin, candi_end)) 247 | 248 | candi_vec_index_inside.append((candi_vec_index, res, target)) 249 | 250 | candi_vec_index += 1 251 | 252 | zp_candi_target.append((zp_vec_index, candi_vec_index_inside)) 253 | 254 | zp_vec_index += 1 255 | save_f = file(data_path + "zp_candi_pair_info", 'wb') 256 | cPickle.dump(zp_candi_target, save_f, protocol=cPickle.HIGHEST_PROTOCOL) 257 | save_f.close() 258 | 259 | zp_prefixs = numpy.array(zp_prefixs, dtype='int32') 260 | numpy.save(data_path + "zp_pre.npy", zp_prefixs) 261 | zp_prefixs_mask = numpy.array(zp_prefixs_mask, dtype='int32') 262 | numpy.save(data_path + "zp_pre_mask.npy", zp_prefixs_mask) 263 | zp_postfixs = numpy.array(zp_postfixs, dtype='int32') 264 | numpy.save(data_path + "zp_post.npy", zp_postfixs) 265 | zp_postfixs_mask = numpy.array(zp_postfixs_mask, dtype='int32') 266 | numpy.save(data_path + "zp_post_mask.npy", zp_postfixs_mask) 267 | candi_vecs = numpy.array(candi_vecs, dtype='int32') 268 | numpy.save(data_path + "candi_vec.npy", candi_vecs) 269 | candi_vecs_mask = numpy.array(candi_vecs_mask, dtype='int32') 270 | numpy.save(data_path + "candi_vec_mask.npy", candi_vecs_mask) 271 | 272 | np_prefixs = numpy.array(np_prefixs, dtype='int32') 273 | numpy.save(data_path + "np_pre.npy", np_prefixs) 274 | np_prefixs_mask = numpy.array(np_prefixs_mask, dtype='int32') 275 | numpy.save(data_path + "np_pre_mask.npy", np_prefixs_mask) 276 | np_postfixs = numpy.array(np_postfixs, dtype='int32') 277 | numpy.save(data_path + "np_post.npy", np_postfixs) 278 | np_postfixs_mask = numpy.array(np_postfixs_mask, dtype='int32') 279 | numpy.save(data_path + "np_post_mask.npy", np_postfixs_mask) 280 | 281 | assert len(ifl_vecs) == len(candi_vecs) 282 | 283 | ifl_vecs = numpy.array(ifl_vecs, dtype='float') 284 | numpy.save(data_path + "ifl_vec.npy", ifl_vecs) 285 | 286 | infos = numpy.array(infos, dtype='int32') 287 | numpy.save(data_path + "infos.npy", infos) 288 | 289 | 290 | def get_head_verb(index, wl): 291 | father = wl[index].parent 292 | while father: 293 | leafs = father.get_leaf() 294 | for ln in leafs: 295 | if ln.tag.startswith("V"): 296 | return ln 297 | father = father.parent 298 | 299 | return None 300 | 301 | 302 | def get_fl(zp, candidate, wl_zp, wl_candi, wd): 303 | ifl = [] 304 | 305 | (zp_sentence_index, zp_begin_index, zp_end_index) = zp 306 | (candi_sentence_index, candi_index_begin, candi_index_end) = candidate 307 | 308 | sentence_dis = zp_sentence_index - candi_sentence_index 309 | 310 | # sentence distance 311 | tmp_ones = [0] * 3 312 | tmp_ones[sentence_dis] = 1 313 | ifl += tmp_ones 314 | 315 | cloNP = 0 316 | if sentence_dis == 0: 317 | if candi_index_end <= zp_begin_index: 318 | cloNP = 1 319 | for i in range(candi_index_end + 1, zp_begin_index): 320 | node = wl_zp[i] 321 | while True: 322 | if node.tag.startswith("NP"): 323 | cloNP = 0 324 | break 325 | node = node.parent 326 | if not node: 327 | break 328 | if cloNP == 0: 329 | break 330 | 331 | tmp_ones = [0] * 2 332 | tmp_ones[cloNP] = 1 333 | ifl += tmp_ones 334 | 335 | first_zp = 1 336 | for i in range(zp_begin_index): 337 | if wl_zp[i].word == "*pro*": 338 | first_zp = 0 339 | break 340 | tmp_ones = [0] * 2 341 | tmp_ones[first_zp] = 1 342 | ifl += tmp_ones 343 | 344 | last_zp = 1 345 | for i in range(zp_end_index + 1, len(wl_zp)): 346 | if wl_zp[i].word == "*pro*": 347 | last_zp = 0 348 | break 349 | tmp_ones = [0] * 2 350 | tmp_ones[last_zp] = 1 351 | ifl += tmp_ones 352 | 353 | zp_node = wl_zp[zp_begin_index] 354 | NP_node = None 355 | father = zp_node.parent 356 | while father: 357 | if father.tag.startswith("NP"): 358 | NP_node = father 359 | break 360 | father = father.parent 361 | z_NP = 0 362 | if NP_node: 363 | z_NP = 1 364 | tmp_ones = [0] * 2 365 | tmp_ones[z_NP] = 1 366 | ifl += tmp_ones 367 | 368 | z_NinI = 0 369 | if NP_node: 370 | father = zp_node.parent 371 | while father: 372 | if father.tag.startswith("IP"): 373 | if father.has_child(NP_node): 374 | z_NinI = 1 375 | break 376 | father = father.parent 377 | 378 | tmp_ones = [0] * 2 379 | tmp_ones[z_NinI] = 1 380 | ifl += tmp_ones 381 | 382 | VP_node = None 383 | zVP = 0 384 | father = zp_node.parent 385 | while father: 386 | if father.tag.startswith("VP"): 387 | VP_node = father 388 | zVP = 1 389 | break 390 | father = father.parent 391 | tmp_ones = [0] * 2 392 | tmp_ones[zVP] = 1 393 | ifl += tmp_ones 394 | 395 | z_VinI = 0 396 | if VP_node: 397 | father = zp_node.parent 398 | while father: 399 | if father.tag.startswith("IP"): 400 | if father.has_child(VP_node): 401 | z_VinI = 1 402 | break 403 | father = father.parent 404 | tmp_ones = [0] * 2 405 | tmp_ones[z_VinI] = 1 406 | ifl += tmp_ones 407 | 408 | CP_node = None 409 | zCP = 0 410 | father = zp_node.parent 411 | while father: 412 | if father.tag.startswith("CP"): 413 | CP_node = father 414 | zCP = 1 415 | break 416 | father = father.parent 417 | tmp_ones = [0] * 2 418 | tmp_ones[zCP] = 1 419 | ifl += tmp_ones 420 | 421 | tags = zp_node.parent.tag.split("-") 422 | zGram = 0 423 | zHl = 0 424 | if len(tags) == 2: 425 | if tags[1] == "SBJ": 426 | zGram = 1 427 | if tags[1] == "HLN": 428 | zHl = 1 429 | tmp_ones = [0] * 2 430 | tmp_ones[zGram] = 1 431 | ifl += tmp_ones 432 | tmp_ones = [0] * 2 433 | tmp_ones[zHl] = 1 434 | ifl += tmp_ones 435 | 436 | zc = 0 437 | if zCP == 1: 438 | zc = 1 439 | father = zp_node.parent 440 | while father: 441 | if father.tag.startswith("IP"): 442 | zc = 2 443 | break 444 | if father == CP_node: 445 | break 446 | father = father.parent 447 | else: 448 | zc = 3 449 | father = zp_node.parent 450 | while father: 451 | if father.tag.startswith("IP"): 452 | if father.parent: # 非根节点 453 | zc = 4 454 | break 455 | father = father.parent 456 | tmp_ones = [0] * 5 457 | tmp_ones[zc] = 1 458 | ifl += tmp_ones 459 | 460 | candi_node = wl_candi[candi_index_begin] 461 | NP_node = None 462 | father = candi_node.parent 463 | while father: 464 | if father.tag.startswith("NP"): 465 | NP_node = father 466 | break 467 | father = father.parent 468 | can_NinI = 0 469 | if NP_node: 470 | father = candi_node.parent 471 | while father: 472 | if father.tag.startswith("IP"): 473 | if father.has_child(NP_node): 474 | can_NinI = 1 475 | break 476 | father = father.parent 477 | tmp_ones = [0] * 2 478 | tmp_ones[can_NinI] = 1 479 | ifl += tmp_ones 480 | VP_node = None 481 | canVP = 0 482 | father = candi_node.parent 483 | while father: 484 | if father.tag.startswith("VP"): 485 | VP_node = father 486 | canVP = 1 487 | break 488 | father = father.parent 489 | tmp_ones = [0] * 2 490 | tmp_ones[canVP] = 1 491 | ifl += tmp_ones 492 | can_VinI = 0 493 | if VP_node: 494 | father = candi_node.parent 495 | while father: 496 | if father.tag.startswith("IP"): 497 | if father.has_child(VP_node): 498 | can_VinI = 1 499 | break 500 | father = father.parent 501 | tmp_ones = [0] * 2 502 | tmp_ones[can_VinI] = 1 503 | ifl += tmp_ones 504 | CP_node = None 505 | canCP = 0 506 | father = candi_node.parent 507 | while father: 508 | if father.tag.startswith("CP"): 509 | CP_node = father 510 | canCP = 1 511 | break 512 | father = father.parent 513 | tmp_ones = [0] * 2 514 | tmp_ones[canCP] = 1 515 | ifl += tmp_ones 516 | tags = candi_node.parent.tag.split("-") 517 | canGram = 0 518 | canADV = 0 519 | canTMP = 0 520 | canPN = 0 521 | canHl = 0 522 | if len(tags) == 2: 523 | if tags[1] == "SBJ": 524 | canGram = 1 525 | elif tags[1] == "OBJ": 526 | canGram = 2 527 | if tags[1] == "ADV": 528 | canADV = 1 529 | if tags[1] == "TMP": 530 | canTMP = 1 531 | if tags[1] == "PN": 532 | canPN = 1 533 | if tags[1] == "HLN": 534 | canHl = 1 535 | tmp_ones = [0] * 3 536 | tmp_ones[canGram] = 1 537 | ifl += tmp_ones 538 | tmp_ones = [0] * 2 539 | tmp_ones[canADV] = 1 540 | ifl += tmp_ones 541 | tmp_ones = [0] * 2 542 | tmp_ones[canTMP] = 1 543 | ifl += tmp_ones 544 | tmp_ones = [0] * 2 545 | tmp_ones[canPN] = 1 546 | ifl += tmp_ones 547 | tmp_ones = [0] * 2 548 | tmp_ones[canHl] = 1 549 | ifl += tmp_ones 550 | canc = 0 551 | if canCP == 1: 552 | canc = 1 553 | father = candi_node.parent 554 | while father: 555 | if father.tag.startswith("IP"): 556 | canc = 2 557 | break 558 | if father == CP_node: 559 | break 560 | father = father.parent 561 | else: 562 | canc = 3 563 | father = candi_node.parent 564 | while father: 565 | if father.tag.startswith("IP"): 566 | if father.parent: 567 | canc = 4 568 | break 569 | father = father.parent 570 | tmp_ones = [0] * 5 571 | tmp_ones[canc] = 1 572 | ifl += tmp_ones 573 | sibNV = 0 574 | if not sentence_dis == 0: 575 | sibNV = 0 576 | else: 577 | if abs(zp_begin_index - candi_index_end) == 1: 578 | sibNV = 1 579 | else: 580 | if abs(zp_begin_index - candi_index_begin) == 1: 581 | sibNV = 1 582 | else: 583 | if abs(zp_begin_index - candi_index_begin) == 2: 584 | if zp_begin_index < candi_index_begin: 585 | if wl_zp[zp_end_index + 1].tag == "PU": 586 | sibNV = 1 587 | elif abs(zp_begin_index - candi_index_end) == 2: 588 | if candi_index_end < zp_begin_index: 589 | if wl_zp[zp_begin_index - 1].tag == "PU": 590 | sibNV = 1 591 | tmp_ones = [0] * 2 592 | tmp_ones[sibNV] = 1 593 | ifl += tmp_ones 594 | gram_match = 0 595 | if not canGram == 0: 596 | if canGram == zGram: 597 | gram_match = 1 598 | tmp_ones = [0] * 2 599 | tmp_ones[gram_match] = 1 600 | ifl += tmp_ones 601 | 602 | chv = get_head_verb(candi_index_begin, wl_candi) 603 | zhv = get_head_verb(zp_begin_index, wl_zp) 604 | 605 | ch = wl_candi[candi_index_end] 606 | hc = "None" 607 | pc = "None" 608 | pz = "None" 609 | if ch: 610 | hc = ch.word 611 | if zhv: 612 | pz = zhv.word 613 | if chv: 614 | pc = chv.word 615 | tags = candi_node.parent.tag.split("-") 616 | canGram = "None" 617 | if len(tags) == 2: 618 | if tags[1] == "SBJ": 619 | canGram = "SBJ" 620 | elif tags[1] == "OBJ": 621 | canGram = "OBJ" 622 | gc = canGram 623 | pcc = "None" 624 | for i in range(len(wl_zp) - 1, zp_end_index, -1): 625 | if wl_zp[i].tag.find("PU") >= 0: 626 | pcc = wl_zp[i].word 627 | break 628 | pc_pz = 0 629 | has = wd["%s_%s" % (hc, pcc)] 630 | if pc == pz: 631 | if canGram == "SBJ": 632 | pc_pz = 1 633 | elif canGram == "OBJ": 634 | pc_pz = 1 635 | else: 636 | pc_pz = 2 637 | tmp_ones = [0] * 3 638 | tmp_ones[pc_pz] = 1 639 | ifl += tmp_ones 640 | tmp_ones = [0] * 2 641 | tmp_ones[has] = 1 642 | ifl += tmp_ones 643 | return ifl 644 | 645 | 646 | # analysing data 647 | # 1. dataset tag 648 | # 2. Number of ZP, NP, Correct NP, Wrong NP 649 | # 3. Number of NP, Correct NP, Wrong NP for every ZP 650 | # 4. Distance of NP, Correct NP, Wrong NP for every ZP 651 | def analysis_data(train_generator): 652 | test_generator = DataGenerator("test", 256) 653 | data = {'train': train_generator.generate_data(), 'dev': train_generator.generate_dev_data(), 654 | 'test': test_generator.generate_data()} 655 | 656 | with open('results/data_analysis.txt', 'w') as f: 657 | for k, v in data.items(): 658 | f.write('{}\n'.format(k)) 659 | zp_num, np_num, correct_np_num, wrong_np_num = 0, 0, 0, 0 660 | np_num_l, correct_np_num_l, wrong_np_num_l = [], [], [] 661 | np_dis_l, correct_np_dis_l, wrong_np_dis_l = [], [], [] 662 | for d in v: 663 | zp_num += d['zp_pre'].shape[0] 664 | np_num += d['np_pre'].shape[0] 665 | correct_np_num += numpy.sum(d['result']) 666 | wrong_np_num += np_num - correct_np_num 667 | 668 | for s, e in d["s2e"]: 669 | if s == e: 670 | continue 671 | np_num_tmp = e - s 672 | correct_np_num_tmp = numpy.sum(d['result'][s:e]) 673 | wrong_np_num_tmp = np_num_tmp - correct_np_num_tmp 674 | 675 | np_num_l.append(np_num_tmp) 676 | correct_np_num_l.append(correct_np_num_tmp) 677 | wrong_np_num_l.append(wrong_np_num_tmp) 678 | 679 | np_dis_l_tmp = numpy.dot(d['fl'][:, :3], [0, 1, 2]) 680 | correct_np_dis_l_tmp = [j for i, j in zip(d['result'], np_dis_l_tmp) if i == 1] 681 | wrong_np_dis_l_tmp = [j for i, j in zip(d['result'], np_dis_l_tmp) if i == 0] 682 | np_dis_l.extend(np_dis_l_tmp) 683 | correct_np_dis_l.extend(correct_np_dis_l_tmp) 684 | wrong_np_dis_l.extend(wrong_np_dis_l_tmp) 685 | 686 | np_num_l = sorted(collections.Counter(np_num_l).items()) 687 | correct_np_num_l = sorted(collections.Counter(correct_np_num_l).items()) 688 | wrong_np_num_l = sorted(collections.Counter(wrong_np_num_l).items()) 689 | 690 | np_dis_l = sorted(collections.Counter(np_dis_l).items()) 691 | correct_np_dis_l = sorted(collections.Counter(correct_np_dis_l).items()) 692 | wrong_np_dis_l = sorted(collections.Counter(wrong_np_dis_l).items()) 693 | 694 | f.write('ZP Num: {}; NP Num: {}; Correct Num: {}; Wrong Num: {}\n'.format(zp_num, np_num, correct_np_num, 695 | wrong_np_num)) 696 | f.write('For ZPs:\nNP Num: {}\nCorrect NP Num: {}\nWrong NP Num: {}\n'.format(np_num_l, correct_np_num_l, 697 | wrong_np_num_l)) 698 | f.write('For NPs:\nNP Dis: {}\nCorrect NP Dis: {}\nWrong NP Dis: {}\n\n'.format(np_dis_l, correct_np_dis_l, 699 | wrong_np_dis_l)) 700 | 701 | plt.figure(figsize=(12.5, 7.5)) 702 | 703 | plt.subplot(2, 3, 1) 704 | plt.bar([a for a, b in np_num_l], [b for a, b in np_num_l]) 705 | plt.title('NP Num', fontsize=10) 706 | plt.subplot(2, 3, 2) 707 | plt.bar([a for a, b in correct_np_num_l], [b for a, b in correct_np_num_l]) 708 | plt.title('Correct NP Num', fontsize=10) 709 | plt.subplot(2, 3, 3) 710 | plt.bar([a for a, b in wrong_np_num_l], [b for a, b in wrong_np_num_l]) 711 | plt.title('Wrong NP Num', fontsize=10) 712 | 713 | plt.subplot(2, 3, 4) 714 | plt.bar([a for a, b in np_dis_l], [b for a, b in np_dis_l]) 715 | plt.title('NP Dis', fontsize=10) 716 | plt.subplot(2, 3, 5) 717 | plt.bar([a for a, b in correct_np_dis_l], [b for a, b in correct_np_dis_l]) 718 | plt.title('Correct NP Dis', fontsize=10) 719 | plt.subplot(2, 3, 6) 720 | plt.bar([a for a, b in wrong_np_dis_l], [b for a, b in wrong_np_dis_l]) 721 | plt.title('Wrong NP Dis', fontsize=10) 722 | 723 | plt.savefig('results/data_analysis.png') 724 | 725 | 726 | if __name__ == '__main__': 727 | # build data from raw OntoNotes data 728 | print 'Processing' 729 | generate_vector_data() 730 | generate_input_data() 731 | # split training data into dev and train, saved in ./data/train_data 732 | print 'Dividing' 733 | train_generator = DataGenerator("train", args.batch_size) 734 | train_generator.devide() 735 | save_f = file("./data/train_data", 'wb') 736 | cPickle.dump(train_generator, save_f, protocol=cPickle.HIGHEST_PROTOCOL) 737 | save_f.close() 738 | print 'Analysing' 739 | analysis_data(train_generator) 740 | -------------------------------------------------------------------------------- /data_generator.py: -------------------------------------------------------------------------------- 1 | # coding=utf8 2 | import argparse 3 | import cPickle 4 | import numpy 5 | import random 6 | 7 | DIR = "./data/" 8 | parser = argparse.ArgumentParser(description="Experiments\n") 9 | parser.add_argument("-data", default=DIR, type=str, help="saved vectorized data") 10 | parser.add_argument("-raw_data", default="./data/zp_data/", type=str, help="raw_data") 11 | parser.add_argument("-random_seed", default=0, type=int, help="random seed") 12 | 13 | args = parser.parse_args() 14 | 15 | 16 | class DataGenerator: 17 | def __init__(self, file_type, max_pair): 18 | data_path = args.data + file_type + "/" 19 | self.candi_vec = numpy.load(data_path + "candi_vec.npy") 20 | self.candi_vec_mask = numpy.load(data_path + "candi_vec_mask.npy") 21 | 22 | self.np_post = numpy.load(data_path + "np_post.npy") 23 | self.np_post_vec_mask = numpy.load(data_path + "np_post_mask.npy") 24 | self.np_pre = numpy.load(data_path + "np_pre.npy") 25 | self.np_pre_vec_mask = numpy.load(data_path + "np_pre_mask.npy") 26 | 27 | self.zp_post = numpy.load(data_path + "zp_post.npy") 28 | self.zp_post_vec_mask = numpy.load(data_path + "zp_post_mask.npy") 29 | self.zp_pre = numpy.load(data_path + "zp_pre.npy") 30 | self.zp_pre_vec_mask = numpy.load(data_path + "zp_pre_mask.npy") 31 | 32 | self.ifl_vec = numpy.load(data_path + "ifl_vec.npy") 33 | 34 | read_f = file(data_path + "zp_candi_pair_info", "rb") 35 | zp_candis_pair = cPickle.load(read_f) 36 | read_f.close() 37 | 38 | self.data_batch = [] 39 | zp_rein = [] 40 | candi_rein = [] 41 | this_target = [] 42 | this_result = [] 43 | s2e = [] 44 | for i in range(len(zp_candis_pair)): 45 | zpi, candis = zp_candis_pair[i] 46 | if len(candis) + len(candi_rein) > max_pair and len(candi_rein) > 0: 47 | ci_s = candi_rein[0] 48 | ci_e = candi_rein[-1] + 1 49 | zpi_s = zp_rein[0] 50 | zpi_e = zp_rein[-1] + 1 51 | this_batch = {} 52 | this_batch["zp_rein"] = numpy.array(zp_rein, dtype="int32") - zp_rein[0] 53 | this_batch["candi_rein"] = numpy.array(candi_rein, dtype="int32") - candi_rein[0] 54 | this_batch["target"] = numpy.array(this_target, dtype="int32") 55 | this_batch["result"] = numpy.array(this_result, dtype="int32") 56 | this_batch["zp_post"] = self.zp_post[zpi_s:zpi_e] 57 | this_batch["zp_pre"] = self.zp_pre[zpi_s:zpi_e] 58 | this_batch["zp_post_mask"] = self.zp_post_vec_mask[zpi_s:zpi_e] 59 | this_batch["zp_pre_mask"] = self.zp_pre_vec_mask[zpi_s:zpi_e] 60 | this_batch["candi"] = self.candi_vec[ci_s:ci_e] 61 | this_batch["candi_mask"] = self.candi_vec_mask[ci_s:ci_e] 62 | this_batch["np_post"] = self.np_post[ci_s:ci_e] 63 | this_batch["np_pre"] = self.np_pre[ci_s:ci_e] 64 | this_batch["np_post_mask"] = self.np_post_vec_mask[ci_s:ci_e] 65 | this_batch["np_pre_mask"] = self.np_pre_vec_mask[ci_s:ci_e] 66 | this_batch["fl"] = self.ifl_vec[ci_s:ci_e] 67 | # this_batch["infos"] = self.infos[ci_s:ci_e] 68 | this_batch["s2e"] = s2e 69 | correct_indexs, wrong_indexs, uni_correct_indexs, uni_wrong_indexs, correct_indexs1, correct_indexs2 = self.get_index( 70 | this_batch['s2e'], this_batch['result']) 71 | this_batch['cid'] = correct_indexs 72 | this_batch['wid'] = wrong_indexs 73 | this_batch['ucid'] = uni_correct_indexs 74 | this_batch['uwid'] = uni_wrong_indexs 75 | this_batch['cid1'] = correct_indexs1 76 | this_batch['cid2'] = correct_indexs2 77 | self.data_batch.append(this_batch) 78 | zp_rein = [] 79 | candi_rein = [] 80 | this_target = [] 81 | this_result = [] 82 | s2e = [] 83 | start = len(this_result) 84 | end = start 85 | for candii, res, tar in candis: 86 | zp_rein.append(zpi) 87 | candi_rein.append(candii) 88 | this_target.append(tar) 89 | this_result.append(res) 90 | end += 1 91 | s2e.append((start, end)) 92 | if len(candi_rein) > 0: 93 | ci_s = candi_rein[0] 94 | ci_e = candi_rein[-1] + 1 95 | zpi_s = zp_rein[0] 96 | zpi_e = zp_rein[-1] + 1 97 | this_batch = {} 98 | this_batch["zp_rein"] = numpy.array(zp_rein, dtype="int32") - zp_rein[0] 99 | this_batch["candi_rein"] = numpy.array(candi_rein, dtype="int32") - candi_rein[0] 100 | this_batch["target"] = numpy.array(this_target, dtype="int32") 101 | this_batch["result"] = numpy.array(this_result, dtype="int32") 102 | this_batch["zp_post"] = self.zp_post[zpi_s:zpi_e] 103 | this_batch["zp_pre"] = self.zp_pre[zpi_s:zpi_e] 104 | this_batch["zp_post_mask"] = self.zp_post_vec_mask[zpi_s:zpi_e] 105 | this_batch["zp_pre_mask"] = self.zp_pre_vec_mask[zpi_s:zpi_e] 106 | this_batch["candi"] = self.candi_vec[ci_s:ci_e] 107 | this_batch["candi_mask"] = self.candi_vec_mask[ci_s:ci_e] 108 | this_batch["np_post"] = self.np_post[ci_s:ci_e] 109 | this_batch["np_pre"] = self.np_pre[ci_s:ci_e] 110 | this_batch["np_post_mask"] = self.np_post_vec_mask[ci_s:ci_e] 111 | this_batch["np_pre_mask"] = self.np_pre_vec_mask[ci_s:ci_e] 112 | this_batch["fl"] = self.ifl_vec[ci_s:ci_e] 113 | # this_batch["infos"] = self.infos[ci_s:ci_e] 114 | this_batch["s2e"] = s2e 115 | correct_indexs, wrong_indexs, uni_correct_indexs, uni_wrong_indexs, correct_indexs1, correct_indexs2 = self.get_index( 116 | this_batch['s2e'], this_batch['result']) 117 | this_batch['cid'] = correct_indexs 118 | this_batch['wid'] = wrong_indexs 119 | this_batch['ucid'] = uni_correct_indexs 120 | this_batch['uwid'] = uni_wrong_indexs 121 | this_batch['cid1'] = correct_indexs1 122 | this_batch['cid2'] = correct_indexs2 123 | self.data_batch.append(this_batch) 124 | 125 | def get_index(self, s2e, result): 126 | correct_indexs, wrong_indexs, uni_correct_indexs, uni_wrong_indexs = [], [], [], [] 127 | correct_indexs1, correct_indexs2 = [], [] 128 | cnt = 0 129 | for s, e in s2e: 130 | if s == e: 131 | continue 132 | cur_label = result[s:e] 133 | correct_index = [i for i, ele in enumerate(cur_label) if ele == 1] 134 | wrong_index = [i for i, ele in enumerate(cur_label) if ele == 0] 135 | for cid in correct_index: 136 | for wid in wrong_index: 137 | correct_indexs.append(cid + cnt) 138 | wrong_indexs.append(wid + cnt) 139 | if len(wrong_index) == 0: 140 | for cid in correct_index: 141 | uni_correct_indexs.append(cid + cnt) 142 | if len(correct_index) == 0: 143 | for wid in wrong_index: 144 | uni_wrong_indexs.append(wid + cnt) 145 | for cid1 in correct_index: 146 | for cid2 in correct_index: 147 | correct_indexs1.append(cid1 + cnt) 148 | correct_indexs2.append(cid2 + cnt) 149 | cnt += e - s 150 | return correct_indexs, wrong_indexs, uni_correct_indexs, uni_wrong_indexs, correct_indexs1, correct_indexs2 151 | 152 | def devide(self, k=0.2): 153 | random.shuffle(self.data_batch) 154 | length = int(len(self.data_batch) * k) 155 | self.dev = self.data_batch[:length] 156 | self.train = self.data_batch[length:] 157 | self.data_batch = self.train 158 | 159 | def generate_data(self, shuffle=False): 160 | if shuffle: 161 | random.shuffle(self.data_batch) 162 | for data in self.data_batch: 163 | yield data 164 | 165 | def generate_dev_data(self, shuffle=False): 166 | if shuffle: 167 | random.shuffle(self.dev) 168 | for data in self.dev: 169 | yield data 170 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | # coding=utf8 2 | import sys 3 | import random 4 | import argparse 5 | import cPickle 6 | import numpy 7 | import torch 8 | import torch.optim as optim 9 | import torch.nn.functional as F 10 | from data_generator import DataGenerator 11 | from net import Network 12 | from utils import * 13 | 14 | 15 | DIR = "./data/" 16 | parser = argparse.ArgumentParser(description="Experiments\n") 17 | parser.add_argument("-data", default=DIR, type=str, help="saved vectorized data") 18 | parser.add_argument("-raw_data", default="./data/zp_data/", type=str, help="raw_data") 19 | 20 | parser.add_argument("-gpu", default=6, type=int, help="GPU number") 21 | parser.add_argument("-random_seed", default=0, type=int, help="random seed") 22 | 23 | parser.add_argument("-epoch_num", default=200, type=int, help="epoch num") 24 | parser.add_argument("-batch_size", default=256, type=int, help="batch size") 25 | parser.add_argument("-learning_rate", default=5e-5, type=float, help="learning rate") 26 | parser.add_argument("-l2_reg", default=1e-4, type=float, help="weight of L2 regularization term") 27 | parser.add_argument("-dropout", default=0.5, type=float, help="dropout rate") 28 | parser.add_argument("-embedding_size", default=36103, type=int, help="size of vocabulary") 29 | parser.add_argument("-embedding_dimension", default=100, type=int, help="dimension of embedding vectors") 30 | parser.add_argument("-hidden_dimension", default=256, type=int, help="dimension of hidden states") 31 | 32 | parser.add_argument("-margin", default=0.1, type=float, help="margin between correct and wrong candidates") 33 | parser.add_argument("-correct_bound", default=0.3, type=float, help="lower bound of correct candidates") 34 | parser.add_argument("-wrong_bound", default=0.4, type=float, help="upper bound of wrong candidates") 35 | 36 | args = parser.parse_args() 37 | 38 | random.seed(0) 39 | numpy.random.seed(0) 40 | torch.manual_seed(args.random_seed) 41 | torch.cuda.manual_seed(args.random_seed) 42 | torch.cuda.set_device(args.gpu) 43 | 44 | 45 | def net_copy(net, copy_from_net): 46 | mcp = list(net.parameters()) 47 | mp = list(copy_from_net.parameters()) 48 | n = len(mcp) 49 | for i in range(0, n): 50 | mcp[i].data[:] = mp[i].data[:] 51 | 52 | 53 | def main(): 54 | read_f = file("./data/train_data", "rb") 55 | train_generator = cPickle.load(read_f) 56 | read_f.close() 57 | read_f = file("./data/emb", "rb") 58 | embedding_matrix, _, _ = cPickle.load(read_f) 59 | read_f.close() 60 | test_generator = DataGenerator("test", args.batch_size) 61 | 62 | model = Network(args.embedding_size, args.embedding_dimension, embedding_matrix, args.hidden_dimension).cuda() 63 | best_model = Network(args.embedding_size, args.embedding_dimension, embedding_matrix, args.hidden_dimension).cuda() 64 | optimizer = optim.Adam(model.parameters(), lr=args.learning_rate, weight_decay=args.l2_reg) 65 | 66 | best_result = 0.0 67 | for echo in range(args.epoch_num): 68 | info = "[" + echo * ">" + " " * (args.epoch_num - echo) + "]" 69 | sys.stderr.write(info + "\r") 70 | cost1, cost2, cost, total_num = 0.0, 0.0, 0.0, 0 71 | for data in train_generator.generate_data(shuffle=True): 72 | zp_rep, npc_rep, np_rep, feature = model.forward(data, dropout=args.dropout) 73 | output = model.generate_score(zp_rep, npc_rep, np_rep, feature) 74 | optimizer.zero_grad() 75 | dis1 = output[data['wid']] - output[data['cid']] + args.margin 76 | dis2 = output[data['uwid']] - args.wrong_bound 77 | dis3 = args.correct_bound - output[data['ucid']] 78 | triplet_loss = torch.sum(dis1 * (dis1 > 0).cuda().float()) + torch.sum( 79 | dis2 * (dis2 > 0).cuda().float()) + torch.sum(dis3 * (dis3 > 0).cuda().float()) 80 | 81 | cos_sim_sum = torch.sum(1 - F.cosine_similarity(np_rep[data['cid1']], np_rep[data['cid2']])) 82 | sim_w = 0.5 83 | 84 | num = data["result"].shape[0] 85 | 86 | total_loss = triplet_loss + sim_w * cos_sim_sum 87 | total_loss.backward() 88 | 89 | cost += total_loss.item() * num 90 | cost1 += triplet_loss.item() * num 91 | cost2 += cos_sim_sum.item() * num 92 | total_num += num 93 | optimizer.step() 94 | train_re = evaluate_train(train_generator, model) 95 | dev_re, dev_cost = evaluate_dev(train_generator, model, args.margin) 96 | if dev_re > best_result: 97 | best_result = dev_re 98 | net_copy(best_model, model) 99 | test_re = evaluate_test(test_generator, model) 100 | print 'Epoch %s; Train Cost: %.4f, %.4f, %.4f; Train Result: %.4f; Dev Result: %.4f, %.4f; Test Result: %.4f' % ( 101 | echo, cost / total_num, cost1 / total_num, cost2 / total_num, train_re, dev_re, dev_cost, test_re) 102 | print >> sys.stderr 103 | torch.save(best_model, "./models/model") 104 | re = evaluate_test(test_generator, best_model) 105 | print "Performance on Test: F", re 106 | 107 | 108 | def evaluate_train(generator, model): 109 | pr = [] 110 | acc_num, total_num = 0, 0 111 | for data in generator.generate_data(): 112 | zp_rep, npc_rep, np_rep, feature = model.forward(data) 113 | output = model.generate_score(zp_rep, npc_rep, np_rep, feature) 114 | num = data["result"].shape[0] 115 | total_num += num 116 | 117 | output = output.data.cpu().numpy() 118 | for s, e in data["s2e"]: 119 | if s == e: 120 | continue 121 | pr.append((data["result"][s:e], output[s:e])) 122 | 123 | predict = [] 124 | for result, output in pr: 125 | index = -1 126 | pro = 0.0 127 | for i in range(len(output)): 128 | if output[i] > pro: 129 | index = i 130 | pro = output[i] 131 | predict.append(result[index]) 132 | return sum(predict) / float(len(predict)) 133 | 134 | def evaluate_dev(generator, model, margin): 135 | pr = [] 136 | acc_num, total_num, cost = 0, 0, 0.0 137 | for data in generator.generate_dev_data(): 138 | zp_rep, npc_rep, np_rep, feature = model.forward(data) 139 | output = model.generate_score(zp_rep, npc_rep, np_rep, feature) 140 | dis1 = output[data['wid']] - output[data['cid']] + margin 141 | dis2 = output[data['uwid']] - args.wrong_bound 142 | dis3 = args.correct_bound - output[data['ucid']] 143 | triplet_loss = torch.sum(dis1 * (dis1 > 0).cuda().float()) + torch.sum( 144 | dis2 * (dis2 > 0).cuda().float()) + torch.sum(dis3 * (dis3 > 0).cuda().float()) 145 | num = data["result"].shape[0] 146 | cost += triplet_loss.item() * num 147 | total_num += num 148 | 149 | output = output.data.cpu().numpy() 150 | for s, e in data["s2e"]: 151 | if s == e: 152 | continue 153 | pr.append((data["result"][s:e], output[s:e])) 154 | 155 | predict = [] 156 | for result, output in pr: 157 | index = -1 158 | pro = 0.0 159 | for i in range(len(output)): 160 | if output[i] > pro: 161 | index = i 162 | pro = output[i] 163 | predict.append(result[index]) 164 | return sum(predict) / float(len(predict)), cost / total_num 165 | 166 | 167 | def evaluate_test(generator, model, dataset_size=1713.0): 168 | pr = [] 169 | acc_num, total_num = 0, 0 170 | for data in generator.generate_data(): 171 | zp_rep, npc_rep, np_rep, feature = model.forward(data) 172 | output = model.generate_score(zp_rep, npc_rep, np_rep, feature) 173 | 174 | num = data["result"].shape[0] 175 | total_num += num 176 | 177 | output = output.data.cpu().numpy() 178 | for s, e in data["s2e"]: 179 | if s == e: 180 | continue 181 | pr.append((data["result"][s:e], output[s:e])) 182 | 183 | predict = [] 184 | for result, output in pr: 185 | index = -1 186 | pro = 0.0 187 | for i in range(len(output)): 188 | if output[i] > pro: 189 | index = i 190 | pro = output[i] 191 | predict.append(result[index]) 192 | 193 | p = sum(predict) / float(len(predict)) 194 | r = sum(predict) / dataset_size 195 | f = 0.0 if (p == 0 or r == 0) else (2.0 / (1.0 / p + 1.0 / r)) 196 | return f 197 | 198 | 199 | if __name__ == "__main__": 200 | main() 201 | -------------------------------------------------------------------------------- /net.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import numpy 3 | import torch 4 | import torch.nn as nn 5 | import torch.nn.functional as F 6 | 7 | use_cuda = torch.cuda.is_available() 8 | FloatTensor = torch.cuda.FloatTensor if use_cuda else torch.FloatTensor 9 | LongTensor = torch.cuda.LongTensor if use_cuda else torch.LongTensor 10 | ByteTensor = torch.cuda.ByteTensor if use_cuda else torch.ByteTensor 11 | Tensor = FloatTensor 12 | 13 | 14 | class Network(nn.Module): 15 | def __init__(self, embedding_size, embedding_dimension, embedding_matrix, hidden_dimension): 16 | super(Network, self).__init__() 17 | self.hidden_dimension = hidden_dimension 18 | 19 | self.embedding_layer = nn.Embedding(embedding_size, embedding_dimension) 20 | self.embedding_layer.weight.data.copy_(torch.from_numpy(embedding_matrix)) 21 | 22 | self.inpt_layer_context_pre = nn.Linear(embedding_dimension, hidden_dimension) 23 | self.hidden_layer_context_pre = nn.Linear(hidden_dimension, hidden_dimension, bias=False) 24 | self.inpt_layer_context_post = nn.Linear(embedding_dimension, hidden_dimension) 25 | self.hidden_layer_context_post = nn.Linear(hidden_dimension, hidden_dimension, bias=False) 26 | 27 | self.inpt_layer_np = nn.Linear(embedding_dimension, hidden_dimension) 28 | self.hidden_layer_np = nn.Linear(hidden_dimension, hidden_dimension) 29 | 30 | self.selfAttentionA = nn.Linear(hidden_dimension, hidden_dimension, bias=False) 31 | self.selfAttentionB = nn.Linear(hidden_dimension, 1, bias=False) 32 | 33 | nh = hidden_dimension * 2 34 | self.zp_npc_layer = nn.Linear(hidden_dimension, nh) 35 | self.np_layer = nn.Linear(hidden_dimension, nh) 36 | self.nps_layer = nn.Linear(nh, nh) 37 | self.feature_layer = nn.Linear(61, nh) 38 | self.representation_hidden_layer = nn.Linear(nh, nh) 39 | self.output_layer = nn.Linear(nh, 1) 40 | self.activate = nn.Tanh() 41 | self.relu = nn.ReLU() 42 | self.softmax_layer = nn.Softmax() 43 | 44 | self.bi = nn.Linear(hidden_dimension, hidden_dimension) 45 | self.fusion = nn.Linear(hidden_dimension * 2, hidden_dimension) 46 | 47 | def generate_score(self, zp, npc, np, feature): 48 | x = self.zp_npc_layer(zp) + self.zp_npc_layer(npc) + self.np_layer(np) + self.feature_layer(feature) 49 | x = self.activate(x) 50 | x = self.representation_hidden_layer(x) 51 | x = self.activate(x) 52 | x = self.output_layer(x) 53 | return x 54 | 55 | def initHidden(self, batch=1): 56 | if use_cuda: 57 | return torch.tensor(numpy.zeros((batch, self.hidden_dimension))).type(torch.cuda.FloatTensor) 58 | return torch.tensor(numpy.zeros((batch, self.hidden_dimension))).type(torch.FloatTensor) 59 | 60 | def get_attention(self, inpt): 61 | return self.selfAttentionB(self.activate(self.selfAttentionA(inpt))) 62 | 63 | def forward_context_pre(self, word_index, hiden_layer, dropout=0.0): 64 | dropout_layer = nn.Dropout(dropout) 65 | word_embedding = self.embedding_layer(word_index) 66 | word_embedding = dropout_layer(word_embedding) 67 | this_hidden = self.inpt_layer_context_pre(word_embedding) + self.hidden_layer_context_pre(hiden_layer) 68 | this_hidden = self.activate(this_hidden) 69 | this_hidden = dropout_layer(this_hidden) 70 | return this_hidden 71 | 72 | def forward_context_post(self, word_index, hiden_layer, dropout=0.0): 73 | dropout_layer = nn.Dropout(dropout) 74 | word_embedding = self.embedding_layer(word_index) 75 | word_embedding = dropout_layer(word_embedding) 76 | this_hidden = self.inpt_layer_context_post(word_embedding) + self.hidden_layer_context_post(hiden_layer) 77 | this_hidden = self.activate(this_hidden) 78 | this_hidden = dropout_layer(this_hidden) 79 | return this_hidden 80 | 81 | def forward_np(self, word_index, hiden_layer, dropout=0.0): 82 | dropout_layer = nn.Dropout(dropout) 83 | word_embedding = self.embedding_layer(word_index) 84 | word_embedding = dropout_layer(word_embedding) 85 | this_hidden = self.inpt_layer_np(word_embedding) + self.hidden_layer_np(hiden_layer) 86 | this_hidden = self.activate(this_hidden) 87 | this_hidden = dropout_layer(this_hidden) 88 | return this_hidden 89 | 90 | def forward(self, data, dropout=0.0): 91 | zp_rein = torch.tensor(data["zp_rein"]).type(torch.cuda.LongTensor) 92 | zp_pre = torch.tensor(data["zp_pre"]).type(torch.cuda.LongTensor) 93 | zp_pre_mask = torch.tensor(data["zp_pre_mask"]).type(torch.cuda.FloatTensor) 94 | zp_post = torch.tensor(data["zp_post"]).type(torch.cuda.LongTensor) 95 | zp_post_mask = torch.tensor(data["zp_post_mask"]).type(torch.cuda.FloatTensor) 96 | candi_rein = torch.tensor(data["candi_rein"]).type(torch.cuda.LongTensor) 97 | np_pre = torch.tensor(data["np_pre"]).type(torch.cuda.LongTensor) 98 | np_pre_mask = torch.tensor(data["np_pre_mask"]).type(torch.cuda.FloatTensor) 99 | np_post = torch.tensor(data["np_post"]).type(torch.cuda.LongTensor) 100 | np_post_mask = torch.tensor(data["np_post_mask"]).type(torch.cuda.FloatTensor) 101 | candi = torch.tensor(data["candi"]).type(torch.cuda.LongTensor) 102 | candi_mask = torch.tensor(data["candi_mask"]).type(torch.cuda.FloatTensor) 103 | feature = torch.tensor(data["fl"]).type(torch.cuda.FloatTensor) 104 | 105 | zp_pre = torch.transpose(zp_pre, 0, 1) 106 | mask_zp_pre = torch.transpose(zp_pre_mask, 0, 1) 107 | hidden_zp_pre = self.initHidden() 108 | hiddens_zp_pre = [] 109 | for i in range(len(mask_zp_pre)): 110 | hidden_zp_pre = self.forward_context_pre(zp_pre[i], hidden_zp_pre, dropout=dropout) * torch.transpose(mask_zp_pre[i:i + 1], 111 | 0, 1) 112 | hiddens_zp_pre.append(hidden_zp_pre) 113 | hiddens_zp_pre = torch.cat(hiddens_zp_pre, 1) 114 | hiddens_zp_pre = hiddens_zp_pre.view(-1, len(mask_zp_pre), self.hidden_dimension) 115 | 116 | zp_post = torch.transpose(zp_post, 0, 1) 117 | mask_zp_post = torch.transpose(zp_post_mask, 0, 1) 118 | hidden_zp_post = self.initHidden() 119 | hiddens_zp_post = [] 120 | for i in range(len(mask_zp_post)): 121 | hidden_zp_post = self.forward_context_post(zp_post[i], hidden_zp_post, dropout=dropout) * torch.transpose( 122 | mask_zp_post[i:i + 1], 123 | 0, 1) 124 | hiddens_zp_post.append(hidden_zp_post) 125 | hiddens_zp_post = torch.cat(hiddens_zp_post, 1) 126 | hiddens_zp_post = hiddens_zp_post.view(-1, len(mask_zp_post), self.hidden_dimension) 127 | 128 | np_pre = torch.transpose(np_pre, 0, 1) 129 | mask_np_pre = torch.transpose(np_pre_mask, 0, 1) 130 | hidden_np_pre = self.initHidden() 131 | hiddens_np_pre = [] 132 | for i in range(len(mask_np_pre)): 133 | hidden_np_pre = self.forward_context_pre(np_pre[i], hidden_np_pre, dropout=dropout) * torch.transpose(mask_np_pre[i:i + 1], 134 | 0, 1) 135 | hiddens_np_pre.append(hidden_np_pre) 136 | hiddens_np_pre = torch.cat(hiddens_np_pre, 1) 137 | hiddens_np_pre = hiddens_np_pre.view(-1, len(mask_np_pre), self.hidden_dimension) 138 | 139 | np_post = torch.transpose(np_post, 0, 1) 140 | mask_np_post = torch.transpose(np_post_mask, 0, 1) 141 | hidden_np_post = self.initHidden() 142 | hiddens_np_post = [] 143 | for i in range(len(mask_np_post)): 144 | hidden_np_post = self.forward_context_post(np_post[i], hidden_np_post, dropout=dropout) * torch.transpose( 145 | mask_np_post[i:i + 1], 146 | 0, 1) 147 | hiddens_np_post.append(hidden_np_post) 148 | hiddens_np_post = torch.cat(hiddens_np_post, 1) 149 | hiddens_np_post = hiddens_np_post.view(-1, len(mask_np_post), self.hidden_dimension) 150 | 151 | hiddens_zp = torch.cat([hiddens_zp_pre, hiddens_zp_post], 1) 152 | hiddens_np = torch.cat([hiddens_np_pre, hiddens_np_post], 1) 153 | zp_mask = torch.cat([zp_pre_mask, zp_post_mask], 1) 154 | zp_mask = zp_mask[zp_rein] 155 | np_mask = torch.cat([np_pre_mask, np_post_mask], 1) 156 | np_mask = np_mask[candi_rein] 157 | hiddens_zp = hiddens_zp[zp_rein] 158 | hiddens_np = hiddens_np[candi_rein] 159 | 160 | Att = torch.bmm(self.relu(self.bi(hiddens_zp)), self.relu(self.bi(hiddens_np)).transpose(1, 2)) 161 | 162 | # Mean 163 | Att = Att - (1 - zp_mask.unsqueeze(2)) * 1e12 164 | Att = Att - (1 - np_mask.unsqueeze(1)) * 1e12 165 | Att1 = F.softmax(Att, 2) 166 | Att2 = F.softmax(Att, 1).transpose(1, 2) 167 | bi_zps = torch.bmm(Att1, hiddens_np) 168 | bi_nps = torch.bmm(Att2, hiddens_zp) 169 | 170 | # Fusion 171 | zps = hiddens_zp + bi_zps 172 | nps = hiddens_np + bi_nps 173 | 174 | # self Attention 175 | self_Att = self.get_attention(zps) 176 | self_Att = self_Att - (1 - zp_mask.unsqueeze(-1)) * 1e12 177 | self_Att1 = F.softmax(self_Att, 1) 178 | average_results = torch.matmul(torch.transpose(zps, 1, 2), self_Att1) 179 | zp_rep = torch.sum(average_results, 2) 180 | 181 | self_Att = self.get_attention(nps) 182 | self_Att = self_Att - (1 - np_mask.unsqueeze(-1)) * 1e12 183 | self_Att2 = F.softmax(self_Att, 1) 184 | average_results = torch.matmul(torch.transpose(nps, 1, 2), self_Att2) 185 | npc_rep = torch.sum(average_results, 2) 186 | 187 | candi = torch.transpose(candi, 0, 1) 188 | mask_candi = torch.transpose(candi_mask, 0, 1) 189 | hidden_candi = self.initHidden() 190 | hiddens_candi = [] 191 | for i in range(len(mask_candi)): 192 | hidden_candi = self.forward_np(candi[i], hidden_candi, dropout=dropout) * torch.transpose( 193 | mask_candi[i:i + 1], 0, 1) 194 | hiddens_candi.append(hidden_candi) 195 | hiddens_candi = torch.cat(hiddens_candi, 1) 196 | hiddens_candi = hiddens_candi.view(-1, len(mask_candi), self.hidden_dimension) 197 | hiddens_candi = hiddens_candi[candi_rein] 198 | 199 | Att = torch.bmm(self.relu(self.bi(hiddens_np)), self.relu(self.bi(hiddens_candi)).transpose(1, 2)) 200 | Att = Att * np_mask.unsqueeze(2) 201 | Att = Att * candi_mask.unsqueeze(1) 202 | Att_np = torch.sum(Att, 1) / (torch.sum(np_mask, -1).unsqueeze(-1) + 1e-12) 203 | Att_np = Att_np - (1 - candi_mask) * 1e12 204 | Att_np = F.softmax(Att_np, 1).unsqueeze(-1) 205 | average_results = hiddens_candi * Att_np 206 | np_rep = torch.sum(average_results, 1) 207 | 208 | return zp_rep, npc_rep, np_rep, feature 209 | -------------------------------------------------------------------------------- /parse_analysis.py: -------------------------------------------------------------------------------- 1 | #coding=utf8 2 | import sys 3 | import os 4 | import re 5 | 6 | class Node: 7 | tag = None 8 | parent = None 9 | index = -1 10 | word = "" 11 | child = [] 12 | right = None 13 | left = None 14 | def __init__(self,parent=None,word="",tag="",index=-1): 15 | self.parent = parent 16 | self.word = word 17 | self.tag = tag 18 | self.child = [] 19 | self.index = index 20 | self.right = None 21 | self.left = None 22 | def has_child(self,n): 23 | if n in self.child: 24 | return True 25 | return False 26 | def add_child(self,child): 27 | self.child.append(child) 28 | def get_leaf(self): 29 | nl = [] 30 | for c in self.child: 31 | if c.index >= 0: 32 | nl.append(c) 33 | else: 34 | nl += c.get_leaf() 35 | return nl 36 | def get_pub_node(self,node): 37 | if not node: 38 | return None 39 | father = node.parent 40 | while True: 41 | if not father:break 42 | sf = self.parent 43 | while True: 44 | if not sf:break 45 | if sf == father: 46 | return father 47 | sf = sf.parent 48 | father = father.parent 49 | return None 50 | 51 | class Stack: 52 | items = [] 53 | def __init__(self,items=[]): 54 | self.items = items 55 | def push(self,item): 56 | self.items.append(item) 57 | def size(self): 58 | return len(self.items) 59 | def pop(self): 60 | if len(self.items) > 0: 61 | last = self.items[-1] 62 | self.items = self.items[:-1] 63 | return last 64 | else: 65 | return None 66 | def last(self): 67 | if len(self.items) > 0: 68 | return self.items[-1] 69 | else: 70 | return None 71 | def combine(self): 72 | return self.items 73 | 74 | def print_node_list(nl): 75 | for n in nl: 76 | if n.parent: 77 | print "******" 78 | print n.index,n.word,n.tag,n.parent.tag 79 | print "child:" 80 | for q in n.child: 81 | print q.tag, 82 | print 83 | else: 84 | print "******" 85 | print n.index,n.word,n.tag,"None" 86 | print "child:" 87 | for q in n.child: 88 | print q.tag, 89 | print 90 | 91 | def buildTree(parse): 92 | stack = Stack([]) 93 | item = "" 94 | parent = None 95 | left = None 96 | right = None 97 | nl = [] 98 | wl = [] 99 | word_index = 0 100 | for letter in parse.decode("utf8"): 101 | if letter == "(": 102 | if len(item.strip()) > 0: 103 | item = item.strip().encode("utf8") 104 | item = item.split(" ") 105 | word = "" 106 | tag = "" 107 | index = -1 108 | if len(item) == 2: 109 | #word 110 | tag = item[0].strip() 111 | word = item[1].strip() 112 | index = word_index 113 | word_index += 1 114 | else: 115 | tag = item[0].strip() 116 | node = Node(parent,word,tag,index) 117 | 118 | if len(item) == 2: 119 | node.left = left 120 | wl.append(node) 121 | if node.left: 122 | node.left.right = node 123 | left = node 124 | 125 | if node.parent: 126 | node.parent.add_child(node) 127 | stack.push(parent) 128 | parent = node 129 | nl.append(node) 130 | item = "" 131 | elif letter == ")": 132 | if len(item.strip()) > 0: 133 | item = item.strip().encode("utf8") 134 | item = item.split(" ") 135 | word = "" 136 | tag = "" 137 | index = -1 138 | if len(item) == 2: 139 | #word 140 | tag = item[0].strip() 141 | word = item[1].strip() 142 | index = word_index 143 | word_index += 1 144 | else: 145 | tag = item[0].strip() 146 | node = Node(parent,word,tag,index) 147 | 148 | if len(item) == 2: 149 | node.left = left 150 | wl.append(node) 151 | if node.left: 152 | node.left.right = node 153 | left = node 154 | 155 | if node.parent: 156 | node.parent.add_child(node) 157 | nl.append(node) 158 | item = "" 159 | else: 160 | last = stack.pop() 161 | parent = last 162 | else: 163 | item += letter 164 | return nl,wl 165 | -------------------------------------------------------------------------------- /properties_loader.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | def read_pros(fil): 4 | f = open(fil) 5 | d = {} 6 | while True: 7 | line = f.readline() 8 | if not line:break 9 | line = line.strip() 10 | if len(line) == 0 or line.startswith("#"): 11 | continue 12 | line = line.split("=") 13 | assert len(line) == 2 14 | 15 | name = line[0].strip() 16 | value = eval(line[1].strip()) 17 | d[name] = value 18 | 19 | f.close() 20 | return d 21 | -------------------------------------------------------------------------------- /utils.py: -------------------------------------------------------------------------------- 1 | # coding=utf8 2 | import sys 3 | import os 4 | import json 5 | import random 6 | import numpy 7 | import subprocess 8 | import shutil 9 | 10 | import cPickle 11 | 12 | sys.setrecursionlimit(1000000) 13 | 14 | random.seed(0) 15 | 16 | 17 | def sample_action(action_probability): 18 | ac = action_probability 19 | ac = ac / ac.sum() 20 | action = numpy.random.choice(numpy.arange(len(ac)), p=ac) 21 | return action 22 | 23 | 24 | def choose_action(action_probability): 25 | ac_list = list(action_probability) 26 | action = ac_list.index(max(ac_list)) 27 | return action 28 | 29 | 30 | # basic utils 31 | 32 | def load_pickle(fname): 33 | with open(fname) as f: 34 | return cPickle.load(f) 35 | 36 | 37 | def write_pickle(o, fname): 38 | with open(fname, 'w') as f: 39 | cPickle.dump(o, f, -1) 40 | 41 | 42 | def load_json_lines(fname): 43 | with open(fname) as f: 44 | for line in f: 45 | yield json.loads(line) 46 | 47 | 48 | def lines_in_file(fname): 49 | return int(subprocess.check_output( 50 | ['wc', '-l', fname]).strip().split()[0]) 51 | 52 | 53 | def mkdir(path): 54 | if not os.path.exists(path): 55 | os.makedirs(path) 56 | 57 | 58 | def rmkdir(path): 59 | if os.path.exists(path): 60 | shutil.rmtree(path) 61 | os.makedirs(path) 62 | 63 | 64 | def aa(): 65 | return 0 66 | 67 | 68 | def get_file_name(path, dir_list): 69 | if os.path.isfile(path): 70 | dir_list.append(path) 71 | elif os.path.isdir(path): 72 | for item in os.listdir(path): 73 | itemsrc = os.path.join(path, item) 74 | get_file_name(itemsrc, dir_list) 75 | return dir_list 76 | --------------------------------------------------------------------------------