diff --git a/models/match/multiview-simnet/config.yaml b/models/match/multiview-simnet/config.yaml index d6e0af5b568280bf55480eae8d209cc3dd771903..9c418fe8430f0a204b4a44bec01bcfb3e29c1346 100755 --- a/models/match/multiview-simnet/config.yaml +++ b/models/match/multiview-simnet/config.yaml @@ -18,12 +18,12 @@ workspace: "models/match/multiview-simnet" # list of dataset dataset: - name: dataset_train # name of dataset to distinguish different datasets - batch_size: 2 + batch_size: 128 type: DataLoader # or QueueDataset data_path: "{workspace}/data/train" - sparse_slots: "1 2 3" + sparse_slots: "0 1 2" - name: dataset_infer # name - batch_size: 2 + batch_size: 1 type: DataLoader # or QueueDataset data_path: "{workspace}/data/test" sparse_slots: "1 2" @@ -34,17 +34,17 @@ hyper_parameters: class: Adam learning_rate: 0.0001 strategy: async - query_encoder: "bow" - title_encoder: "bow" + query_encoder: "gru" + title_encoder: "gru" query_encode_dim: 128 title_encode_dim: 128 - sparse_feature_dim: 1000001 + sparse_feature_dim: 1439 embedding_dim: 128 hidden_size: 128 margin: 0.1 # select runner by name -mode: train_runner +mode: [train_runner,infer_runner] # config of each runner. # runner is a kind of paddle training class, which wraps the train/infer process. runner: @@ -62,12 +62,14 @@ runner: save_inference_fetch_varnames: [] # fetch vars of save inference init_model_path: "" # load model path print_interval: 1 + phases: phase1 - name: infer_runner class: infer # device to run training or infer device: cpu print_interval: 1 - init_model_path: "increment/0" # load model path + init_model_path: "increment/1" # load model path + phases: phase2 # runner will run all the phase in each epoch phase: @@ -75,7 +77,7 @@ phase: model: "{workspace}/model.py" # user-defined model dataset_name: dataset_train # select dataset by name thread_num: 1 -#- name: phase2 -# model: "{workspace}/model.py" # user-defined model -# dataset_name: dataset_infer # select dataset by name -# thread_num: 1 +- name: phase2 + model: "{workspace}/model.py" # user-defined model + dataset_name: dataset_infer # select dataset by name + thread_num: 1 diff --git a/models/match/multiview-simnet/data/preprocess.py b/models/match/multiview-simnet/data/preprocess.py new file mode 100644 index 0000000000000000000000000000000000000000..414281150661a016cb83a055ac82837a58ccdb32 --- /dev/null +++ b/models/match/multiview-simnet/data/preprocess.py @@ -0,0 +1,128 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#encoding=utf-8 + +import os +import sys +import numpy as np +import random + +f = open("./zhidao", "r") +lines = f.readlines() +f.close() + +#建立字典 +word_dict = {} +for line in lines: + line = line.strip().split("\t") + text = line[0].split(" ") + line[1].split(" ") + for word in text: + if word in word_dict: + continue + else: + word_dict[word] = len(word_dict) + 1 + +f = open("./zhidao", "r") +lines = f.readlines() +f.close() + +lines = [line.strip().split("\t") for line in lines] + +#建立以query为key,以负例为value的字典 +neg_dict = {} +for line in lines: + if line[2] == "0": + if line[0] in neg_dict: + neg_dict[line[0]].append(line[1]) + else: + neg_dict[line[0]] = [line[1]] + +#建立以query为key,以正例为value的字典 +pos_dict = {} +for line in lines: + if line[2] == "1": + if line[0] in pos_dict: + pos_dict[line[0]].append(line[1]) + else: + pos_dict[line[0]] = [line[1]] + +#划分训练集和测试集 +query_list = list(pos_dict.keys()) +#print(len(query_list)) +random.shuffle(query_list) +train_query = query_list[:90] +test_query = query_list[90:] + +#获得训练集 +train_set = [] +for query in train_query: + for pos in pos_dict[query]: + if query not in neg_dict: + continue + for neg in neg_dict[query]: + train_set.append([query, pos, neg]) +random.shuffle(train_set) + +#获得测试集 +test_set = [] +for query in test_query: + for pos in pos_dict[query]: + test_set.append([query, pos, 1]) + if query not in neg_dict: + continue + for neg in neg_dict[query]: + test_set.append([query, neg, 0]) +random.shuffle(test_set) + +#训练集中的query,pos,neg转化格式 +f = open("train.txt", "w") +for line in train_set: + query = line[0].strip().split(" ") + pos = line[1].strip().split(" ") + neg = line[2].strip().split(" ") + query_list = [] + for word in query: + query_list.append(word_dict[word]) + pos_list = [] + for word in pos: + pos_list.append(word_dict[word]) + neg_list = [] + for word in neg: + neg_list.append(word_dict[word]) + f.write(' '.join(["0:" + str(x) for x in query_list]) + " " + ' '.join([ + "1:" + str(x) for x in pos_list + ]) + " " + ' '.join(["2:" + str(x) for x in neg_list]) + "\n") +f.close() + +#测试集中的query和pos转化格式 +f = open("test.txt", "w") +fa = open("label.txt", "w") +fb = open("testquery.txt", "w") +for line in test_set: + query = line[0].strip().split(" ") + pos = line[1].strip().split(" ") + label = line[2] + query_list = [] + for word in query: + query_list.append(word_dict[word]) + pos_list = [] + for word in pos: + pos_list.append(word_dict[word]) + f.write(' '.join(["0:" + str(x) for x in query_list]) + " " + ' '.join( + ["1:" + str(x) for x in pos_list]) + "\n") + fa.write(str(label) + "\n") + fb.write(','.join([str(x) for x in query_list]) + "\n") +f.close() +fa.close() +fb.close() diff --git a/models/match/multiview-simnet/data/test/test.txt b/models/match/multiview-simnet/data/test/test.txt index cfb0675ff714459bc47d1e54bb1c707770238296..a9691d88873bf334ad9dddf125a115d3ccb692f4 100755 --- a/models/match/multiview-simnet/data/test/test.txt +++ b/models/match/multiview-simnet/data/test/test.txt @@ -1,10 +1,104 @@ -224289:0 126379:0 284519:0 549329:0 750666:0 393772:0 586898:0 736887:0 48785:0 906517:0 229162:1 483485:1 739835:1 29957:1 694497:1 997508:1 556876:1 717791:1 232176:1 430356:1 -366182:0 82062:0 708883:0 949128:0 798964:0 639103:0 409033:0 79301:0 405607:0 342616:0 61552:1 560547:1 3760:1 754734:1 98496:1 472427:1 979596:1 750283:1 492028:1 801383:1 -969571:0 405187:0 756217:0 563640:0 572168:0 881952:0 446260:0 692177:0 994140:0 485393:0 509081:1 297377:1 465399:1 934708:1 430949:1 135651:1 484531:1 385306:1 463957:1 996004:1 -436320:0 423131:0 963969:0 78345:0 879550:0 458203:0 684397:0 956202:0 989802:0 526101:0 852446:1 182545:1 625656:1 674856:1 422648:1 74100:1 48372:1 850830:1 336087:1 178251:1 -242683:0 118677:0 20731:0 970617:0 355890:0 739613:0 926695:0 963639:0 201043:0 611907:0 115309:1 310984:1 615584:1 638886:1 575934:1 889389:1 974807:1 570987:1 532482:1 911925:1 -954007:0 122623:0 168195:0 348901:0 217880:0 84759:0 925763:0 436382:0 573742:0 942921:0 553377:1 835046:1 137907:1 933870:1 766585:1 48483:1 543079:1 889467:1 521705:1 906676:1 -798690:0 617323:0 553266:0 232924:0 159461:0 404822:0 52992:0 364854:0 913876:0 547974:0 559472:1 748595:1 71793:1 357331:1 606888:1 477051:1 291481:1 89363:1 503881:1 423029:1 -228207:0 785250:0 661149:0 803304:0 478781:0 495202:0 804509:0 273065:0 26123:0 810840:0 801871:1 146772:1 421009:1 752344:1 946358:1 531668:1 5771:1 191294:1 627329:1 434664:1 -984628:0 762075:0 505288:0 48519:0 72492:0 26568:0 684085:0 613095:0 781547:0 895829:0 280541:1 903234:1 708065:1 386658:1 331060:1 3693:1 279760:1 459579:1 423552:1 962594:1 -674172:0 39271:0 646093:0 757969:0 553251:0 734960:0 967186:0 856940:0 617246:0 376452:0 113050:1 472707:1 975057:1 865095:1 155824:1 389921:1 205520:1 513667:1 163588:1 953463:1 +0:908 0:159 0:909 0:910 0:109 1:911 1:159 1:909 1:910 1:109 +0:210 0:10 0:211 0:14 0:212 1:211 1:210 1:32 1:148 1:212 1:48 1:65 1:65 1:211 1:210 1:33 1:213 1:214 1:48 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:84 1:79 1:80 1:81 1:13 1:78 1:1 1:692 1:144 1:85 1:48 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:84 1:75 1:83 1:78 1:86 1:270 1:85 1:48 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:78 1:79 1:80 1:235 1:144 1:236 1:169 1:237 1:138 1:48 1:22 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:84 1:227 1:228 1:13 1:75 1:229 1:80 1:81 1:4 1:78 1:14 1:39 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:75 1:110 1:4 1:111 1:113 1:68 1:21 1:22 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:75 1:110 1:4 1:111 1:176 1:113 1:68 1:1357 +0:728 0:729 0:509 0:510 0:75 0:68 0:730 0:16 0:731 0:245 1:1105 1:732 1:729 1:509 1:510 1:75 1:68 1:730 1:16 1:731 1:22 +0:155 0:837 0:838 0:839 1:155 1:838 1:1296 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:75 1:110 1:4 1:111 1:113 1:68 1:21 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:83 1:100 1:79 1:81 1:4 1:86 1:82 1:94 1:84 1:85 1:48 1:22 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:75 1:110 1:113 1:68 1:114 1:21 1:22 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:167 1:168 1:13 1:80 1:81 1:144 1:82 1:169 1:170 1:171 1:172 1:148 1:173 1:174 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:84 1:449 1:450 1:80 1:10 1:451 1:13 1:452 1:453 1:6 1:85 1:168 1:81 1:4 1:78 1:22 1:22 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:75 1:110 1:4 1:111 1:230 1:113 1:68 1:114 1:13 1:144 1:113 1:68 1:114 +0:155 0:837 0:838 0:839 1:1371 1:155 1:578 1:838 1:21 1:839 1:22 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:79 1:80 1:81 1:86 1:172 1:83 1:170 1:138 1:48 +0:91 0:421 0:104 0:695 0:96 0:696 0:697 1:421 1:104 1:698 1:67 1:96 1:696 +0:222 0:223 0:224 0:225 0:67 0:96 1:624 1:1238 1:222 1:223 1:224 1:67 1:96 +0:210 0:10 0:211 0:14 0:212 1:211 1:614 1:214 1:86 1:82 1:48 1:65 1:65 1:155 1:212 +0:91 0:421 0:104 0:695 0:96 0:696 0:697 1:421 1:104 1:1406 1:1407 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:75 1:110 1:1222 1:116 1:113 1:68 1:22 +0:91 0:421 0:104 0:695 0:96 0:696 0:697 1:421 1:104 1:695 1:96 1:696 1:1128 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:75 1:233 1:1350 1:4 1:1074 1:113 1:68 1:21 1:70 1:22 +0:222 0:223 0:224 0:225 0:67 0:96 1:222 1:223 1:224 1:419 1:96 1:1054 1:1055 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:167 1:79 1:80 1:81 1:86 1:82 1:83 1:84 1:138 1:48 1:22 +0:222 0:223 0:224 0:225 0:67 0:96 1:222 1:223 1:224 1:67 1:96 +0:222 0:223 0:224 0:225 0:67 0:96 1:222 1:226 1:223 1:224 1:67 1:96 +0:210 0:10 0:211 0:14 0:212 1:210 1:211 1:32 1:4 1:474 1:637 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:84 1:1 1:1211 1:178 1:78 1:13 1:79 1:80 1:81 1:14 1:85 1:22 +0:421 0:456 0:153 0:152 0:159 0:457 1:421 1:920 1:456 1:153 1:152 1:14 1:921 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:75 1:110 1:4 1:111 1:144 1:113 1:68 1:115 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:1106 1:78 1:1107 1:13 1:170 1:1108 1:13 1:1109 1:75 1:79 1:80 1:81 1:13 1:177 1:85 1:577 1:78 1:32 1:170 1:86 1:82 1:48 1:22 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:135 1:78 1:91 1:79 1:78 1:136 1:81 1:4 1:137 1:86 1:82 1:83 1:84 1:138 1:48 +0:421 0:456 0:153 0:152 0:159 0:457 1:153 1:421 1:456 1:152 1:475 1:68 1:476 +0:155 0:837 0:838 0:839 1:155 1:838 1:839 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:576 1:168 1:80 1:81 1:13 1:86 1:80 1:83 1:170 1:48 1:22 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:1070 1:78 1:33 1:67 1:79 1:121 1:80 1:81 1:276 1:162 1:1071 1:1072 1:103 1:13 1:167 1:1073 1:164 1:86 1:8 1:83 1:170 1:6 1:138 1:48 1:22 +0:222 0:223 0:224 0:225 0:67 0:96 1:421 1:936 1:223 1:4 1:937 1:224 1:67 1:96 1:22 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:110 1:144 1:113 1:68 1:1155 1:22 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:79 1:78 1:80 1:81 1:13 1:86 1:82 1:1280 1:4 1:170 1:138 1:48 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:79 1:80 1:81 1:4 1:144 1:8 1:169 1:84 1:171 1:172 1:48 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:170 1:65 1:65 1:168 1:138 1:80 1:1212 1:81 1:65 1:65 1:13 1:65 1:65 1:452 1:172 1:538 1:6 1:80 1:173 +0:728 0:729 0:509 0:510 0:75 0:68 0:730 0:16 0:731 0:245 1:1105 1:732 1:729 1:509 1:510 1:75 1:68 1:730 1:13 1:75 1:68 1:734 1:48 1:22 1:22 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:1070 1:78 1:618 1:81 1:14 1:39 1:86 1:82 1:83 1:170 1:138 1:48 +0:1026 0:1027 0:1028 0:1029 0:1030 0:1031 0:75 0:480 1:1027 1:75 1:480 1:1029 1:4 1:1031 1:65 1:65 1:1032 1:1033 1:1034 1:1029 1:1031 1:1250 +0:728 0:729 0:509 0:510 0:75 0:68 0:730 0:16 0:731 0:245 1:747 1:748 1:729 1:75 1:68 1:730 1:16 1:734 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:79 1:80 1:81 1:65 1:65 1:87 1:82 1:83 1:84 1:80 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:84 1:86 1:1039 1:85 1:168 1:81 1:4 1:78 1:48 1:22 +0:1026 0:1027 0:1028 0:1029 0:1030 0:1031 0:75 0:480 1:1032 1:1033 1:4 1:1034 1:1031 1:22 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:94 1:84 1:79 1:85 1:617 1:4 1:78 1:13 1:87 1:618 1:81 +0:908 0:159 0:909 0:910 0:109 1:911 1:14 1:922 1:910 1:109 1:877 +0:1335 0:409 0:1336 0:10 1:1335 1:409 1:1336 1:10 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:110 1:4 1:111 1:112 1:113 1:68 1:1074 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:1137 1:100 1:895 1:80 1:81 1:13 1:86 1:82 1:83 1:84 1:6 1:138 1:48 1:22 +0:908 0:159 0:909 0:910 0:109 1:908 1:14 1:1311 1:910 1:109 1:877 +0:421 0:456 0:153 0:152 0:159 0:457 1:421 1:153 1:456 1:152 1:14 1:457 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:233 1:234 1:4 1:111 1:112 1:113 1:68 1:114 1:22 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:1186 1:78 1:13 1:79 1:81 1:79 1:1187 1:86 1:82 1:83 1:84 1:6 1:80 1:48 1:22 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:75 1:110 1:4 1:111 1:13 1:113 1:68 1:115 1:769 1:548 1:22 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:168 1:80 1:81 1:65 1:65 1:86 1:8 1:83 1:84 1:80 1:48 +0:210 0:10 0:211 0:14 0:212 1:211 1:427 1:32 1:614 1:212 1:14 1:39 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:110 1:4 1:111 1:112 1:113 1:68 1:114 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:75 1:110 1:4 1:111 1:86 1:113 1:480 1:1283 1:22 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:958 1:170 1:450 1:121 1:80 1:10 1:1428 1:13 1:1429 1:85 1:79 1:81 1:4 1:78 1:13 1:33 1:1251 1:4 1:160 1:137 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:28 1:170 1:439 1:1165 1:1166 1:13 1:133 1:85 1:94 1:168 1:80 1:81 1:4 1:78 1:48 1:22 1:22 +0:222 0:223 0:224 0:225 0:67 0:96 1:421 1:422 1:223 1:224 1:67 1:96 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:75 1:110 1:4 1:111 1:112 1:113 1:68 1:22 1:148 1:112 1:113 1:68 1:22 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:587 1:170 1:80 1:10 1:774 1:10 1:13 1:57 1:51 1:86 1:85 1:94 1:168 1:81 1:4 1:78 1:22 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:951 1:442 1:4 1:111 1:13 1:112 1:113 1:480 1:114 1:22 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:772 1:84 1:144 1:85 1:168 1:80 1:81 1:4 1:78 1:48 1:22 +0:210 0:10 0:211 0:14 0:212 1:210 1:10 1:211 1:14 1:212 +0:222 0:223 0:224 0:225 0:67 0:96 1:222 1:1378 1:223 1:224 1:67 1:96 +0:155 0:837 0:838 0:839 1:49 1:14 1:838 1:839 +0:210 0:10 0:211 0:14 0:212 1:148 1:472 1:473 1:211 1:13 1:210 1:32 1:155 1:474 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:28 1:78 1:80 1:81 1:137 1:1112 1:84 1:450 1:1113 1:81 1:137 1:86 1:85 1:81 1:4 1:78 1:48 1:22 +0:908 0:159 0:909 0:910 0:109 1:911 1:912 1:909 1:910 1:109 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:807 1:78 1:169 1:81 1:94 1:170 1:144 1:80 1:48 1:22 +0:728 0:729 0:509 0:510 0:75 0:68 0:730 0:16 0:731 0:245 1:732 1:729 1:75 1:68 1:730 1:16 1:734 1:22 +0:91 0:421 0:104 0:695 0:96 0:696 0:697 1:104 1:421 1:86 1:695 1:96 1:696 1:9 +0:155 0:837 0:838 0:839 1:1052 1:205 1:155 1:838 1:839 1:70 +0:728 0:729 0:509 0:510 0:75 0:68 0:730 0:16 0:731 0:245 1:732 1:729 1:509 1:510 1:75 1:68 1:730 1:16 1:734 1:22 +0:210 0:10 0:211 0:14 0:212 1:211 1:65 1:65 1:14 1:212 1:65 1:65 1:14 1:1349 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:75 1:110 1:4 1:111 1:882 1:113 1:68 1:21 +0:728 0:729 0:509 0:510 0:75 0:68 0:730 0:16 0:731 0:245 1:1079 1:732 1:729 1:75 1:68 1:730 1:16 1:734 1:22 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:958 1:84 1:959 1:80 1:577 1:14 1:39 1:13 1:79 1:78 1:80 1:81 1:86 1:82 1:169 1:84 1:960 1:48 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:75 1:110 1:4 1:111 1:1074 1:113 1:68 +0:210 0:10 0:211 0:14 0:212 1:211 1:210 1:10 1:14 1:212 1:211 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:75 1:110 1:4 1:111 1:116 1:113 1:68 1:800 1:173 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:168 1:80 1:81 1:4 1:78 1:13 1:423 1:424 1:235 1:4 1:84 1:138 1:48 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:79 1:78 1:121 1:80 1:81 1:86 1:82 1:83 1:170 1:138 1:48 1:22 +0:421 0:456 0:153 0:152 0:159 0:457 1:222 1:39 1:456 1:153 1:152 1:475 1:495 1:737 1:1076 1:102 1:1077 1:1078 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:75 1:110 1:4 1:111 1:112 1:113 1:68 1:114 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:75 1:110 1:4 1:111 1:113 1:68 1:115 1:116 1:22 +0:91 0:421 0:104 0:695 0:96 0:696 0:697 1:421 1:104 1:86 1:695 1:96 1:696 1:9 1:65 1:65 1:104 1:86 1:695 1:96 1:696 1:1128 +0:75 0:110 0:4 0:111 0:112 0:113 0:68 0:114 1:113 1:68 1:114 1:86 1:75 1:110 +0:421 0:456 0:153 0:152 0:159 0:457 1:421 1:1227 1:456 1:152 1:14 1:457 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:79 1:80 1:81 1:86 1:82 1:118 1:170 1:138 1:48 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:79 1:78 1:80 1:81 1:86 1:8 1:1087 1:84 1:80 1:48 +0:1026 0:1027 0:1028 0:1029 0:1030 0:1031 0:75 0:480 1:1391 1:1392 1:13 1:1393 1:1032 1:1033 1:189 1:4 1:629 1:1034 1:1031 1:48 +0:908 0:159 0:909 0:910 0:109 1:908 1:30 1:155 1:922 1:910 1:109 1:877 1:22 +0:728 0:729 0:509 0:510 0:75 0:68 0:730 0:16 0:731 0:245 1:729 1:732 1:733 1:10 1:120 1:75 1:68 1:730 1:16 1:734 +0:77 0:78 0:79 0:80 0:81 0:82 0:83 0:84 0:85 0:86 0:48 1:94 1:78 1:80 1:81 1:65 1:65 1:58 1:94 1:84 1:85 1:206 1:14 1:85 1:22 diff --git a/models/match/multiview-simnet/data/train/train.txt b/models/match/multiview-simnet/data/train/train.txt index 4b26c6c6c2eab44b9f9b29b9fb475c5d018ca92a..6048bf8d2e543c030e88071b2e9bcc17400c1cee 100755 --- a/models/match/multiview-simnet/data/train/train.txt +++ b/models/match/multiview-simnet/data/train/train.txt @@ -1,10 +1,256 @@ -7688:0 589671:0 339543:0 681723:0 339204:0 743067:0 897959:0 897541:0 571340:0 858141:0 68161:1 533957:1 288065:1 755516:1 179906:1 324817:1 116293:1 942079:1 455277:1 787142:1 251765:2 846187:2 586960:2 781883:2 430436:2 240100:2 686201:2 632045:2 585097:2 61976:2 -187966:0 194147:0 640819:0 283848:0 514875:0 310781:0 760083:0 281096:0 837090:0 928087:0 958908:1 451359:1 456136:1 577231:1 373371:1 651928:1 877106:1 721988:1 342265:1 114942:1 668915:2 502190:2 139044:2 213045:2 36710:2 119509:2 450285:2 165440:2 199495:2 798870:2 -477955:0 598041:0 452166:0 924550:0 152308:0 316225:0 285239:0 7967:0 177143:0 132244:0 391070:1 169561:1 256279:1 563588:1 749753:1 237035:1 550804:1 736257:1 71551:1 61944:1 102132:2 484023:2 82995:2 732704:2 114816:2 413165:2 197504:2 686192:2 253734:2 248157:2 -325819:0 140241:0 365103:0 334185:0 357327:0 613836:0 928004:0 595589:0 506569:0 539067:0 638196:1 729129:1 730912:1 701797:1 571150:1 140054:1 680316:1 889784:1 302584:1 676284:1 671069:2 212989:2 318469:2 732930:2 924564:2 147041:2 572412:2 662673:2 418312:2 382855:2 -839803:0 888881:0 957998:0 906486:0 44377:0 247842:0 994783:0 813449:0 168271:0 493685:0 269703:1 156692:1 686681:1 273684:1 312387:1 462033:1 669631:1 635437:1 74337:1 217677:1 582194:2 992666:2 860610:2 660766:2 24524:2 169856:2 882211:2 291866:2 44494:2 984736:2 -327559:0 627497:0 876526:0 243959:0 532929:0 639919:0 443220:0 952110:0 844723:0 372053:0 196819:1 326005:1 62242:1 774928:1 382727:1 348680:1 946697:1 625998:1 276517:1 251595:1 342204:2 825871:2 407136:2 724114:2 611341:2 517978:2 248341:2 111254:2 836867:2 677297:2 -72451:0 749548:0 283413:0 419402:0 67446:0 341795:0 918120:0 892028:0 113151:0 832663:0 758121:1 500602:1 734935:1 577972:1 205421:1 726739:1 276563:1 611928:1 185486:1 603502:1 633117:2 929300:2 332435:2 216848:2 412769:2 708304:2 800045:2 315869:2 444476:2 332565:2 -675647:0 212558:0 654982:0 321053:0 111172:0 635432:0 298523:0 612182:0 203835:0 288250:0 990034:1 891786:1 188524:1 480757:1 436783:1 874434:1 530090:1 492441:1 32835:1 886415:1 688876:2 626030:2 612348:2 208265:2 355885:2 603938:2 349931:2 86683:2 361956:2 705130:2 -164500:0 332294:0 373155:0 320413:0 801561:0 152827:0 28282:0 435913:0 376758:0 367848:0 285596:1 282674:1 357323:1 257195:1 948061:1 996976:1 300918:1 734644:1 870559:1 924205:1 45095:2 61352:2 242258:2 153354:2 763576:2 133542:2 431079:2 193327:2 655823:2 770159:2 -821764:0 184731:0 888413:0 793536:0 30049:0 533675:0 791254:0 92255:0 74185:0 557758:0 795898:1 15689:1 983592:1 248891:1 64421:1 387642:1 315522:1 526054:1 404172:1 704838:1 537016:2 383828:2 438418:2 885895:2 894698:2 228867:2 343213:2 411377:2 149957:2 810795:2 +0:149 0:150 0:151 0:152 0:96 1:181 1:149 1:150 1:968 1:152 1:1019 1:67 1:96 2:418 2:149 2:153 2:152 2:419 2:96 +0:389 0:390 0:391 0:392 1:389 1:390 1:391 1:392 1:137 1:569 1:889 2:389 2:390 2:1375 2:391 2:392 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:272 1:118 1:119 1:605 1:121 1:122 2:123 2:121 2:124 2:125 2:126 2:32 2:13 2:127 2:1 2:124 2:1 2:128 2:4 2:129 2:4 2:130 2:131 2:132 2:133 2:134 2:48 2:22 +0:135 0:56 0:79 0:96 0:97 1:177 1:181 1:44 1:79 1:135 1:56 1:33 1:96 1:97 2:135 2:320 2:4 2:56 2:477 2:75 2:96 2:22 +0:660 0:661 0:662 0:663 0:664 0:665 0:148 0:666 0:14 0:39 1:660 1:450 1:709 1:663 1:664 1:665 1:148 1:666 2:376 2:664 2:706 2:707 2:660 2:13 2:450 2:708 2:709 2:137 2:278 2:665 2:148 2:666 2:13 2:177 2:574 2:509 2:710 2:711 2:4 2:75 2:68 2:712 2:48 2:22 +0:248 0:249 0:67 0:68 0:250 0:248 0:249 0:144 0:9 0:48 0:61 0:251 1:905 1:248 1:249 1:22 1:22 1:571 1:87 1:9 1:22 1:22 2:757 2:758 2:4 2:248 2:249 2:61 2:86 2:9 2:22 +0:262 0:263 0:264 0:265 0:14 0:39 1:928 1:263 1:358 1:265 1:14 1:39 1:22 2:262 2:426 2:264 2:266 2:263 2:962 2:963 2:14 2:39 +0:28 0:4 0:123 0:257 0:273 0:274 0:118 0:136 0:4 0:275 1:257 1:123 1:511 1:274 1:124 1:136 1:512 1:4 1:275 2:28 2:181 2:123 2:257 2:273 2:274 2:118 2:136 2:4 2:275 2:13 2:28 2:304 2:136 2:148 2:10 2:118 2:13 2:67 2:68 2:359 2:768 2:22 +0:15 0:16 0:17 0:4 0:18 0:19 0:20 0:21 0:22 1:18 1:19 1:15 1:16 1:573 1:16 1:17 1:20 1:21 2:15 2:16 2:573 2:19 2:20 2:21 +0:44 0:45 0:46 0:47 0:48 1:44 1:45 1:46 1:47 1:48 2:45 2:44 2:68 2:46 2:47 +0:175 0:86 0:113 0:68 1:217 1:113 1:68 1:218 2:175 2:113 2:68 2:732 2:68 +0:660 0:661 0:662 0:663 0:664 0:665 0:148 0:666 0:14 0:39 1:660 1:662 1:10 1:664 1:665 1:148 1:666 1:137 1:14 1:39 2:664 2:667 2:709 2:708 2:13 2:665 2:148 2:666 2:14 2:39 +0:106 0:107 0:38 0:96 1:349 1:38 1:67 1:96 1:22 2:926 2:927 2:232 2:38 2:67 2:96 +0:248 0:249 0:67 0:68 0:250 0:248 0:249 0:144 0:9 0:48 0:61 0:251 1:905 1:248 1:249 1:22 1:22 1:571 1:87 1:9 1:22 1:22 2:248 2:249 2:86 2:466 2:48 2:173 2:388 2:589 2:68 +0:405 0:340 0:183 1:405 1:610 1:21 1:340 1:48 2:405 2:570 2:340 2:571 2:183 +0:262 0:263 0:264 0:265 0:14 0:39 1:630 1:262 1:263 1:265 1:280 2:262 2:794 2:263 2:265 2:14 2:39 +0:315 0:30 0:14 0:316 0:317 1:315 1:14 1:474 1:395 2:315 2:30 2:14 2:585 2:474 2:317 +0:257 0:30 0:426 0:230 0:427 0:428 1:257 1:30 1:426 1:230 1:427 1:428 2:30 2:230 2:651 2:652 2:67 2:14 2:653 +0:155 0:1 0:2 0:91 0:156 0:157 0:158 1:14 1:1 1:2 1:91 1:157 1:840 1:841 2:157 2:160 2:14 2:91 2:13 2:2 2:86 2:219 2:4 2:103 2:48 +0:248 0:249 0:67 0:68 0:250 0:248 0:249 0:144 0:9 0:48 0:61 0:251 1:248 1:249 1:67 1:68 1:69 1:13 1:466 1:1140 1:48 2:248 2:135 2:144 2:9 2:48 2:22 2:466 2:248 2:249 2:61 2:345 +0:28 0:29 0:30 0:31 0:32 0:33 0:34 0:35 0:28 0:36 0:37 0:16 0:38 0:14 0:39 1:1436 1:30 1:65 1:65 1:31 1:32 1:36 1:10 1:41 1:1437 1:16 1:38 1:14 1:39 1:22 2:29 2:31 2:32 2:388 2:41 2:42 2:16 2:38 2:34 2:10 2:155 2:85 2:22 +0:28 0:4 0:123 0:257 0:273 0:274 0:118 0:136 0:4 0:275 1:123 1:276 1:276 1:276 1:276 1:276 1:276 1:144 1:277 1:275 1:278 1:257 1:273 1:274 1:118 1:136 1:4 1:275 2:28 2:4 2:119 2:136 2:275 2:14 2:118 2:273 2:274 2:13 2:67 2:14 2:653 2:173 +0:56 0:57 0:58 0:1 0:59 0:4 0:60 0:44 1:56 1:86 1:92 1:59 1:4 1:60 1:44 1:93 2:59 2:32 2:13 2:61 2:58 2:6 2:60 2:56 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:1 1:123 1:178 1:117 1:118 1:130 1:16 1:1043 1:120 1:121 1:118 1:122 1:48 2:119 2:132 2:118 2:208 2:48 +0:155 0:1 0:2 0:91 0:156 0:157 0:158 1:155 1:1 1:2 1:91 1:156 1:157 1:160 2:14 2:91 2:156 2:4 2:157 2:221 +0:175 0:86 0:113 0:68 1:175 1:113 1:68 2:175 2:113 2:68 2:114 2:116 +0:315 0:30 0:14 0:316 0:317 1:1153 1:14 1:316 1:395 1:1154 2:315 2:443 2:30 2:14 2:316 2:395 2:444 +0:262 0:263 0:264 0:265 0:14 0:39 1:1020 1:262 1:263 1:357 1:265 1:206 1:14 1:39 1:22 2:1395 2:1396 2:146 2:1397 2:264 2:265 2:14 2:39 2:22 +0:175 0:86 0:113 0:68 1:217 1:113 1:68 1:22 2:175 2:113 2:68 2:218 2:116 2:22 2:22 2:22 2:22 2:22 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:28 1:117 1:118 1:119 1:13 1:118 1:120 1:298 1:48 2:124 2:123 2:42 2:121 2:588 2:10 2:13 2:28 2:208 2:130 2:93 2:22 +0:106 0:107 0:38 0:96 1:106 1:107 1:1304 1:16 1:38 1:67 1:68 2:828 2:107 2:38 +0:405 0:340 0:183 1:405 1:340 1:183 2:405 2:4 2:1195 2:1196 2:13 2:340 2:1197 +0:56 0:57 0:58 0:1 0:59 0:4 0:60 0:44 1:135 1:56 1:592 1:1 1:466 1:4 1:60 1:48 2:929 2:930 2:623 2:13 2:931 2:59 2:216 2:56 2:321 2:57 2:148 2:932 2:933 +0:155 0:1 0:2 0:91 0:156 0:157 0:158 1:1 1:2 1:14 1:219 1:670 1:61 1:220 1:137 2:177 2:91 2:488 2:14 2:219 2:22 +0:262 0:263 0:264 0:265 0:14 0:39 1:262 1:369 1:263 1:1018 1:265 1:14 1:39 2:262 2:426 2:263 2:1018 2:265 2:13 2:268 2:70 2:22 +0:135 0:56 0:79 0:96 0:97 1:177 1:181 1:44 1:79 1:135 1:56 1:33 1:96 1:97 2:135 2:56 2:96 2:97 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:117 1:118 1:4 1:130 1:605 1:121 1:124 1:298 2:121 2:118 2:303 2:123 2:32 2:133 2:134 2:944 2:4 2:130 2:48 +0:389 0:390 0:391 0:392 1:543 1:28 1:389 1:934 1:391 1:392 2:500 2:389 2:390 2:830 2:4 2:391 2:392 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:28 1:117 1:118 1:119 1:13 1:118 1:120 1:298 1:48 2:119 2:831 2:1276 2:130 2:65 2:65 2:454 2:120 2:298 2:48 +0:44 0:45 0:46 0:47 0:48 1:1 1:45 1:178 1:44 1:1111 1:144 1:47 1:48 1:22 2:44 2:45 2:46 2:754 2:148 2:22 +0:284 0:1 0:285 0:286 0:67 0:44 0:68 1:287 1:4 1:1 1:285 1:286 1:151 1:288 1:289 1:290 2:323 2:1 2:324 2:144 2:44 2:68 2:290 +0:421 0:490 1:421 1:490 2:978 2:4 2:490 2:22 +0:175 0:86 0:113 0:68 1:175 1:86 1:113 1:68 1:218 2:175 2:113 2:68 2:732 2:68 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:123 1:117 1:118 1:4 1:130 1:118 1:208 1:48 2:123 2:121 2:118 2:125 2:126 2:10 2:13 2:454 2:133 2:134 2:28 2:129 2:455 2:439 2:4 2:295 2:48 +0:135 0:56 0:79 0:96 0:97 1:135 1:56 1:79 1:33 1:572 1:96 1:97 2:135 2:56 2:79 2:96 2:97 2:13 2:58 2:6 2:623 2:48 2:22 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:1293 1:117 1:118 1:130 1:137 1:65 1:65 1:118 1:57 1:120 1:298 1:70 2:298 2:118 2:4 2:1093 2:13 2:117 2:118 2:4 2:123 2:725 2:16 2:1094 2:120 2:121 2:124 2:298 2:48 +0:175 0:86 0:113 0:68 1:217 1:144 1:113 1:68 2:175 2:113 2:68 2:21 2:22 +0:248 0:249 0:67 0:68 0:250 0:248 0:249 0:144 0:9 0:48 0:61 0:251 1:248 1:249 1:67 1:68 1:69 1:13 1:144 1:9 1:48 1:22 2:248 2:249 2:86 2:9 2:48 2:13 2:120 2:75 2:68 2:1122 2:48 +0:106 0:107 0:38 0:96 1:349 1:4 1:107 1:38 1:67 1:96 2:166 2:107 2:38 2:67 2:96 +0:44 0:45 0:46 0:47 0:48 1:1 1:45 1:44 1:182 1:46 1:13 1:311 1:4 1:144 1:47 1:48 2:45 2:49 2:44 2:50 2:51 2:47 2:48 2:22 +0:56 0:57 0:58 0:1 0:59 0:4 0:60 0:44 1:135 1:1423 1:205 1:67 1:592 1:6 1:59 1:4 1:623 1:26 1:1424 1:67 2:590 2:591 2:56 2:57 2:592 2:103 2:59 2:4 2:60 2:6 2:56 +0:135 0:56 0:79 0:96 0:97 1:135 1:56 1:252 1:96 1:97 2:1164 2:4 2:249 2:44 2:79 2:56 2:96 2:97 +0:283 0:67 0:68 0:69 1:283 1:65 1:65 1:65 1:65 1:65 1:65 1:65 1:65 1:67 1:68 1:69 1:22 2:283 2:67 2:68 2:69 2:1157 +0:155 0:1 0:2 0:91 0:156 0:157 0:158 1:155 1:1 1:2 1:219 1:103 1:61 1:220 1:221 2:155 2:219 2:670 2:4 2:488 2:22 +0:405 0:340 0:183 1:405 1:340 1:183 2:405 2:570 2:340 2:571 2:183 +0:256 0:257 0:120 0:258 1:256 1:258 1:148 1:322 2:256 2:257 2:759 2:258 2:13 2:760 2:65 2:65 2:761 2:762 +0:365 0:366 0:103 0:367 0:14 0:368 1:365 1:366 1:103 1:537 1:14 1:368 2:365 2:537 2:103 2:366 2:14 2:368 +0:660 0:661 0:662 0:663 0:664 0:665 0:148 0:666 0:14 0:39 1:587 1:708 1:10 1:664 1:709 1:13 1:903 1:665 1:148 1:1291 1:14 1:39 1:22 2:706 2:4 2:156 2:660 2:13 2:1009 2:450 2:708 2:13 2:664 2:257 2:665 2:148 2:666 2:22 +0:445 0:14 0:446 0:447 1:1404 1:13 1:445 1:14 1:446 1:447 2:448 2:1013 2:121 2:871 2:4 2:1014 2:447 2:14 2:446 +0:248 0:249 0:67 0:68 0:250 0:248 0:249 0:144 0:9 0:48 0:61 0:251 1:248 1:249 1:67 1:68 1:69 1:13 1:466 1:1140 1:48 2:757 2:758 2:4 2:248 2:249 2:61 2:86 2:9 2:22 +0:284 0:1 0:285 0:286 0:67 0:44 0:68 1:287 1:4 1:1 1:285 1:286 1:151 1:288 1:289 1:290 2:413 2:1 2:1316 2:44 2:68 2:290 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:1293 1:117 1:118 1:130 1:137 1:65 1:65 1:118 1:57 1:120 1:298 1:70 2:148 2:394 2:124 2:924 2:4 2:130 2:120 2:121 2:122 2:48 +0:44 0:45 0:46 0:47 0:48 1:181 1:44 1:45 1:46 1:47 1:48 2:45 2:44 2:68 2:46 2:190 2:47 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:123 1:117 1:118 1:4 1:130 1:118 1:208 1:48 2:123 2:121 2:125 2:126 2:32 2:124 2:133 2:134 2:1040 2:93 +0:155 0:1 0:2 0:91 0:156 0:157 0:158 1:156 1:157 1:810 1:2 1:14 1:91 2:183 2:86 2:1 2:2 2:91 2:128 2:4 2:157 2:158 +0:660 0:661 0:662 0:663 0:664 0:665 0:148 0:666 0:14 0:39 1:660 1:450 1:709 1:663 1:664 1:665 1:148 1:666 2:664 2:660 2:709 2:708 2:51 2:614 2:666 2:13 2:587 2:148 2:364 2:1262 2:10 2:14 2:39 2:22 +0:315 0:30 0:14 0:316 0:317 1:701 1:14 1:702 1:317 2:315 2:443 2:30 2:14 2:316 2:395 2:444 +0:763 0:764 0:765 0:67 0:68 1:763 1:764 1:765 1:67 1:68 2:1035 2:763 2:764 2:765 2:886 2:765 2:67 2:68 2:69 +0:135 0:56 0:79 0:96 0:97 1:151 1:544 1:699 1:56 1:79 1:96 1:97 1:22 2:135 2:151 2:56 2:96 2:97 +0:135 0:56 0:79 0:96 0:97 1:151 1:56 1:79 1:477 1:96 2:318 2:4 2:319 2:320 2:321 2:56 2:33 2:96 2:97 +0:135 0:56 0:79 0:96 0:97 1:135 1:56 1:79 1:33 1:572 1:96 1:97 2:1268 2:135 2:56 2:79 2:477 2:96 +0:15 0:16 0:17 0:4 0:18 0:19 0:20 0:21 0:22 1:635 1:15 1:16 1:17 1:636 1:19 1:21 1:22 2:15 2:16 2:17 2:4 2:19 2:20 2:21 2:22 +0:248 0:249 0:67 0:68 0:250 0:248 0:249 0:144 0:9 0:48 0:61 0:251 1:905 1:248 1:249 1:22 1:22 1:571 1:87 1:9 1:22 1:22 2:603 2:248 2:249 2:86 2:9 2:48 2:22 2:144 2:604 2:249 2:48 2:22 +0:44 0:45 0:46 0:47 0:48 1:44 1:45 1:46 1:47 1:48 2:1 2:45 2:178 2:44 2:68 2:46 2:47 2:70 2:137 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:1 1:123 1:117 1:118 1:4 1:130 1:13 1:454 1:86 1:298 1:28 1:117 1:196 1:48 1:22 2:123 2:121 2:124 2:299 2:130 2:128 2:208 2:48 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:272 1:118 1:119 1:605 1:121 1:122 2:123 2:136 2:10 2:668 2:130 2:669 2:670 2:86 2:117 2:137 2:124 2:120 2:298 2:48 2:22 2:120 2:75 2:671 2:48 2:22 2:672 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:1 1:123 1:178 1:117 1:118 1:130 1:16 1:1043 1:120 1:121 1:118 1:122 1:48 2:123 2:117 2:118 2:218 2:118 2:120 2:298 2:48 2:22 +0:262 0:263 0:264 0:265 0:14 0:39 1:262 1:639 1:264 1:266 1:13 1:263 1:264 1:265 1:13 1:67 1:68 1:359 1:933 1:22 1:33 1:14 1:594 1:240 1:22 2:364 2:420 2:13 2:28 2:4 2:262 2:257 2:263 2:264 2:265 2:22 +0:106 0:107 0:38 0:96 1:106 1:927 1:38 1:67 1:96 1:1354 1:137 1:137 1:137 2:281 2:166 2:4 2:282 2:38 2:67 2:96 +0:56 0:57 0:58 0:1 0:59 0:4 0:60 0:44 1:56 1:592 1:6 1:59 1:4 1:238 1:883 1:60 1:48 2:590 2:57 2:58 2:1 2:466 2:4 2:60 2:56 2:48 +0:28 0:29 0:30 0:31 0:32 0:33 0:34 0:35 0:28 0:36 0:37 0:16 0:38 0:14 0:39 1:28 1:4 1:850 1:31 1:32 1:388 1:1069 1:578 1:34 1:13 1:278 1:28 1:36 1:1069 1:38 1:10 1:13 1:14 1:578 1:34 1:28 1:4 1:30 1:240 2:28 2:386 2:387 2:30 2:13 2:31 2:10 2:369 2:34 2:388 2:37 2:16 2:38 2:14 2:39 2:22 +0:106 0:107 0:38 0:96 1:106 1:1288 1:38 1:107 1:67 1:96 2:106 2:923 2:38 2:96 +0:445 0:14 0:446 0:447 1:1404 1:13 1:445 1:14 1:446 1:447 2:448 2:155 2:446 2:447 2:446 2:447 2:690 2:148 2:682 2:22 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:587 1:117 1:123 1:271 1:4 1:156 1:1043 1:4 1:354 1:120 1:121 1:122 1:48 1:22 2:123 2:117 2:118 2:218 2:118 2:120 2:298 2:48 2:22 +0:44 0:45 0:46 0:47 0:48 1:44 1:45 1:46 1:75 1:822 1:47 1:48 2:45 2:68 2:46 2:47 2:22 +0:106 0:107 0:38 0:96 1:106 1:927 1:38 1:67 1:96 1:1354 1:137 1:137 1:137 2:349 2:4 2:107 2:463 2:464 2:38 2:67 2:96 +0:149 0:150 0:151 0:152 0:96 1:149 1:150 1:151 1:152 1:96 2:149 2:4 2:691 2:150 2:151 2:152 2:67 2:96 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:1 1:123 1:178 1:117 1:118 1:130 1:16 1:1043 1:120 1:121 1:118 1:122 1:48 2:257 2:123 2:121 2:125 2:126 2:144 2:133 2:134 2:124 2:4 2:130 +0:44 0:45 0:46 0:47 0:48 1:181 1:44 1:45 1:46 1:47 1:48 2:14 2:44 2:45 2:46 2:173 2:21 2:44 2:48 +0:315 0:30 0:14 0:316 0:317 1:315 1:14 1:474 1:395 2:155 2:394 2:315 2:30 2:395 2:396 2:148 2:397 2:48 2:22 +0:56 0:57 0:58 0:1 0:59 0:4 0:60 0:44 1:135 1:56 1:57 1:58 1:103 1:59 1:4 1:60 2:1089 2:57 2:304 2:58 2:6 2:622 2:4 2:623 2:44 2:56 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:1 1:123 1:117 1:118 1:4 1:130 1:13 1:454 1:86 1:298 1:28 1:117 1:196 1:48 1:22 2:123 2:117 2:118 2:218 2:118 2:120 2:298 2:48 2:22 +0:44 0:45 0:46 0:47 0:48 1:1 1:45 1:178 1:44 1:1111 1:144 1:47 1:48 1:22 2:808 2:44 2:613 2:46 2:47 2:492 +0:257 0:30 0:426 0:230 0:427 0:428 1:257 1:1216 1:230 1:82 2:30 2:230 2:651 2:652 2:67 2:14 2:653 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:123 1:117 1:118 1:4 1:130 1:118 1:208 1:48 2:28 2:1420 2:82 2:123 2:678 2:128 2:4 2:1421 2:1422 2:120 2:121 2:1276 2:117 2:48 2:22 +0:262 0:263 0:264 0:265 0:14 0:39 1:262 1:264 1:266 1:65 1:65 1:609 1:432 1:264 1:265 1:65 1:65 1:280 1:70 2:262 2:717 2:44 2:4 2:718 2:263 2:264 2:265 2:67 2:268 +0:149 0:150 0:151 0:152 0:96 1:181 1:149 1:150 1:968 1:152 1:1019 1:67 1:96 2:149 2:4 2:691 2:150 2:151 2:152 2:67 2:96 +0:558 0:559 0:16 0:560 0:75 0:68 0:76 1:30 1:558 1:562 1:16 1:560 1:75 1:68 1:76 2:30 2:558 2:633 2:562 2:16 2:560 2:75 2:68 2:76 +0:315 0:30 0:14 0:316 0:317 1:315 1:693 1:14 1:694 1:395 1:444 2:315 2:30 2:14 2:585 2:474 2:317 +0:155 0:1 0:2 0:91 0:156 0:157 0:158 1:156 1:157 1:810 1:2 1:14 1:91 2:155 2:91 2:156 2:157 2:158 2:160 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:272 1:118 1:119 1:605 1:121 1:122 2:28 2:1 2:119 2:136 2:1299 2:1300 2:111 2:117 2:13 2:118 2:144 2:404 2:121 2:1041 2:4 2:111 2:48 2:22 +0:135 0:56 0:79 0:96 0:97 1:151 1:56 1:79 1:477 1:96 2:135 2:56 2:419 2:96 2:97 2:22 2:151 2:788 2:56 2:79 2:22 +0:175 0:86 0:113 0:68 1:175 1:86 1:113 1:68 2:175 2:1377 2:113 2:68 +0:135 0:56 0:79 0:96 0:97 1:135 1:56 1:252 1:96 1:97 2:135 2:320 2:4 2:56 2:477 2:75 2:96 2:22 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:587 1:117 1:123 1:271 1:4 1:156 1:1043 1:4 1:354 1:120 1:121 1:122 1:48 1:22 2:123 2:121 2:125 2:126 2:32 2:124 2:133 2:134 2:1040 2:93 +0:106 0:107 0:38 0:96 1:106 1:4 1:735 1:38 1:67 1:96 2:106 2:13 2:108 2:109 2:38 2:67 2:96 2:22 +0:106 0:107 0:38 0:96 1:106 1:4 1:1301 1:38 1:67 1:96 2:281 2:166 2:4 2:282 2:38 2:67 2:96 +0:262 0:263 0:264 0:265 0:14 0:39 1:28 1:4 1:262 1:1339 1:263 1:264 1:265 2:262 2:1016 2:1017 2:32 2:263 2:1018 2:265 2:13 2:14 2:39 2:22 +0:262 0:263 0:264 0:265 0:14 0:39 1:1020 1:263 1:358 1:265 1:14 1:39 2:262 2:263 2:357 2:358 2:265 2:67 2:68 2:359 2:22 +0:75 0:68 0:30 0:432 0:86 0:433 0:434 0:178 0:4 0:435 1:75 1:68 1:30 1:432 1:86 1:433 1:434 1:178 1:4 1:435 2:619 2:30 2:75 2:68 2:432 2:86 2:744 2:433 2:745 2:4 2:435 2:22 +0:135 0:56 0:79 0:96 0:97 1:135 1:56 1:252 1:96 1:97 2:135 2:1252 2:56 2:419 2:388 2:96 2:477 2:22 +0:405 0:340 0:183 1:405 1:610 1:21 1:340 1:48 2:405 2:183 +0:71 0:72 0:16 0:73 0:74 0:75 0:68 0:76 1:71 1:73 1:16 1:72 1:4 1:76 1:22 2:71 2:72 2:16 2:766 2:75 2:68 2:767 2:22 +0:175 0:86 0:113 0:68 1:175 1:86 1:113 1:68 1:218 2:835 2:858 2:4 2:4 2:175 2:86 2:113 2:68 +0:135 0:56 0:79 0:96 0:97 1:177 1:181 1:44 1:79 1:135 1:56 1:33 1:96 1:97 2:925 2:135 2:56 2:79 2:388 2:96 2:97 +0:155 0:1 0:2 0:91 0:156 0:157 0:158 1:155 1:1 1:2 1:91 1:103 1:156 1:4 1:157 1:1277 1:158 2:128 2:87 2:1 2:2 2:91 2:128 2:4 2:157 2:158 +0:44 0:45 0:46 0:47 0:48 1:44 1:182 1:46 1:144 1:47 1:48 2:44 2:45 2:46 2:754 2:148 2:22 +0:175 0:86 0:113 0:68 1:217 1:113 1:68 2:835 2:858 2:4 2:4 2:175 2:86 2:113 2:68 +0:135 0:56 0:79 0:96 0:97 1:135 1:56 1:79 1:96 1:97 1:22 2:135 2:320 2:4 2:56 2:477 2:75 2:96 2:22 +0:155 0:1 0:2 0:91 0:156 0:157 0:158 1:155 1:1 1:2 1:91 1:103 1:156 1:4 1:157 1:1277 1:158 2:14 2:578 2:91 2:156 2:157 2:160 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:123 1:117 1:118 1:4 1:130 1:118 1:208 1:48 2:28 2:1 2:119 2:136 2:1299 2:1300 2:111 2:117 2:13 2:118 2:144 2:404 2:121 2:1041 2:4 2:111 2:48 2:22 +0:28 0:4 0:123 0:257 0:273 0:274 0:118 0:136 0:4 0:275 1:257 1:123 1:511 1:274 1:124 1:136 1:512 1:4 1:275 2:123 2:136 2:148 2:996 2:275 2:273 2:274 2:275 +0:28 0:29 0:30 0:31 0:32 0:33 0:34 0:35 0:28 0:36 0:37 0:16 0:38 0:14 0:39 1:29 1:1102 1:31 1:1103 1:33 1:34 1:43 1:10 1:1104 1:38 1:14 1:39 2:29 2:31 2:32 2:388 2:41 2:42 2:16 2:38 2:34 2:10 2:155 2:85 2:22 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:28 1:1105 1:1293 1:6 1:117 1:94 1:413 1:119 1:13 1:120 1:121 1:454 1:122 1:48 1:22 2:877 2:831 2:123 2:4 2:130 2:13 2:124 2:120 2:298 2:48 2:22 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:117 1:118 1:4 1:119 1:120 1:1100 1:1101 1:93 2:119 2:121 2:124 2:299 2:32 2:13 2:1305 2:124 2:4 2:156 2:160 2:439 2:4 2:1043 2:13 2:133 2:134 2:1306 2:48 2:22 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:117 1:118 1:4 1:119 1:120 1:121 1:122 1:48 2:257 2:123 2:121 2:125 2:126 2:144 2:133 2:134 2:124 2:4 2:130 +0:44 0:45 0:46 0:47 0:48 1:364 1:44 1:45 1:13 1:46 1:13 1:144 1:47 1:48 1:22 2:45 2:613 2:46 2:47 2:48 2:22 +0:159 0:82 0:30 0:877 0:878 1:1358 1:166 1:82 1:30 1:14 1:877 2:30 2:155 2:879 2:877 2:878 +0:141 0:113 0:142 0:143 0:144 0:145 0:48 1:28 1:145 1:13 1:141 1:113 1:142 1:143 1:173 1:891 1:86 1:48 1:22 2:141 2:113 2:382 2:144 2:145 2:48 2:22 +0:106 0:107 0:38 0:96 1:349 1:38 1:67 1:96 1:22 2:165 2:166 2:4 2:232 2:38 2:96 2:22 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:117 1:118 1:4 1:130 1:605 1:121 1:124 1:298 2:587 2:124 2:123 2:121 2:588 2:28 2:208 2:454 2:4 2:130 2:48 +0:262 0:263 0:264 0:265 0:14 0:39 1:28 1:4 1:262 1:1339 1:263 1:264 1:265 2:262 2:263 2:357 2:358 2:265 2:67 2:68 2:359 2:22 +0:44 0:45 0:46 0:47 0:48 1:44 1:182 1:46 1:144 1:47 1:48 2:612 2:44 2:613 2:46 2:21 2:47 2:48 2:22 +0:149 0:150 0:151 0:152 0:96 1:6 1:149 1:1368 1:150 1:4 1:152 1:96 2:418 2:149 2:153 2:152 2:419 2:96 +0:763 0:764 0:765 0:67 0:68 1:763 1:764 1:765 1:67 1:68 2:763 2:1048 2:439 2:4 2:764 2:765 2:886 2:765 2:67 2:68 2:22 2:6 2:495 2:1049 2:22 +0:149 0:150 0:151 0:152 0:96 1:149 1:153 1:152 1:154 1:67 1:96 2:418 2:149 2:153 2:152 2:419 2:96 +0:284 0:1 0:285 0:286 0:67 0:44 0:68 1:287 1:4 1:1 1:285 1:286 1:151 1:288 1:289 1:290 2:285 2:770 2:67 2:65 2:65 2:797 2:68 2:4 +0:135 0:56 0:79 0:96 0:97 1:56 1:252 1:135 1:419 1:96 1:97 2:1268 2:135 2:56 2:79 2:477 2:96 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:117 1:118 1:4 1:119 1:120 1:1100 1:1101 1:93 2:123 2:1214 2:1360 2:509 2:1361 2:111 2:1362 2:13 2:124 2:120 2:298 2:48 2:22 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:272 1:118 1:119 1:605 1:121 1:122 2:123 2:121 2:118 2:303 2:10 2:133 2:134 2:130 2:48 +0:149 0:150 0:151 0:152 0:96 1:6 1:149 1:1368 1:150 1:4 1:152 1:96 2:149 2:4 2:691 2:150 2:151 2:152 2:67 2:96 +0:106 0:107 0:38 0:96 1:106 1:4 1:1301 1:38 1:67 1:96 2:349 2:4 2:107 2:463 2:464 2:38 2:67 2:96 +0:44 0:45 0:46 0:47 0:48 1:181 1:44 1:45 1:46 1:47 1:48 2:45 2:44 2:68 2:46 2:47 +0:283 0:67 0:68 0:69 1:283 1:1167 1:69 2:819 2:65 2:65 2:820 2:65 2:65 2:283 2:65 2:65 2:67 2:68 2:69 2:22 +0:370 0:371 0:4 0:372 0:67 0:68 1:567 1:4 1:370 1:371 1:4 1:372 1:67 1:68 1:22 2:370 2:371 2:372 2:67 2:967 2:464 +0:149 0:150 0:151 0:152 0:96 1:149 1:150 1:307 1:96 1:152 1:22 2:998 2:4 2:149 2:150 2:4 2:152 2:151 2:67 2:96 2:22 +0:44 0:45 0:46 0:47 0:48 1:1 1:45 1:44 1:182 1:46 1:13 1:311 1:4 1:144 1:47 1:48 2:45 2:178 2:1171 2:44 2:613 2:46 2:47 2:48 2:22 +0:262 0:263 0:264 0:265 0:14 0:39 1:262 1:369 1:263 1:1018 1:265 1:14 1:39 2:279 2:262 2:263 2:265 2:280 +0:558 0:559 0:16 0:560 0:75 0:68 0:76 1:560 1:16 1:558 1:559 1:562 1:75 1:68 1:76 1:48 2:720 2:65 2:65 2:721 2:194 2:722 2:16 2:558 2:562 2:75 2:68 2:76 +0:175 0:86 0:113 0:68 1:217 1:113 1:68 1:114 1:22 2:175 2:113 2:68 2:114 2:116 +0:175 0:86 0:113 0:68 1:935 1:4 1:175 1:113 1:68 2:175 2:113 2:68 2:114 2:116 +0:558 0:559 0:16 0:560 0:75 0:68 0:76 1:30 1:558 1:562 1:16 1:560 1:75 1:68 1:76 2:1269 2:16 2:558 2:562 2:75 2:68 2:76 2:48 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:272 1:118 1:119 1:605 1:121 1:122 2:119 2:877 2:385 2:394 2:670 2:117 2:13 2:454 2:120 2:298 2:48 +0:175 0:86 0:113 0:68 1:175 1:113 1:68 2:175 2:113 2:68 2:732 2:68 +0:15 0:16 0:17 0:4 0:18 0:19 0:20 0:21 0:22 1:635 1:15 1:16 1:17 1:636 1:19 1:21 1:22 2:15 2:19 2:21 2:22 2:22 2:65 2:65 2:26 2:17 2:19 2:21 2:22 2:22 2:65 2:65 2:1085 +0:28 0:4 0:123 0:257 0:273 0:274 0:118 0:136 0:4 0:275 1:257 1:123 1:723 1:118 1:136 1:724 1:4 1:275 1:240 1:22 2:257 2:118 2:82 2:123 2:136 2:4 2:275 2:28 2:1 2:262 2:178 2:273 2:274 +0:135 0:56 0:79 0:96 0:97 1:135 1:151 1:56 1:79 1:96 1:97 2:319 2:56 2:79 2:96 2:97 2:22 2:56 2:288 2:75 2:68 +0:56 0:57 0:58 0:1 0:59 0:4 0:60 0:44 1:56 1:592 1:6 1:59 1:4 1:238 1:883 1:60 1:48 2:620 2:58 2:1 2:59 2:4 2:623 2:44 2:48 2:22 2:6 2:871 2:4 2:623 2:120 2:75 2:68 2:872 2:48 2:22 +0:519 0:520 0:521 0:14 0:522 1:75 1:468 1:298 1:519 1:520 1:4 1:521 1:14 1:522 1:22 1:22 1:22 1:22 2:523 2:155 2:522 +0:257 0:30 0:426 0:230 0:427 0:428 1:257 1:1249 1:30 1:4 1:428 1:120 1:426 1:930 1:22 2:30 2:230 2:651 2:652 2:67 2:14 2:653 +0:106 0:107 0:38 0:96 1:106 1:4 1:1301 1:38 1:67 1:96 2:990 2:166 2:282 2:38 2:67 2:96 +0:262 0:263 0:264 0:265 0:14 0:39 1:262 1:369 1:32 1:263 1:264 1:265 2:262 2:1367 2:718 2:32 2:263 2:264 2:265 2:14 2:39 2:22 +0:106 0:107 0:38 0:96 1:349 1:232 1:282 1:38 1:67 1:96 2:1256 2:4 2:232 2:38 2:67 2:68 +0:262 0:263 0:264 0:265 0:14 0:39 1:1020 1:262 1:263 1:357 1:265 1:206 1:14 1:39 1:22 2:639 2:640 2:262 2:263 2:264 2:265 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:1 1:123 1:117 1:118 1:4 1:130 1:13 1:454 1:86 1:298 1:28 1:117 1:196 1:48 1:22 2:877 2:831 2:123 2:4 2:130 2:13 2:124 2:120 2:298 2:48 2:22 +0:284 0:1 0:285 0:286 0:67 0:44 0:68 1:285 1:4 1:287 1:4 1:796 1:797 1:68 1:4 2:28 2:67 2:287 2:4 2:13 2:364 2:6 2:285 2:286 2:173 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:1 1:123 1:117 1:118 1:4 1:130 1:13 1:454 1:86 1:298 1:28 1:117 1:196 1:48 1:22 2:123 2:877 2:831 2:124 2:130 2:124 2:605 2:298 2:22 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:28 1:117 1:118 1:119 1:13 1:118 1:120 1:298 1:48 2:257 2:123 2:121 2:125 2:126 2:144 2:133 2:134 2:124 2:4 2:130 +0:56 0:57 0:58 0:1 0:59 0:4 0:60 0:44 1:56 1:58 1:1 1:59 1:4 1:60 1:48 2:929 2:930 2:623 2:13 2:931 2:59 2:216 2:56 2:321 2:57 2:148 2:932 2:933 +0:155 0:1 0:2 0:91 0:156 0:157 0:158 1:155 1:1 1:2 1:91 1:156 1:157 1:160 2:155 2:1 2:2 2:91 2:118 2:157 2:158 +0:370 0:371 0:4 0:372 0:67 0:68 1:370 1:371 1:4 1:372 1:67 1:68 2:372 2:373 2:67 2:68 2:371 +0:135 0:56 0:79 0:96 0:97 1:56 1:252 1:135 1:419 1:96 1:97 2:181 2:319 2:13 2:858 2:56 2:79 2:96 2:97 +0:283 0:67 0:68 0:69 1:127 1:283 1:67 1:68 1:69 2:283 2:4 2:1099 2:67 2:68 2:69 +0:1 0:2 0:3 0:4 0:5 0:6 0:7 0:8 1:1 1:1433 1:102 1:4 1:11 1:12 1:206 1:14 1:179 1:12 1:240 2:1 2:680 2:680 2:1175 2:680 2:680 2:436 2:9 2:10 2:11 2:12 2:14 2:6 2:1150 2:1176 2:1177 +0:44 0:94 0:95 0:33 0:96 0:97 1:44 1:94 1:1332 1:1333 1:33 1:96 1:97 2:44 2:94 2:638 2:95 2:388 2:96 2:97 +0:262 0:263 0:264 0:265 0:14 0:39 1:28 1:4 1:262 1:269 1:264 1:265 1:1279 1:266 1:14 1:39 1:70 1:22 1:22 1:22 1:22 2:639 2:640 2:262 2:263 2:264 2:265 +0:106 0:107 0:38 0:96 1:106 1:107 1:1304 1:16 1:38 1:67 1:68 2:106 2:13 2:108 2:109 2:38 2:67 2:96 2:22 +0:660 0:661 0:662 0:663 0:664 0:665 0:148 0:666 0:14 0:39 1:587 1:708 1:10 1:664 1:709 1:13 1:903 1:665 1:148 1:1291 1:14 1:39 1:22 2:667 2:665 2:148 2:666 2:14 2:39 2:22 +0:326 0:327 0:328 0:67 0:68 1:326 1:189 1:68 1:67 1:327 1:328 1:22 2:326 2:773 2:327 2:328 2:67 2:68 2:22 +0:262 0:263 0:264 0:265 0:14 0:39 1:630 1:262 1:263 1:265 1:280 2:262 2:609 2:432 2:263 2:265 2:13 2:14 2:85 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:28 1:1105 1:1293 1:6 1:117 1:94 1:413 1:119 1:13 1:120 1:121 1:454 1:122 1:48 1:22 2:123 2:877 2:831 2:124 2:130 2:124 2:605 2:298 2:22 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:117 1:118 1:4 1:119 1:120 1:1100 1:1101 1:93 2:587 2:124 2:123 2:121 2:588 2:28 2:208 2:454 2:4 2:130 2:48 +0:660 0:661 0:662 0:663 0:664 0:665 0:148 0:666 0:14 0:39 1:660 1:450 1:709 1:663 1:664 1:665 1:148 1:666 2:711 2:664 2:1322 2:1323 2:450 2:1324 2:10 2:1112 2:683 2:665 2:148 2:666 2:13 2:28 2:206 2:14 2:39 2:22 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:117 1:118 1:4 1:119 1:120 1:121 1:122 1:48 2:155 2:298 2:119 2:121 2:118 2:299 2:10 2:22 2:300 2:301 2:10 2:65 2:65 2:302 2:121 2:118 2:303 2:10 2:65 2:65 2:304 2:302 2:118 2:130 2:299 2:28 2:10 2:65 2:65 2:305 2:306 +0:262 0:263 0:264 0:265 0:14 0:39 1:1020 1:262 1:263 1:357 1:265 1:206 1:14 1:39 1:22 2:257 2:28 2:4 2:262 2:264 2:266 2:262 2:263 2:265 2:206 2:14 2:39 2:359 2:593 2:594 2:595 +0:106 0:107 0:38 0:96 1:106 1:927 1:38 1:67 1:96 1:1354 1:137 1:137 1:137 2:1086 2:4 2:232 2:282 2:42 2:38 2:67 2:96 2:22 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:28 1:1105 1:1293 1:6 1:117 1:94 1:413 1:119 1:13 1:120 1:121 1:454 1:122 1:48 1:22 2:117 2:118 2:119 2:726 2:120 2:291 2:48 +0:315 0:30 0:14 0:316 0:317 1:833 1:834 1:159 1:316 1:395 1:396 1:4 1:444 2:257 2:315 2:1251 2:718 2:128 2:316 2:317 +0:155 0:1 0:2 0:91 0:156 0:157 0:158 1:159 1:1 1:2 1:91 1:156 1:4 1:157 1:1214 2:156 2:157 2:158 2:91 2:718 2:14 2:219 +0:315 0:30 0:14 0:316 0:317 1:784 1:65 1:65 1:155 1:785 1:316 1:395 1:396 1:4 1:444 1:22 2:257 2:315 2:1251 2:718 2:128 2:316 2:317 +0:262 0:263 0:264 0:265 0:14 0:39 1:263 1:357 1:265 1:13 1:262 1:261 1:266 1:67 1:268 2:364 2:420 2:13 2:28 2:4 2:262 2:257 2:263 2:264 2:265 2:22 +0:155 0:1 0:2 0:91 0:156 0:157 0:158 1:159 1:1 1:2 1:91 1:156 1:4 1:157 1:1214 2:155 2:1 2:2 2:91 2:118 2:157 2:158 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:28 1:1105 1:1293 1:6 1:117 1:94 1:413 1:119 1:13 1:120 1:121 1:454 1:122 1:48 1:22 2:121 2:118 2:303 2:123 2:32 2:133 2:134 2:944 2:4 2:130 2:48 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:1 1:123 1:178 1:117 1:118 1:130 1:16 1:1043 1:120 1:121 1:118 1:122 1:48 2:119 2:877 2:385 2:394 2:670 2:117 2:13 2:454 2:120 2:298 2:48 +0:175 0:86 0:113 0:68 1:175 1:176 1:113 1:68 2:175 2:113 2:68 2:116 2:22 +0:15 0:16 0:17 0:4 0:18 0:19 0:20 0:21 0:22 1:18 1:19 1:15 1:16 1:573 1:16 1:17 1:20 1:21 2:17 2:775 2:19 2:21 2:26 2:15 2:775 2:19 2:21 2:22 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:1 1:123 1:117 1:118 1:4 1:130 1:13 1:454 1:86 1:298 1:28 1:117 1:196 1:48 1:22 2:123 2:129 2:455 2:439 2:1065 2:134 2:128 2:16 2:124 2:4 2:1383 2:13 2:118 2:4 2:1384 2:48 2:22 +0:283 0:67 0:68 0:69 1:283 1:67 1:68 1:69 1:70 1:22 2:283 2:67 2:68 2:69 2:1157 +0:28 0:29 0:30 0:31 0:32 0:33 0:34 0:35 0:28 0:36 0:37 0:16 0:38 0:14 0:39 1:631 1:31 1:32 1:33 1:41 1:42 1:38 1:34 1:28 1:43 1:10 1:14 1:39 2:29 2:31 2:32 2:388 2:41 2:42 2:16 2:38 2:34 2:10 2:155 2:85 2:22 +0:44 0:45 0:46 0:47 0:48 1:1 1:45 1:44 1:182 1:46 1:13 1:311 1:4 1:144 1:47 1:48 2:181 2:44 2:46 2:13 2:182 2:13 2:183 2:13 2:47 2:48 +0:155 0:1 0:2 0:91 0:156 0:157 0:158 1:14 1:1 1:2 1:91 1:670 1:4 1:488 1:22 2:156 2:157 2:158 2:91 2:718 2:14 2:219 +0:135 0:56 0:79 0:96 0:97 1:1 1:1321 1:44 1:79 1:135 1:56 1:33 1:96 1:97 2:135 2:320 2:56 2:33 2:96 2:97 +0:106 0:107 0:38 0:96 1:106 1:4 1:1161 1:38 1:96 2:1124 2:4 2:1125 2:1126 2:166 2:4 2:1127 2:13 2:166 2:4 2:232 2:38 2:67 2:96 2:240 2:22 +0:175 0:86 0:113 0:68 1:175 1:113 1:68 1:22 2:835 2:858 2:4 2:4 2:175 2:86 2:113 2:68 +0:135 0:56 0:79 0:96 0:97 1:135 1:56 1:79 1:33 1:572 1:96 1:97 2:318 2:4 2:319 2:320 2:321 2:56 2:33 2:96 2:97 +0:350 0:351 0:352 0:353 0:4 0:354 0:14 0:355 1:1310 1:887 1:353 1:4 1:354 1:14 1:355 2:350 2:497 2:1325 2:178 2:353 2:4 2:354 2:14 2:355 +0:175 0:86 0:113 0:68 1:217 1:86 1:113 1:68 1:114 2:175 2:113 2:68 2:116 2:13 +0:308 0:309 0:310 0:311 0:4 0:312 0:48 1:25 1:309 1:310 1:311 1:4 1:1290 1:48 2:308 2:309 2:313 2:67 2:311 2:4 2:48 2:22 2:75 2:314 2:48 2:22 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:28 1:117 1:118 1:119 1:13 1:118 1:120 1:298 1:48 2:123 2:875 2:87 2:134 2:118 2:1159 2:375 2:4 2:130 +0:56 0:57 0:58 0:1 0:59 0:4 0:60 0:44 1:135 1:56 1:57 1:58 1:103 1:59 1:4 1:60 2:620 2:621 2:67 2:58 2:1 2:622 2:623 2:26 2:624 2:288 2:86 +0:262 0:263 0:264 0:265 0:14 0:39 1:262 1:369 1:263 1:1018 1:265 1:14 1:39 2:28 2:4 2:262 2:257 2:396 2:357 2:264 2:265 +0:135 0:56 0:79 0:96 0:97 1:135 1:56 1:96 1:97 1:79 2:135 2:858 2:56 2:79 2:419 2:33 2:96 2:97 +0:135 0:56 0:79 0:96 0:97 1:1070 1:56 1:79 1:33 1:96 1:97 2:135 2:151 2:56 2:96 2:97 +0:262 0:263 0:264 0:265 0:14 0:39 1:928 1:263 1:358 1:265 1:14 1:39 1:22 2:262 2:717 2:44 2:4 2:718 2:263 2:264 2:265 2:67 2:268 +0:44 0:45 0:46 0:47 0:48 1:1 1:45 1:178 1:44 1:46 1:47 1:48 1:22 2:155 2:44 2:45 2:46 2:4 2:890 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:272 1:118 1:119 1:605 1:121 1:122 2:877 2:831 2:123 2:4 2:130 2:13 2:124 2:120 2:298 2:48 2:22 +0:175 0:86 0:113 0:68 1:217 1:113 1:68 1:114 1:22 2:175 2:1377 2:113 2:68 +0:262 0:263 0:264 0:265 0:14 0:39 1:262 1:369 1:32 1:263 1:264 1:265 2:262 2:426 2:252 2:263 2:264 2:265 2:268 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:587 1:117 1:123 1:271 1:4 1:156 1:1043 1:4 1:354 1:120 1:121 1:122 1:48 1:22 2:119 2:831 2:1276 2:130 2:65 2:65 2:454 2:120 2:298 2:48 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:117 1:118 1:4 1:130 1:605 1:121 1:124 1:298 2:123 2:121 2:118 2:303 2:10 2:133 2:134 2:130 2:48 +0:135 0:56 0:79 0:96 0:97 1:1070 1:56 1:79 1:33 1:96 1:97 2:135 2:56 2:79 2:96 2:97 2:13 2:58 2:6 2:623 2:48 2:22 +0:28 0:4 0:123 0:257 0:273 0:274 0:118 0:136 0:4 0:275 1:123 1:276 1:276 1:276 1:276 1:276 1:276 1:144 1:277 1:275 1:278 1:257 1:273 1:274 1:118 1:136 1:4 1:275 2:28 2:181 2:123 2:257 2:273 2:274 2:118 2:136 2:4 2:275 2:13 2:28 2:304 2:136 2:148 2:10 2:118 2:13 2:67 2:68 2:359 2:768 2:22 +0:155 0:1 0:2 0:91 0:156 0:157 0:158 1:155 1:1 1:2 1:91 1:103 1:156 1:4 1:157 1:1277 1:158 2:1 2:2 2:87 2:219 2:128 2:4 2:488 2:16 2:156 2:160 +0:155 0:1 0:2 0:91 0:156 0:157 0:158 1:156 1:157 1:810 1:2 1:14 1:91 2:177 2:91 2:488 2:14 2:219 2:22 +0:262 0:263 0:264 0:265 0:14 0:39 1:28 1:4 1:262 1:263 1:264 1:265 1:13 1:1279 1:266 1:268 2:262 2:426 2:264 2:266 2:263 2:962 2:963 2:14 2:39 +0:135 0:56 0:79 0:96 0:97 1:1 1:1321 1:44 1:79 1:135 1:56 1:33 1:96 1:97 2:1268 2:135 2:56 2:79 2:477 2:96 +0:248 0:249 0:67 0:68 0:250 0:248 0:249 0:144 0:9 0:48 0:61 0:251 1:248 1:249 1:67 1:68 1:69 1:13 1:144 1:9 1:48 1:22 2:75 2:1348 2:248 2:249 2:87 2:9 2:4 2:48 +0:44 0:94 0:95 0:33 0:96 0:97 1:181 1:44 1:94 1:95 1:419 1:388 1:96 1:97 2:44 2:94 2:1180 2:957 2:1181 2:1182 2:95 2:33 2:96 2:97 +0:262 0:263 0:264 0:265 0:14 0:39 1:928 1:263 1:264 1:265 1:67 1:68 1:301 1:22 1:14 1:594 2:257 2:28 2:4 2:262 2:264 2:266 2:262 2:263 2:265 2:206 2:14 2:39 2:359 2:593 2:594 2:595 +0:660 0:661 0:662 0:663 0:664 0:665 0:148 0:666 0:14 0:39 1:660 1:450 1:709 1:663 1:664 1:665 1:148 1:666 2:664 2:1172 2:660 2:663 2:148 2:666 2:65 2:65 2:1173 2:14 2:39 +0:175 0:86 0:113 0:68 1:175 1:176 1:113 1:68 1:22 2:175 2:113 2:68 2:114 2:116 +0:155 0:1 0:2 0:91 0:156 0:157 0:158 1:1 1:2 1:14 1:219 1:670 1:61 1:220 1:137 2:14 2:91 2:156 2:157 2:158 +0:389 0:390 0:391 0:392 1:75 1:480 1:393 1:4 1:391 1:392 2:389 2:390 2:1375 2:391 2:392 +0:56 0:57 0:58 0:1 0:59 0:4 0:60 0:44 1:56 1:57 1:58 1:1 1:59 1:4 1:60 1:44 2:1266 2:622 2:57 2:21 2:48 2:22 2:56 2:68 2:4 2:304 2:592 2:6 2:622 2:4 2:60 2:48 2:22 +0:262 0:263 0:264 0:265 0:14 0:39 1:1020 1:263 1:358 1:265 1:14 1:39 2:257 2:964 2:609 2:28 2:4 2:262 2:895 2:263 2:264 2:265 +0:149 0:150 0:151 0:152 0:96 1:149 1:150 1:152 1:96 2:149 2:4 2:691 2:150 2:152 2:96 +0:75 0:68 0:30 0:432 0:86 0:433 0:434 0:178 0:4 0:435 1:75 1:68 1:30 1:432 1:86 1:433 1:434 1:178 1:4 1:435 2:181 2:602 2:432 2:144 2:433 2:434 2:178 2:4 2:435 +0:155 0:1 0:2 0:91 0:156 0:157 0:158 1:155 1:1 1:2 1:91 1:670 1:4 1:157 1:158 2:159 2:91 2:156 2:157 2:158 +0:262 0:263 0:264 0:265 0:14 0:39 1:262 1:266 1:103 1:267 1:10 1:13 1:268 1:269 1:264 1:265 2:364 2:420 2:13 2:28 2:4 2:262 2:257 2:263 2:264 2:265 2:22 +0:175 0:86 0:113 0:68 1:543 1:175 1:113 1:68 1:22 2:175 2:86 2:113 2:68 2:755 +0:44 0:94 0:95 0:33 0:96 0:97 1:44 1:94 1:1332 1:1333 1:33 1:96 1:97 2:44 2:1015 2:98 2:95 2:419 2:388 2:96 2:97 +0:283 0:67 0:68 0:69 1:283 1:65 1:65 1:65 1:65 1:65 1:65 1:65 1:65 1:67 1:68 1:69 1:22 2:283 2:4 2:1099 2:67 2:68 2:69 +0:135 0:56 0:79 0:96 0:97 1:135 1:56 1:252 1:96 1:97 2:135 2:56 2:419 2:96 2:97 2:22 2:151 2:788 2:56 2:79 2:22 +0:135 0:56 0:79 0:96 0:97 1:135 1:56 1:252 1:96 1:97 2:28 2:883 2:135 2:884 2:4 2:13 2:56 2:79 2:33 2:96 2:97 2:22 2:22 +0:389 0:390 0:391 0:392 1:389 1:393 1:4 1:391 1:392 2:389 2:390 2:1375 2:391 2:392 +0:558 0:559 0:16 0:560 0:75 0:68 0:76 1:560 1:16 1:558 1:559 1:75 1:480 1:76 2:1269 2:16 2:558 2:562 2:75 2:68 2:76 2:48 +0:155 0:1 0:2 0:91 0:156 0:157 0:158 1:157 1:158 1:14 1:219 1:1 1:2 2:75 2:468 2:298 2:159 2:1 2:2 2:708 2:1184 2:91 2:156 2:157 2:221 2:70 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:117 1:118 1:4 1:119 1:120 1:1100 1:1101 1:93 2:123 2:587 2:121 2:124 2:1234 2:1235 2:557 2:134 2:124 2:4 2:130 2:48 2:22 2:124 2:86 2:134 2:28 2:4 2:48 2:22 +0:660 0:661 0:662 0:663 0:664 0:665 0:148 0:666 0:14 0:39 1:660 1:450 1:709 1:663 1:664 1:665 1:148 1:666 2:1257 2:13 2:177 2:13 2:28 2:1 2:664 2:44 2:10 2:1258 2:13 2:454 2:1259 2:1260 2:10 2:13 2:278 2:13 2:664 2:665 2:148 2:666 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:1 1:123 1:117 1:118 1:4 1:130 1:13 1:454 1:86 1:298 1:28 1:117 1:196 1:48 1:22 2:148 2:394 2:124 2:924 2:4 2:130 2:120 2:121 2:122 2:48 +0:44 0:45 0:46 0:47 0:48 1:1 1:45 1:178 1:44 1:46 1:47 1:48 1:22 2:808 2:44 2:613 2:46 2:47 2:492 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:272 1:118 1:119 1:605 1:121 1:122 2:831 2:454 2:4 2:130 2:124 2:298 2:48 +0:155 0:1 0:2 0:91 0:156 0:157 0:158 1:14 1:578 1:1 1:2 1:91 1:156 1:157 1:1430 2:159 2:91 2:156 2:157 2:158 +0:117 0:118 0:4 0:119 0:120 0:121 0:122 0:48 1:1 1:123 1:117 1:118 1:4 1:130 1:13 1:454 1:86 1:298 1:28 1:117 1:196 1:48 1:22 2:119 2:132 2:118 2:208 2:48 +0:75 0:68 0:30 0:432 0:86 0:433 0:434 0:178 0:4 0:435 1:75 1:68 1:30 1:432 1:144 1:365 1:436 1:178 1:433 1:435 2:181 2:602 2:432 2:144 2:433 2:434 2:178 2:4 2:435 +0:329 0:330 0:75 0:331 0:332 0:333 0:332 0:334 0:332 0:335 0:172 0:67 0:68 0:69 1:329 1:330 1:75 1:331 1:332 1:333 1:332 1:334 1:332 1:335 1:172 1:67 1:68 1:69 2:159 2:336 2:337 2:67 2:331 2:332 2:333 2:332 2:26 2:334 2:332 2:4 diff --git a/models/match/multiview-simnet/evaluate_reader.py b/models/match/multiview-simnet/evaluate_reader.py old mode 100755 new mode 100644 index 7d800fe426435ba609aca1c5b62123fb13c306ab..b3e7849fe4bc9a8766e4bab72f50e266d949dfc9 --- a/models/match/multiview-simnet/evaluate_reader.py +++ b/models/match/multiview-simnet/evaluate_reader.py @@ -1,5 +1,4 @@ # Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -40,8 +39,8 @@ class Reader(ReaderBase): padding = 0 output = [(slot, []) for slot in self.all_slots] for elem in elements: - feasign, slot = elem.split(':') - if not self._all_slots_dict.has_key(slot): + slot, feasign = elem.split(':') + if slot not in self._all_slots_dict: continue self._all_slots_dict[slot][0] = True index = self._all_slots_dict[slot][1] diff --git a/models/match/multiview-simnet/generate_synthetic_data.py b/models/match/multiview-simnet/generate_synthetic_data.py deleted file mode 100755 index eb60e5c82f9decc2cfcd87da7bc6832ca98ee9d4..0000000000000000000000000000000000000000 --- a/models/match/multiview-simnet/generate_synthetic_data.py +++ /dev/null @@ -1,102 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import random - - -class Dataset: - def __init__(self): - pass - - -class SyntheticDataset(Dataset): - def __init__(self, - sparse_feature_dim, - query_slot_num, - title_slot_num, - dataset_size=10000): - # ids are randomly generated - self.ids_per_slot = 10 - self.sparse_feature_dim = sparse_feature_dim - self.query_slot_num = query_slot_num - self.title_slot_num = title_slot_num - self.dataset_size = dataset_size - - def _reader_creator(self, is_train): - def generate_ids(num, space): - return [random.randint(0, space - 1) for i in range(num)] - - def reader(): - for i in range(self.dataset_size): - query_slots = [] - pos_title_slots = [] - neg_title_slots = [] - for i in range(self.query_slot_num): - qslot = generate_ids(self.ids_per_slot, - self.sparse_feature_dim) - qslot = [str(fea) + ':' + str(i) for fea in qslot] - query_slots += qslot - for i in range(self.title_slot_num): - pt_slot = generate_ids(self.ids_per_slot, - self.sparse_feature_dim) - pt_slot = [ - str(fea) + ':' + str(i + self.query_slot_num) - for fea in pt_slot - ] - pos_title_slots += pt_slot - if is_train: - for i in range(self.title_slot_num): - nt_slot = generate_ids(self.ids_per_slot, - self.sparse_feature_dim) - nt_slot = [ - str(fea) + ':' + - str(i + self.query_slot_num + self.title_slot_num) - for fea in nt_slot - ] - neg_title_slots += nt_slot - yield query_slots + pos_title_slots + neg_title_slots - else: - yield query_slots + pos_title_slots - - return reader - - def train(self): - return self._reader_creator(True) - - def valid(self): - return self._reader_creator(True) - - def test(self): - return self._reader_creator(False) - - -if __name__ == '__main__': - sparse_feature_dim = 1000001 - query_slots = 1 - title_slots = 1 - dataset_size = 10 - dataset = SyntheticDataset(sparse_feature_dim, query_slots, title_slots, - dataset_size) - train_reader = dataset.train() - test_reader = dataset.test() - - with open("data/train/train.txt", 'w') as fout: - for data in train_reader(): - fout.write(' '.join(data)) - fout.write("\n") - - with open("data/test/test.txt", 'w') as fout: - for data in test_reader(): - fout.write(' '.join(data)) - fout.write("\n") diff --git a/models/match/multiview-simnet/reader.py b/models/match/multiview-simnet/reader.py old mode 100755 new mode 100644 index 8fe6402876f814a8b6692285c9855796d1d05b6e..d3cb170f44127f6444405ea98f179c21691d678f --- a/models/match/multiview-simnet/reader.py +++ b/models/match/multiview-simnet/reader.py @@ -43,8 +43,8 @@ class Reader(ReaderBase): padding = 0 output = [(slot, []) for slot in self.all_slots] for elem in elements: - feasign, slot = elem.split(':') - if not self._all_slots_dict.has_key(slot): + slot, feasign = elem.split(':') + if slot not in self._all_slots_dict: continue self._all_slots_dict[slot][0] = True index = self._all_slots_dict[slot][1] diff --git a/models/match/multiview-simnet/readme.md b/models/match/multiview-simnet/readme.md new file mode 100644 index 0000000000000000000000000000000000000000..4a59d851bbc26365d9120985d8163bd105f9ec95 --- /dev/null +++ b/models/match/multiview-simnet/readme.md @@ -0,0 +1,127 @@ +# multiview-simnet文本匹配模型 + +以下是本例的简要目录结构及说明: + +``` +├── data #样例数据 + ├── train + ├── train.txt #训练数据样例 + ├── test + ├── test.txt #测试数据样例 + ├── preprocess.py #数据处理程序 +├── __init__.py +├── README.md #文档 +├── model.py #模型文件 +├── config.yaml #配置文件 +├── run.sh #运行脚本,在效果复现时使用 +├── transform.py #整理格式准备计算指标的程序 +├── reader.py #读者需要自定义数据集时供读者参考 +├── evaluate_reader.py #读者需要自定义数据集时供读者参考 +``` +注:在阅读该示例前,建议您先了解以下内容: + +[paddlerec入门教程](https://github.com/PaddlePaddle/PaddleRec/blob/master/README.md) + +## 内容 + +- [模型简介](#模型简介) +- [数据准备](#数据准备) +- [运行环境](#运行环境) +- [快速开始](#快速开始) +- [效果复现](#效果复现) +- [进阶使用](#进阶使用) +- [FAQ](#FAQ) + + +## 模型简介 +在个性化推荐场景中,推荐系统给用户提供的项目(Item)列表通常是通过个性化的匹配模型计算出来的。在现实世界中,一个用户可能有很多个视角的特征,比如用户Id,年龄,项目的点击历史等。一个项目,举例来说,新闻资讯,也会有多种视角的特征比如新闻标题,新闻类别等。多视角Simnet模型是可以融合用户以及推荐项目的多个视角的特征并进行个性化匹配学习的一体化模型。 多视角Simnet模型包括多个编码器模块,每个编码器被用在不同的特征视角上。当前,项目中提供Bag-of-Embedding编码器,Temporal-Convolutional编码器,和Gated-Recurrent-Unit编码器。我们会逐渐加入稀疏特征场景下比较实用的编码器到这个项目中。模型的训练方法,当前采用的是Pairwise ranking模式进行训练,即针对一对具有关联的User-Item组合,随机实用一个Item作为负例进行排序学习。 + +模型的具体细节可以阅读论文[MultiView-Simnet](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/frp1159-songA.pdf): +
+ +
+ +## 数据准备 +我们公开了自建的测试集,包括百度知道、ECOM、QQSIM、UNICOM 四个数据集。这里我们选取百度知道数据集来进行训练。执行以下命令可以获取上述数据集。 +``` +wget --no-check-certificate https://baidu-nlp.bj.bcebos.com/simnet_dataset-1.0.0.tar.gz +tar xzf simnet_dataset-1.0.0.tar.gz +rm simnet_dataset-1.0.0.tar.gz +``` + +数据格式为一个标识句子的slot,后跟一个句子中词的token。两者形成{slot:token}的形式标识一个词: +``` +0:358 0:206 0:205 0:250 0:9 0:3 0:207 0:10 0:330 0:164 1:1144 1:217 1:206 1:9 1:3 1:207 1:10 1:398 1:2 2:217 2:206 2:9 2:3 2:207 2:10 2:398 2:2 +0:358 0:206 0:205 0:250 0:9 0:3 0:207 0:10 0:330 0:164 1:951 1:952 1:206 1:9 1:3 1:207 1:10 1:398 2:217 2:206 2:9 2:3 2:207 2:10 2:398 2:2 +``` + +## 运行环境 +PaddlePaddle>=1.7.2 +python 2.7 +PaddleRec >=0.1 +os : linux + +## 快速开始 +本文提供了样例数据可以供您快速体验,在paddlerec目录下直接执行下面的命令即可启动训练: + +``` +python -m paddlerec.run -m models/match/multiview-simnet/config.yaml +``` + + +## 效果复现 +为了方便使用者能够快速的跑通每一个模型,我们在每个模型下都提供了样例数据。如果需要复现readme中的效果,请按如下步骤依次操作即可。 +1. 确认您当前所在目录为PaddleRec/models/match/multiview-simnet +2. 在data目录下载并解压数据集,命令如下: +``` +cd data +wget --no-check-certificate https://baidu-nlp.bj.bcebos.com/simnet_dataset-1.0.0.tar.gz +tar xzf simnet_dataset-1.0.0.tar.gz +rm -f simnet_dataset-1.0.0.tar.gz +mv data/zhidao ./ +rm -rf data +``` +3. 本文提供了快速将数据集中的汉字数据处理为可训练格式数据的脚本,您在解压数据集后,可以看见目录中存在一个名为zhidao的文件。然后能可以在python3环境下运行我们提供的preprocess.py文件。即可生成可以直接用于训练的数据目录test.txt,train.txt,label.txt和testquery.txt。将其放入train和test目录下以备训练时调用。命令如下: +``` +python3 preprocess.py +rm -f ./train/train.txt +mv train.txt ./train +rm -f ./test/test.txt +mv test.txt ./test +cd .. +``` +4. 退回tagspace目录中,打开文件config.yaml,更改其中的参数 + + 将workspace改为您当前的绝对路径。(可用pwd命令获取绝对路径) + +5. 执行脚本,开始训练.脚本会运行python -m paddlerec.run -m ./config.yaml启动训练,并将结果输出到result文件中。然后启动格式整理程序transform,最后计算正逆序比: +``` +sh run.sh +``` + +运行结果大致如下: +``` +................run................. +!!! The CPU_NUM is not specified, you should set CPU_NUM in the environment variable list. +CPU_NUM indicates that how many CPUPlace are used in the current task. +And if this parameter are set as N (equal to the number of physical CPU core) the program may be faster. + +export CPU_NUM=32 # for example, set CPU_NUM as number of physical CPU core which is 32. + +!!! The default number of CPU_NUM=1. +I0821 14:24:57.255358 7888 parallel_executor.cc:440] The Program will be executed on CPU using ParallelExecutor, 1 cards are used, so 1 programs are executed in parallel. +I0821 14:24:57.259166 7888 build_strategy.cc:365] SeqOnlyAllReduceOps:0, num_trainers:1 +I0821 14:24:57.262634 7888 parallel_executor.cc:307] Inplace strategy is enabled, when build_strategy.enable_inplace = True +I0821 14:24:57.264791 7888 parallel_executor.cc:375] Garbage collection strategy is enabled, when FLAGS_eager_delete_tensor_gb = 0 +103 +pnr: 1.17674418605 +query_num: 11 +pair_num: 468 468 +equal_num: 0 +正序率: 0.540598290598 +253 215 +``` +6. 提醒:因为采取较小的数据集进行训练和测试,得到指标的浮动程度会比较大。如果得到的指标不合预期,可以多次执行步骤5,即可获得合理的指标。 +## 进阶使用 + +## FAQ diff --git a/models/match/multiview-simnet/data_process.sh b/models/match/multiview-simnet/run.sh old mode 100755 new mode 100644 similarity index 62% rename from models/match/multiview-simnet/data_process.sh rename to models/match/multiview-simnet/run.sh index c8633cc7a41f62a29eee1778251b72a6f3b601eb..3d9a5bdbba832653ce30b556c19dd8449cda8869 --- a/models/match/multiview-simnet/data_process.sh +++ b/models/match/multiview-simnet/run.sh @@ -1,5 +1,3 @@ -#! /bin/bash - # Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -14,11 +12,14 @@ # See the License for the specific language governing permissions and # limitations under the License. - -set -e -echo "begin to prepare data" - -mkdir -p data/train -mkdir -p data/test - -python generate_synthetic_data.py +#!/bin/bash +echo "................run................." +python -m paddlerec.run -m ./config.yaml >result1.txt +grep -i "query_pt_sim" ./result1.txt >./result2.txt +sed '$d' result2.txt >result.txt +rm -f result1.txt +rm -f result2.txt +python transform.py +sort -t $'\t' -k1,1 -k 2nr,2 pair.txt >result.txt +rm -f pair.txt +python ../../../tools/cal_pos_neg.py result.txt diff --git a/models/match/multiview-simnet/transform.py b/models/match/multiview-simnet/transform.py new file mode 100644 index 0000000000000000000000000000000000000000..2f26b05715a87e768476673bf6531270c2d400e6 --- /dev/null +++ b/models/match/multiview-simnet/transform.py @@ -0,0 +1,53 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import random +import numpy as np + +label = [] +filename = './data/label.txt' +f = open(filename, "r") +f.readline() +num = 0 +for line in f.readlines(): + num = num + 1 + line = line.strip() + label.append(line) +f.close() +print(num) + +filename = './result.txt' +sim = [] +for line in open(filename): + line = line.strip().split(",") + line[1] = line[1].split(":") + line = line[1][1].strip(" ") + line = line.strip("[") + line = line.strip("]") + sim.append(float(line)) + +filename = './data/testquery.txt' +f = open(filename, "r") +f.readline() +query = [] +for line in f.readlines(): + line = line.strip() + query.append(line) +f.close() + +filename = 'pair.txt' +f = open(filename, "w") +for i in range(len(sim)): + f.write(str(query[i]) + "\t" + str(sim[i]) + "\t" + str(label[i]) + "\n") +f.close() diff --git a/tools/cal_pos_neg.py b/tools/cal_pos_neg.py index 3f349aef2022181bace5dade79c898937be4783b..3783bf542c8867f244910c1ce764e4fc6e450135 100644 --- a/tools/cal_pos_neg.py +++ b/tools/cal_pos_neg.py @@ -11,14 +11,8 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -#!/usr/bin/python -#-*- coding:utf-8 -*- -############################ -#File Name: cal_pos_neg.py -#Author: youqiheng -#Mail: youqiheng@baidu.com -#Created Time: 2018-04-15 21:59:45 -############################ +#!/usr/bin/python +#-*- coding:utf-8 -*- """ docstring """