From acc5c1281b50c12e4d04c81b899410f6ca2cacac Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期二, 15 四月 2025 15:13:30 +0800 Subject: [PATCH] add: 增加航班和火车票 --- app.py | 254 +++ .gitignore | 111 + data/train.txt | 3082 +++++++++++++++++++++--------------------- train_flight_ner.py | 297 ++++ check_labels.py | 7 ner_config.py | 184 ++ data/flight.txt | 0 train_train_ner.py | 289 ++++ 8 files changed, 2,660 insertions(+), 1,564 deletions(-) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..be34a4c --- /dev/null +++ b/.gitignore @@ -0,0 +1,111 @@ +/models/ner_model/ +/.idea/.gitignore +/models/classifier/checkpoint-11/config.json +/models/classifier/checkpoint-22/config.json +/models/classifier/checkpoint-33/config.json +/models/classifier/config.json +/models/income_model/best_model/config.json +/models/income_model/checkpoint-25/config.json +/models/income_model/checkpoint-75/config.json +/models/repayment_model/best_model/config.json +/models/repayment_model/checkpoint-75/config.json +/models/repayment_model/checkpoint-125/config.json +/models/classifier/confusion_matrix.png +/logs_ner/seed_0/events.out.tfevents.1742464122.DESKTOP-U3O8B5H.5008.0 +/logs_ner/seed_0/events.out.tfevents.1742469089.DESKTOP-U3O8B5H.8812.0 +/logs_ner/seed_0/events.out.tfevents.1742470664.DESKTOP-U3O8B5H.8812.1 +/logs_ner/seed_1/events.out.tfevents.1742470670.DESKTOP-U3O8B5H.8812.2 +/logs_ner/seed_1/events.out.tfevents.1742472137.DESKTOP-U3O8B5H.8812.3 +/logs_ner/seed_0/events.out.tfevents.1742522311.DESKTOP-U3O8B5H.9272.0 +/logs_ner/seed_0/events.out.tfevents.1742523686.DESKTOP-U3O8B5H.9272.1 +/logs_ner/seed_0/events.out.tfevents.1742529705.DESKTOP-U3O8B5H.11904.0 +/logs_ner/seed_0/events.out.tfevents.1742531427.DESKTOP-U3O8B5H.11904.1 +/logs_ner/seed_0/events.out.tfevents.1742534893.DESKTOP-U3O8B5H.14104.0 +/logs_ner/seed_0/events.out.tfevents.1742535919.DESKTOP-U3O8B5H.14104.1 +/logs_ner/seed_0/events.out.tfevents.1742536567.DESKTOP-U3O8B5H.11136.0 +/logs_ner/seed_0/events.out.tfevents.1742537539.DESKTOP-U3O8B5H.11136.1 +/logs_ner/seed_0/events.out.tfevents.1742538119.DESKTOP-U3O8B5H.8680.0 +/logs_ner/seed_0/events.out.tfevents.1742540436.DESKTOP-U3O8B5H.8680.1 +/logs_repayment/events.out.tfevents.1742888152.DESKTOP-U3O8B5H.3584.0 +/logs_repayment/events.out.tfevents.1742890775.DESKTOP-U3O8B5H.6340.0 +/logs_repayment/events.out.tfevents.1742891151.DESKTOP-U3O8B5H.9964.0 +/logs_repayment/events.out.tfevents.1742893885.DESKTOP-U3O8B5H.12032.0 +/logs_repayment/events.out.tfevents.1742896256.DESKTOP-U3O8B5H.12032.1 +/logs_repayment/events.out.tfevents.1742953278.DESKTOP-U3O8B5H.9672.0 +/logs_repayment/events.out.tfevents.1742955624.DESKTOP-U3O8B5H.9672.1 +/logs_repayment/events.out.tfevents.1742957041.DESKTOP-U3O8B5H.6900.0 +/logs_repayment/events.out.tfevents.1742959423.DESKTOP-U3O8B5H.6900.1 +/logs_repayment/events.out.tfevents.1742966658.DESKTOP-U3O8B5H.7856.0 +/logs_repayment/events.out.tfevents.1742969310.DESKTOP-U3O8B5H.7856.1 +/logs_income/events.out.tfevents.1743057915.DESKTOP-U3O8B5H.196.0 +/logs_income/events.out.tfevents.1743059103.DESKTOP-U3O8B5H.196.1 +/logs_ner/seed_0/events.out.tfevents.1744093403.DESKTOP-U3O8B5H.10748.0 +/.idea/git_toolbox_prj.xml +/models/income_model.zip +/.idea/misc.xml +/models/income_model/best_model/model.safetensors +/models/income_model/checkpoint-25/model.safetensors +/models/income_model/checkpoint-75/model.safetensors +/models/repayment_model/best_model/model.safetensors +/models/repayment_model/checkpoint-75/model.safetensors +/models/repayment_model/checkpoint-125/model.safetensors +/.idea/modules.xml +/models/ner_model.zip +/models/classifier/checkpoint-11/optimizer.pt +/models/classifier/checkpoint-22/optimizer.pt +/models/classifier/checkpoint-33/optimizer.pt +/models/income_model/checkpoint-25/optimizer.pt +/models/income_model/checkpoint-75/optimizer.pt +/models/repayment_model/checkpoint-75/optimizer.pt +/models/repayment_model/checkpoint-125/optimizer.pt +/.idea/other.xml +/.idea/inspectionProfiles/profiles_settings.xml +/.idea/inspectionProfiles/Project_Default.xml +/.idea/pythonProject.iml +/models/classifier/checkpoint-11/pytorch_model.bin +/models/classifier/checkpoint-22/pytorch_model.bin +/models/classifier/checkpoint-33/pytorch_model.bin +/models/classifier/pytorch_model.bin +/models/repayment_model.zip +/models/classifier/checkpoint-11/rng_state.pth +/models/classifier/checkpoint-22/rng_state.pth +/models/classifier/checkpoint-33/rng_state.pth +/models/income_model/checkpoint-25/rng_state.pth +/models/income_model/checkpoint-75/rng_state.pth +/models/repayment_model/checkpoint-75/rng_state.pth +/models/repayment_model/checkpoint-125/rng_state.pth +/models/classifier/checkpoint-11/scheduler.pt +/models/classifier/checkpoint-22/scheduler.pt +/models/classifier/checkpoint-33/scheduler.pt +/models/income_model/checkpoint-25/scheduler.pt +/models/income_model/checkpoint-75/scheduler.pt +/models/repayment_model/checkpoint-75/scheduler.pt +/models/repayment_model/checkpoint-125/scheduler.pt +/models/classifier/special_tokens_map.json +/models/income_model/best_model/special_tokens_map.json +/models/repayment_model/best_model/special_tokens_map.json +/models/income_model/best_model/tokenizer.json +/models/repayment_model/best_model/tokenizer.json +/models/classifier/tokenizer_config.json +/models/income_model/best_model/tokenizer_config.json +/models/repayment_model/best_model/tokenizer_config.json +/models/classifier/checkpoint-11/trainer_state.json +/models/classifier/checkpoint-22/trainer_state.json +/models/classifier/checkpoint-33/trainer_state.json +/models/income_model/checkpoint-25/trainer_state.json +/models/income_model/checkpoint-75/trainer_state.json +/models/repayment_model/checkpoint-75/trainer_state.json +/models/repayment_model/checkpoint-125/trainer_state.json +/models/classifier/checkpoint-11/training_args.bin +/models/classifier/checkpoint-22/training_args.bin +/models/classifier/checkpoint-33/training_args.bin +/models/income_model/best_model/training_args.bin +/models/income_model/checkpoint-25/training_args.bin +/models/income_model/checkpoint-75/training_args.bin +/models/repayment_model/best_model/training_args.bin +/models/repayment_model/checkpoint-75/training_args.bin +/models/repayment_model/checkpoint-125/training_args.bin +/.idea/vcs.xml +/models/classifier/vocab.txt +/models/income_model/best_model/vocab.txt +/models/repayment_model/best_model/vocab.txt diff --git a/app.py b/app.py index f697651..47aa332 100644 --- a/app.py +++ b/app.py @@ -7,7 +7,7 @@ from transformers import BertTokenizer, BertForSequenceClassification, AutoTokenizer, AutoModelForTokenClassification import torch from werkzeug.exceptions import BadRequest -from ner_config import NERConfig, RepaymentNERConfig, IncomeNERConfig +from ner_config import NERConfig, RepaymentNERConfig, IncomeNERConfig, FlightNERConfig, TrainNERConfig import re # 配置日志 @@ -27,6 +27,8 @@ self.ner_path = "./models/ner_model/best_model" self.repayment_path = "./models/repayment_model/best_model" self.income_path = "./models/income_model/best_model" + self.flight_path = "./models/flight_model/best_model" + self.train_path = "./models/train_model/best_model" # 添加火车票模型路径 # 检查模型文件 self._check_model_files() @@ -36,12 +38,16 @@ self.ner_tokenizer, self.ner_model = self._load_ner() self.repayment_tokenizer, self.repayment_model = self._load_repayment() self.income_tokenizer, self.income_model = self._load_income() + self.flight_tokenizer, self.flight_model = self._load_flight() + self.train_tokenizer, self.train_model = self._load_train() # 加载火车票模型 # 将模型设置为评估模式 self.classifier_model.eval() self.ner_model.eval() self.repayment_model.eval() self.income_model.eval() + self.flight_model.eval() + self.train_model.eval() # 设置火车票模型为评估模式 def _check_model_files(self): """检查模型文件是否存在""" @@ -53,6 +59,10 @@ raise RuntimeError("还款模型文件不存在,请先运行训练脚本") if not os.path.exists(self.income_path): raise RuntimeError("收入模型文件不存在,请先运行训练脚本") + if not os.path.exists(self.flight_path): + raise RuntimeError("航班模型文件不存在,请先运行训练脚本") + if not os.path.exists(self.train_path): + raise RuntimeError("火车票模型文件不存在,请先运行训练脚本") def _load_classifier(self) -> Tuple[BertTokenizer, BertForSequenceClassification]: """加载分类模型""" @@ -94,6 +104,26 @@ logger.error(f"加载收入模型失败: {str(e)}") raise + def _load_flight(self): + """加载航班模型""" + try: + tokenizer = AutoTokenizer.from_pretrained(self.flight_path) + model = AutoModelForTokenClassification.from_pretrained(self.flight_path) + return tokenizer, model + except Exception as e: + logger.error(f"加载航班模型失败: {str(e)}") + raise + + def _load_train(self): + """加载火车票模型""" + try: + tokenizer = AutoTokenizer.from_pretrained(self.train_path) + model = AutoModelForTokenClassification.from_pretrained(self.train_path) + return tokenizer, model + except Exception as e: + logger.error(f"加载火车票模型失败: {str(e)}") + raise + def classify_sms(self, text: str) -> str: """对短信进行分类""" try: @@ -120,7 +150,7 @@ "company": None, # 寄件公司 "address": None, # 地址 "pickup_code": None, # 取件码 - "time": None # 时间 + "time": None # 添加时间字段 } # 第一阶段:直接从文本中提取取件码 @@ -662,6 +692,222 @@ logger.error(f"收入实体提取失败: {str(e)}") raise + def extract_flight_entities(self, text: str) -> Dict[str, Optional[str]]: + """提取航班相关实体""" + try: + # 初始化结果字典 + result = { + "flight": None, # 航班号 + "company": None, # 航空公司 + "start": None, # 出发地 + "end": None, # 目的地 + "date": None, # 日期 + "time": None, # 时间 + "departure_time": None, # 起飞时间 + "arrival_time": None, # 到达时间 + "ticket_num": None, # 机票号码 + "seat": None # 座位等信息 + } + + # 使用NER模型提取实体 + inputs = self.flight_tokenizer( + text, + return_tensors="pt", + truncation=True, + max_length=FlightNERConfig.MAX_LENGTH + ) + + with torch.no_grad(): + outputs = self.flight_model(**inputs) + + predictions = torch.argmax(outputs.logits, dim=2) + tokens = self.flight_tokenizer.convert_ids_to_tokens(inputs["input_ids"][0]) + tags = [self.flight_model.config.id2label[p] for p in predictions[0].numpy()] + + # 解析实体 + current_entity = None + + for token, tag in zip(tokens, tags): + if tag.startswith("B-"): + if current_entity: + entity_type = current_entity["type"].lower() + result[entity_type] = current_entity["text"].replace("[UNK]", "").replace("##", "").strip() + current_entity = {"type": tag[2:], "text": token} + elif tag.startswith("I-") and current_entity and tag[2:] == current_entity["type"]: + current_entity["text"] += token + else: + if current_entity: + entity_type = current_entity["type"].lower() + result[entity_type] = current_entity["text"].replace("[UNK]", "").replace("##", "").strip() + current_entity = None + + # 处理最后一个实体 + if current_entity: + entity_type = current_entity["type"].lower() + result[entity_type] = current_entity["text"].replace("[UNK]", "").replace("##", "").strip() + + # 处理航班号格式 + if result["flight"]: + flight_no = result["flight"].upper() + # 清理航班号,只保留字母和数字 + flight_no = ''.join(c for c in flight_no if c.isalnum()) + # 验证航班号格式 + valid_pattern = re.compile(FlightNERConfig.FLIGHT_CONFIG['pattern']) + if valid_pattern.match(flight_no): + result["flight"] = flight_no + else: + # 尝试修复常见错误 + if len(flight_no) >= FlightNERConfig.FLIGHT_CONFIG['min_length'] and flight_no[:2].isalpha() and flight_no[2:].isdigit(): + result["flight"] = flight_no + else: + result["flight"] = None + + # 清理日期格式 + if result["date"]: + date_str = result["date"] + # 保留数字和常见日期分隔符 + date_str = ''.join(c for c in date_str if c.isdigit() or c in ['年', '月', '日', '-', '/', '.']) + result["date"] = date_str + + # 清理时间格式 + for time_field in ["time", "departure_time", "arrival_time"]: + if result[time_field]: + time_str = result[time_field] + # 保留数字和常见时间分隔符 + time_str = ''.join(c for c in time_str if c.isdigit() or c in [':', '时', '分', '点']) + result[time_field] = time_str + + # 处理机票号码 + if result["ticket_num"]: + ticket_num = result["ticket_num"] + # 清理机票号码,只保留字母和数字 + ticket_num = ''.join(c for c in ticket_num if c.isalnum()) + result["ticket_num"] = ticket_num + + # 处理座位信息 + if result["seat"]: + seat_str = result["seat"] + # 移除可能的额外空格和特殊字符 + seat_str = seat_str.replace(" ", "").strip() + result["seat"] = seat_str + + return result + except Exception as e: + logger.error(f"航班实体提取失败: {str(e)}") + raise + + def extract_train_entities(self, text: str) -> Dict[str, Optional[str]]: + """提取火车票相关实体""" + try: + # 初始化结果字典 + result = { + "company": None, # 12306 + "trips": None, # 车次 + "start": None, # 出发站 + "end": None, # 到达站 + "date": None, # 日期 + "time": None, # 时间 + "seat": None, # 座位等信息 + "name": None # 用户姓名 + } + + # 使用NER模型提取实体 + inputs = self.train_tokenizer( + text, + return_tensors="pt", + truncation=True, + max_length=TrainNERConfig.MAX_LENGTH + ) + + with torch.no_grad(): + outputs = self.train_model(**inputs) + + predictions = torch.argmax(outputs.logits, dim=2) + tokens = self.train_tokenizer.convert_ids_to_tokens(inputs["input_ids"][0]) + tags = [self.train_model.config.id2label[p] for p in predictions[0].numpy()] + + # 解析实体 + current_entity = None + + for token, tag in zip(tokens, tags): + if tag.startswith("B-"): + if current_entity: + entity_type = current_entity["type"].lower() + result[entity_type] = current_entity["text"].replace("[UNK]", "").replace("##", "").strip() + current_entity = {"type": tag[2:], "text": token} + elif tag.startswith("I-") and current_entity and tag[2:] == current_entity["type"]: + current_entity["text"] += token + else: + if current_entity: + entity_type = current_entity["type"].lower() + result[entity_type] = current_entity["text"].replace("[UNK]", "").replace("##", "").strip() + current_entity = None + + # 处理最后一个实体 + if current_entity: + entity_type = current_entity["type"].lower() + result[entity_type] = current_entity["text"].replace("[UNK]", "").replace("##", "").strip() + + # 处理公司名称,通常为12306 + if result["company"]: + company = result["company"].strip() + # 如果文本中检测不到公司名称,但包含12306,则默认为12306 + result["company"] = company + elif "12306" in text: + result["company"] = "12306" + + # 处理车次格式 + if result["trips"]: + trips_no = result["trips"].upper() + # 清理车次号,只保留字母和数字 + trips_no = ''.join(c for c in trips_no if c.isalnum() or c in ['/', '-']) + + # 验证车次格式 + valid_patterns = [re.compile(pattern) for pattern in TrainNERConfig.TRIPS_CONFIG['patterns']] + if any(pattern.match(trips_no) for pattern in valid_patterns): + result["trips"] = trips_no + else: + # 尝试修复常见错误 + if len(trips_no) >= TrainNERConfig.TRIPS_CONFIG['min_length'] and any(trips_no.startswith(t) for t in TrainNERConfig.TRIPS_CONFIG['train_types']): + result["trips"] = trips_no + elif trips_no.isdigit() and 1 <= len(trips_no) <= TrainNERConfig.TRIPS_CONFIG['max_length']: + result["trips"] = trips_no + else: + result["trips"] = None + + # 清理日期格式 + if result["date"]: + date_str = result["date"] + # 保留数字和常见日期分隔符 + date_str = ''.join(c for c in date_str if c.isdigit() or c in ['年', '月', '日', '-', '/', '.']) + result["date"] = date_str + + # 清理时间格式 + if result["time"]: + time_str = result["time"] + # 保留数字和常见时间分隔符 + time_str = ''.join(c for c in time_str if c.isdigit() or c in [':', '时', '分', '点']) + result["time"] = time_str + + # 处理座位信息 + if result["seat"]: + seat_str = result["seat"] + # 移除可能的额外空格和特殊字符 + seat_str = seat_str.replace(" ", "").strip() + result["seat"] = seat_str + + # 处理乘客姓名 + if result["name"]: + name = result["name"].strip() + # 移除可能的标点符号 + name = ''.join(c for c in name if c.isalnum() or c in ['*', '·']) + result["name"] = name + + return result + except Exception as e: + logger.error(f"火车票实体提取失败: {str(e)}") + raise + # 创建Flask应用 app = Flask(__name__) model_manager = ModelManager() @@ -695,6 +941,10 @@ details = model_manager.extract_repayment_entities(text) elif category == "收入": details = model_manager.extract_income_entities(text) + elif category == "航班": + details = model_manager.extract_flight_entities(text) + elif category == "火车票": # 添加火车票类别处理 + details = model_manager.extract_train_entities(text) else: details = {} diff --git a/check_labels.py b/check_labels.py index 94f03b7..ec54cc1 100644 --- a/check_labels.py +++ b/check_labels.py @@ -1,4 +1,5 @@ -from ner_config import RepaymentNERConfig +from ner_config import RepaymentNERConfig, FlightNERConfig, TrainNERConfig + # 脚本:校验非法格式 @@ -6,14 +7,14 @@ label_set = set() line_num = 0 - with open(RepaymentNERConfig.DATA_PATH, 'r', encoding='utf-8') as f: + with open(FlightNERConfig.DATA_PATH, 'r', encoding='utf-8') as f: for line in f: line_num += 1 line = line.strip() if line: try: _, label = line.split(maxsplit=1) - if label not in RepaymentNERConfig.LABELS: + if label not in FlightNERConfig.LABELS: print(f"行 {line_num}: 发现非法标签 '{label}'") label_set.add(label) except Exception as e: diff --git a/data/flinght.txt b/data/flight.txt similarity index 100% rename from data/flinght.txt rename to data/flight.txt diff --git a/data/train.txt b/data/train.txt index f16f728..adafdba 100644 --- a/data/train.txt +++ b/data/train.txt @@ -26,10 +26,10 @@ 8 O 1 O , O -5 B-DATA -月 I-DATA -4 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +4 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -99,10 +99,10 @@ 8 O 1 O , O -8 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -173,11 +173,11 @@ 8 O 1 O , O -1 B-DATA -2 I-DATA -月 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +5 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -247,10 +247,10 @@ 8 O 1 O , O -5 B-DATA -月 I-DATA -4 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +4 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -320,10 +320,10 @@ 8 O 1 O , O -8 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -394,11 +394,11 @@ 8 O 1 O , O -1 B-DATA -2 I-DATA -月 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +5 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -468,10 +468,10 @@ 8 O 1 O , O -5 B-DATA -月 I-DATA -4 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +4 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -542,11 +542,11 @@ 8 O 1 O , O -1 B-DATA -2 I-DATA -月 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +5 I-DATE +日 I-DATE Z B-TRIPS 3 I-TRIPS 8 I-TRIPS @@ -616,10 +616,10 @@ 8 O 1 O , O -5 B-DATA -月 I-DATA -4 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +4 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -689,10 +689,10 @@ 8 O 1 O , O -8 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -763,11 +763,11 @@ 8 O 1 O , O -1 B-DATA -2 I-DATA -月 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +5 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -837,10 +837,10 @@ 8 O 1 O , O -5 B-DATA -月 I-DATA -4 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +4 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -911,11 +911,11 @@ 8 O 1 O , O -1 B-DATA -2 I-DATA -月 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +5 I-DATE +日 I-DATE Z B-TRIPS 3 I-TRIPS 8 I-TRIPS @@ -985,10 +985,10 @@ 8 O 1 O , O -8 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE T B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -1059,11 +1059,11 @@ 8 O 1 O , O -1 B-DATA -2 I-DATA -月 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +5 I-DATE +日 I-DATE Z B-TRIPS 3 I-TRIPS 8 I-TRIPS @@ -1133,10 +1133,10 @@ 8 O 1 O , O -8 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE T B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -1206,11 +1206,11 @@ 8 O 1 O , O -1 B-DATA -2 I-DATA -月 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +5 I-DATE +日 I-DATE Z B-TRIPS 3 I-TRIPS 8 I-TRIPS @@ -1266,12 +1266,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -2 I-DATA -9 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +2 I-DATE +9 I-DATE +日 I-DATE K B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -1330,12 +1330,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE K B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -1393,12 +1393,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -2 I-DATA -9 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +2 I-DATE +9 I-DATE +日 I-DATE K B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -1457,12 +1457,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE T B-TRIPS 0 I-TRIPS 4 I-TRIPS @@ -1520,12 +1520,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE Z B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -1583,12 +1583,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE D B-TRIPS 4 I-TRIPS 5 I-TRIPS @@ -1659,11 +1659,11 @@ 1 O 2 O , O -1 B-DATA -0 I-DATA -月 I-DATA -7 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +7 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 0 I-TRIPS @@ -1731,12 +1731,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE C B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -1794,12 +1794,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE L B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -1857,12 +1857,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE Y B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -1918,12 +1918,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE G B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -1981,12 +1981,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE Y B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -2045,11 +2045,11 @@ 成 O 功 O , O -1 B-DATA -0 I-DATA -月 I-DATA -7 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +7 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 0 I-TRIPS @@ -2120,12 +2120,12 @@ 成 O 功 O , O -1 B-DATA -0 I-DATA -月 I-DATA -1 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +1 I-DATE +1 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -2200,11 +2200,11 @@ 1 O 2 O , O -1 B-DATA -0 I-DATA -月 I-DATA -7 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +7 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 0 I-TRIPS @@ -2272,12 +2272,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE Y B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -2333,12 +2333,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE G B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -2396,12 +2396,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE Y B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -2471,11 +2471,11 @@ 1 O 2 O , O -1 B-DATA -0 I-DATA -月 I-DATA -7 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +7 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 0 I-TRIPS @@ -2534,12 +2534,12 @@ 0 O 2 O , O -1 B-DATA -0 I-DATA -月 I-DATA -1 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +1 I-DATE +1 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -2596,11 +2596,11 @@ 1 O 2 O , O -1 B-DATA -0 I-DATA -月 I-DATA -7 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +7 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 0 I-TRIPS @@ -2659,12 +2659,12 @@ 0 O 2 O , O -1 B-DATA -0 I-DATA -月 I-DATA -1 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +1 I-DATE +1 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -2721,11 +2721,11 @@ 1 O 2 O , O -9 B-DATA -月 I-DATA -3 I-DATA -0 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +3 I-DATE +0 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 9 I-TRIPS @@ -2791,10 +2791,10 @@ 8 O 1 O , O -5 B-DATA -月 I-DATA -4 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +4 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -2844,11 +2844,11 @@ 6 O 7 O , O -8 B-DATA -月 I-DATA -1 I-DATA -4 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +1 I-DATE +4 I-DATE +日 I-DATE G B-TRIPS 5 I-TRIPS 3 I-TRIPS @@ -2895,11 +2895,11 @@ 8 O 7 O , O -8 B-DATA -月 I-DATA -1 I-DATA -6 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +1 I-DATE +6 I-DATE +日 I-DATE K B-TRIPS 9 I-TRIPS 7 I-TRIPS @@ -2953,10 +2953,10 @@ 8 O 1 O , O -6 B-DATA -月 I-DATA -7 I-DATA -日 I-DATA +6 B-DATE +月 I-DATE +7 I-DATE +日 I-DATE G B-TRIPS 8 I-TRIPS 4 I-TRIPS @@ -3014,11 +3014,11 @@ 8 O 1 O , O -2 B-DATA -月 I-DATA -2 I-DATA -5 I-DATA -日 I-DATA +2 B-DATE +月 I-DATE +2 I-DATE +5 I-DATE +日 I-DATE K B-TRIPS 3 I-TRIPS 2 I-TRIPS @@ -3078,12 +3078,12 @@ 8 O 1 O , O -1 B-DATA -1 I-DATA -月 I-DATA -1 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +1 I-DATE +月 I-DATE +1 I-DATE +5 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 3 I-TRIPS @@ -3141,11 +3141,11 @@ 8 O 1 O , O -4 B-DATA -月 I-DATA -1 I-DATA -2 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +1 I-DATE +2 I-DATE +日 I-DATE D B-TRIPS 9 I-TRIPS 8 I-TRIPS @@ -3206,10 +3206,10 @@ 8 O 1 O , O -8 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -3268,10 +3268,10 @@ 8 O 1 O , O -7 B-DATA -月 I-DATA -8 I-DATA -日 I-DATA +7 B-DATE +月 I-DATE +8 I-DATE +日 I-DATE Z B-TRIPS 6 I-TRIPS 4 I-TRIPS @@ -3339,10 +3339,10 @@ 8 O 1 O , O -8 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE T B-TRIPS 2 I-TRIPS 5 I-TRIPS @@ -3412,11 +3412,11 @@ 8 O 1 O , O -1 B-DATA -2 I-DATA -月 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +5 I-DATE +日 I-DATE Z B-TRIPS 8 I-TRIPS 9 I-TRIPS @@ -3472,12 +3472,12 @@ 成 O 功 O , O -1 B-DATA -0 I-DATA -月 I-DATA -3 I-DATA -0 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +3 I-DATE +0 I-DATE +日 I-DATE K B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -3536,11 +3536,11 @@ 成 O 功 O , O -9 B-DATA -月 I-DATA -2 I-DATA -5 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +2 I-DATE +5 I-DATE +日 I-DATE K B-TRIPS 3 I-TRIPS 1 I-TRIPS @@ -3573,12 +3573,12 @@ 成 O 功 O , O -1 B-DATA -1 I-DATA -月 I-DATA -2 I-DATA -0 I-DATA -日 I-DATA +1 B-DATE +1 I-DATE +月 I-DATE +2 I-DATE +0 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -3612,12 +3612,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE T B-TRIPS 2 I-TRIPS 3 I-TRIPS @@ -3673,10 +3673,10 @@ 成 O 功 O , O -2 B-DATA -月 I-DATA -3 I-DATA -日 I-DATA +2 B-DATE +月 I-DATE +3 I-DATE +日 I-DATE S B-TRIPS 1 I-TRIPS 0 I-TRIPS @@ -3736,11 +3736,11 @@ 成 O 功 O , O -7 B-DATA -月 I-DATA -1 I-DATA -2 I-DATA -日 I-DATA +7 B-DATE +月 I-DATE +1 I-DATE +2 I-DATE +日 I-DATE Z B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -3793,18 +3793,17 @@ 6 I-COMPANY 】 O 李 B-NAME - -I-NAME +四 I-NAME 购 O 票 O 成 O 功 O , O -8 B-DATA -月 I-DATA -3 I-DATA -0 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +3 I-DATE +0 I-DATE +日 I-DATE D B-TRIPS 6 I-TRIPS 5 I-TRIPS @@ -3861,11 +3860,11 @@ 成 O 功 O , O -9 B-DATA -月 I-DATA -0 I-DATA -9 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +0 I-DATE +9 I-DATE +日 I-DATE C B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -3923,11 +3922,11 @@ 成 O 功 O , O -5 B-DATA -月 I-DATA -1 I-DATA -1 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +1 I-DATE +1 I-DATE +日 I-DATE L B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -3986,11 +3985,11 @@ 成 O 功 O , O -6 B-DATA -月 I-DATA -2 I-DATA -4 I-DATA -日 I-DATA +6 B-DATE +月 I-DATE +2 I-DATE +4 I-DATE +日 I-DATE K B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -4048,11 +4047,11 @@ 成 O 功 O , O -5 B-DATA -月 I-DATA -2 I-DATA -6 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +2 I-DATE +6 I-DATE +日 I-DATE Y B-TRIPS 2 I-TRIPS 1 I-TRIPS @@ -4108,11 +4107,11 @@ 成 O 功 O , O -4 B-DATA -月 I-DATA -2 I-DATA -7 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +2 I-DATE +7 I-DATE +日 I-DATE G B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -4168,11 +4167,11 @@ 成 O 功 O , O -1 B-DATA -月 I-DATA -2 I-DATA -8 I-DATA -日 I-DATA +1 B-DATE +月 I-DATE +2 I-DATE +8 I-DATE +日 I-DATE Y B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -4240,11 +4239,11 @@ 1 O 2 O , O -9 B-DATA -月 I-DATA -1 I-DATA -9 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +1 I-DATE +9 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -4315,11 +4314,11 @@ 0 O 2 O , O -5 B-DATA -月 I-DATA -1 I-DATA -8 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +1 I-DATE +8 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -4392,11 +4391,11 @@ 0 O 2 O , O -8 B-DATA -月 I-DATA -1 I-DATA -3 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +1 I-DATE +3 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -4465,10 +4464,10 @@ 1 O 2 O , O -9 B-DATA -月 I-DATA -4 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +4 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -4546,11 +4545,11 @@ 8 O 1 O , O -1 B-DATA -1 I-DATA -月 I-DATA -3 I-DATA -日 I-DATA +1 B-DATE +1 I-DATE +月 I-DATE +3 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 5 I-TRIPS @@ -4612,10 +4611,10 @@ 8 O 7 O , O -3 B-DATA -月 I-DATA -1 I-DATA -日 I-DATA +3 B-DATE +月 I-DATE +1 I-DATE +日 I-DATE K B-TRIPS 3 I-TRIPS 6 I-TRIPS @@ -4681,10 +4680,10 @@ 8 O 1 O , O -6 B-DATA -月 I-DATA -7 I-DATA -日 I-DATA +6 B-DATE +月 I-DATE +7 I-DATE +日 I-DATE G B-TRIPS 8 I-TRIPS 4 I-TRIPS @@ -4754,11 +4753,11 @@ 8 O 1 O , O -2 B-DATA -月 I-DATA -2 I-DATA -5 I-DATA -日 I-DATA +2 B-DATE +月 I-DATE +2 I-DATE +5 I-DATE +日 I-DATE K B-TRIPS 3 I-TRIPS 2 I-TRIPS @@ -4830,12 +4829,12 @@ 8 O 1 O , O -1 B-DATA -1 I-DATA -月 I-DATA -1 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +1 I-DATE +月 I-DATE +1 I-DATE +5 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 3 I-TRIPS @@ -4905,11 +4904,11 @@ 8 O 1 O , O -4 B-DATA -月 I-DATA -1 I-DATA -2 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +1 I-DATE +2 I-DATE +日 I-DATE D B-TRIPS 9 I-TRIPS 8 I-TRIPS @@ -4982,10 +4981,10 @@ 8 O 1 O , O -8 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -5056,10 +5055,10 @@ 8 O 1 O , O -7 B-DATA -月 I-DATA -8 I-DATA -日 I-DATA +7 B-DATE +月 I-DATE +8 I-DATE +日 I-DATE Z B-TRIPS 6 I-TRIPS 4 I-TRIPS @@ -5129,10 +5128,10 @@ 8 O 1 O , O -8 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE T B-TRIPS 2 I-TRIPS 5 I-TRIPS @@ -5204,11 +5203,11 @@ 8 O 1 O , O -1 B-DATA -2 I-DATA -月 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +5 I-DATE +日 I-DATE Z B-TRIPS 8 I-TRIPS 9 I-TRIPS @@ -5266,12 +5265,12 @@ 成 O 功 O , O -1 B-DATA -0 I-DATA -月 I-DATA -3 I-DATA -0 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +3 I-DATE +0 I-DATE +日 I-DATE K B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -5328,11 +5327,11 @@ 成 O 功 O , O -9 B-DATA -月 I-DATA -2 I-DATA -5 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +2 I-DATE +5 I-DATE +日 I-DATE K B-TRIPS 3 I-TRIPS 1 I-TRIPS @@ -5388,12 +5387,12 @@ 成 O 功 O , O -1 B-DATA -1 I-DATA -月 I-DATA -2 I-DATA -0 I-DATA -日 I-DATA +1 B-DATE +1 I-DATE +月 I-DATE +2 I-DATE +0 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -5450,12 +5449,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE T B-TRIPS 2 I-TRIPS 3 I-TRIPS @@ -5509,10 +5508,10 @@ 成 O 功 O , O -2 B-DATA -月 I-DATA -3 I-DATA -日 I-DATA +2 B-DATE +月 I-DATE +3 I-DATE +日 I-DATE S B-TRIPS 1 I-TRIPS 0 I-TRIPS @@ -5569,11 +5568,11 @@ 成 O 功 O , O -7 B-DATA -月 I-DATA -1 I-DATA -2 I-DATA -日 I-DATA +7 B-DATE +月 I-DATE +1 I-DATE +2 I-DATE +日 I-DATE Z B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -5629,11 +5628,11 @@ 成 O 功 O , O -8 B-DATA -月 I-DATA -3 I-DATA -0 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +3 I-DATE +0 I-DATE +日 I-DATE D B-TRIPS 6 I-TRIPS 5 I-TRIPS @@ -5688,11 +5687,11 @@ 成 O 功 O , O -9 B-DATA -月 I-DATA -0 I-DATA -9 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +0 I-DATE +9 I-DATE +日 I-DATE C B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -5786,11 +5785,11 @@ 成 O 功 O , O -6 B-DATA -月 I-DATA -2 I-DATA -4 I-DATA -日 I-DATA +6 B-DATE +月 I-DATE +2 I-DATE +4 I-DATE +日 I-DATE K B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -5845,11 +5844,11 @@ 成 O 功 O , O -5 B-DATA -月 I-DATA -2 I-DATA -6 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +2 I-DATE +6 I-DATE +日 I-DATE Y B-TRIPS 2 I-TRIPS 1 I-TRIPS @@ -5904,11 +5903,11 @@ 成 O 功 O , O -4 B-DATA -月 I-DATA -2 I-DATA -7 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +2 I-DATE +7 I-DATE +日 I-DATE G B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -5965,11 +5964,11 @@ 成 O 功 O , O -1 B-DATA -月 I-DATA -2 I-DATA -8 I-DATA -日 I-DATA +1 B-DATE +月 I-DATE +2 I-DATE +8 I-DATE +日 I-DATE Y B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -6025,11 +6024,11 @@ 成 O 功 O , O -1 B-DATA -月 I-DATA -2 I-DATA -8 I-DATA -日 I-DATA +1 B-DATE +月 I-DATE +2 I-DATE +8 I-DATE +日 I-DATE Y B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -6098,11 +6097,11 @@ 1 O 2 O , O -9 B-DATA -月 I-DATA -1 I-DATA -9 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +1 I-DATE +9 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -6184,11 +6183,11 @@ 0 O 2 O , O -5 B-DATA -月 I-DATA -1 I-DATA -8 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +1 I-DATE +8 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -6272,11 +6271,11 @@ 0 O 2 O , O -5 B-DATA -月 I-DATA -1 I-DATA -8 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +1 I-DATE +8 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -6360,11 +6359,11 @@ 0 O 2 O , O -8 B-DATA -月 I-DATA -1 I-DATA -3 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +1 I-DATE +3 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -6434,11 +6433,11 @@ 0 O 2 O , O -8 B-DATA -月 I-DATA -1 I-DATA -3 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +1 I-DATE +3 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -6508,10 +6507,10 @@ 1 O 2 O , O -9 B-DATA -月 I-DATA -4 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +4 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -6600,11 +6599,11 @@ 8 O 1 O , O -1 B-DATA -1 I-DATA -月 I-DATA -3 I-DATA -日 I-DATA +1 B-DATE +1 I-DATE +月 I-DATE +3 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 5 I-TRIPS @@ -6667,11 +6666,11 @@ 6 O 7 O , O -5 B-DATA -月 I-DATA -1 I-DATA -7 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +1 I-DATE +7 I-DATE +日 I-DATE G B-TRIPS 8 I-TRIPS 9 I-TRIPS @@ -6732,10 +6731,10 @@ 8 O 7 O , O -3 B-DATA -月 I-DATA -1 I-DATA -日 I-DATA +3 B-DATE +月 I-DATE +1 I-DATE +日 I-DATE K B-TRIPS 3 I-TRIPS 6 I-TRIPS @@ -6802,11 +6801,11 @@ 8 O 1 O , O -3 B-DATA -月 I-DATA -1 I-DATA -2 I-DATA -日 I-DATA +3 B-DATE +月 I-DATE +1 I-DATE +2 I-DATE +日 I-DATE G B-TRIPS 8 I-TRIPS 2 I-TRIPS @@ -6879,11 +6878,11 @@ 8 O 1 O , O -2 B-DATA -月 I-DATA -2 I-DATA -1 I-DATA -日 I-DATA +2 B-DATE +月 I-DATE +2 I-DATE +1 I-DATE +日 I-DATE K B-TRIPS 3 I-TRIPS 1 I-TRIPS @@ -6956,12 +6955,12 @@ 8 O 1 O , O -1 B-DATA -2 I-DATA -月 I-DATA -0 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +0 I-DATE +5 I-DATE +日 I-DATE G B-TRIPS 4 I-TRIPS 5 I-TRIPS @@ -7032,11 +7031,11 @@ 8 O 1 O , O -4 B-DATA -月 I-DATA -1 I-DATA -3 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +1 I-DATE +3 I-DATE +日 I-DATE D B-TRIPS 9 I-TRIPS 3 I-TRIPS @@ -7109,11 +7108,11 @@ 8 O 1 O , O -8 B-DATA -月 I-DATA -1 I-DATA -3 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +1 I-DATE +3 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -7185,11 +7184,11 @@ 8 O 1 O , O -3 B-DATA -月 I-DATA -2 I-DATA -2 I-DATA -日 I-DATA +3 B-DATE +月 I-DATE +2 I-DATE +2 I-DATE +日 I-DATE Z B-TRIPS 6 I-TRIPS 5 I-TRIPS @@ -7260,10 +7259,10 @@ 8 O 1 O , O -1 B-DATA -月 I-DATA -2 I-DATA -日 I-DATA +1 B-DATE +月 I-DATE +2 I-DATE +日 I-DATE T B-TRIPS 2 I-TRIPS 4 I-TRIPS @@ -7335,10 +7334,10 @@ 8 O 1 O , O -4 B-DATA -月 I-DATA -6 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +6 I-DATE +日 I-DATE Z B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -7396,12 +7395,12 @@ 成 O 功 O , O -1 B-DATA -1 I-DATA -月 I-DATA -2 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +1 I-DATE +月 I-DATE +2 I-DATE +1 I-DATE +日 I-DATE K B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -7459,11 +7458,11 @@ 成 O 功 O , O -4 B-DATA -月 I-DATA -2 I-DATA -5 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +2 I-DATE +5 I-DATE +日 I-DATE K B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -7519,12 +7518,12 @@ 成 O 功 O , O -1 B-DATA -1 I-DATA -月 I-DATA -2 I-DATA -0 I-DATA -日 I-DATA +1 B-DATE +1 I-DATE +月 I-DATE +2 I-DATE +0 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -7582,12 +7581,12 @@ 成 O 功 O , O -1 B-DATA -0 I-DATA -月 I-DATA -3 I-DATA -0 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +3 I-DATE +0 I-DATE +日 I-DATE T B-TRIPS 8 I-TRIPS 9 I-TRIPS @@ -7642,10 +7641,10 @@ 成 O 功 O , O -1 B-DATA -月 I-DATA -3 I-DATA -日 I-DATA +1 B-DATE +月 I-DATE +3 I-DATE +日 I-DATE S B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -7704,11 +7703,11 @@ 成 O 功 O , O -7 B-DATA -月 I-DATA -1 I-DATA -2 I-DATA -日 I-DATA +7 B-DATE +月 I-DATE +1 I-DATE +2 I-DATE +日 I-DATE Z B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -7765,11 +7764,11 @@ 成 O 功 O , O -8 B-DATA -月 I-DATA -3 I-DATA -0 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +3 I-DATE +0 I-DATE +日 I-DATE D B-TRIPS 6 I-TRIPS 5 I-TRIPS @@ -7824,11 +7823,11 @@ 成 O 功 O , O -2 B-DATA -月 I-DATA -0 I-DATA -3 I-DATA -日 I-DATA +2 B-DATE +月 I-DATE +0 I-DATE +3 I-DATE +日 I-DATE C B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -7884,11 +7883,11 @@ 成 O 功 O , O -3 B-DATA -月 I-DATA -1 I-DATA -1 I-DATA -日 I-DATA +3 B-DATE +月 I-DATE +1 I-DATE +1 I-DATE +日 I-DATE L B-TRIPS 8 I-TRIPS 1 I-TRIPS @@ -7944,11 +7943,11 @@ 成 O 功 O , O -4 B-DATA -月 I-DATA -1 I-DATA -4 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +1 I-DATE +4 I-DATE +日 I-DATE K B-TRIPS 9 I-TRIPS 8 I-TRIPS @@ -8005,11 +8004,11 @@ 成 O 功 O , O -7 B-DATA -月 I-DATA -2 I-DATA -9 I-DATA -日 I-DATA +7 B-DATE +月 I-DATE +2 I-DATE +9 I-DATE +日 I-DATE Y B-TRIPS 2 I-TRIPS 7 I-TRIPS @@ -8065,11 +8064,11 @@ 成 O 功 O , O -8 B-DATA -月 I-DATA -2 I-DATA -3 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +2 I-DATE +3 I-DATE +日 I-DATE G B-TRIPS 1 I-TRIPS 9 I-TRIPS @@ -8127,11 +8126,11 @@ 成 O 功 O , O -1 B-DATA -月 I-DATA -2 I-DATA -8 I-DATA -日 I-DATA +1 B-DATE +月 I-DATE +2 I-DATE +8 I-DATE +日 I-DATE Y B-TRIPS 1 I-TRIPS 9 I-TRIPS @@ -8200,11 +8199,11 @@ 1 O 2 O , O -5 B-DATA -月 I-DATA -0 I-DATA -9 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +0 I-DATE +9 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -8289,11 +8288,11 @@ 0 O 2 O , O -4 B-DATA -月 I-DATA -0 I-DATA -8 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +0 I-DATE +8 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -8380,11 +8379,11 @@ 0 O 2 O , O -3 B-DATA -月 I-DATA -2 I-DATA -3 I-DATA -日 I-DATA +3 B-DATE +月 I-DATE +2 I-DATE +3 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -8457,10 +8456,10 @@ 1 O 2 O , O -2 B-DATA -月 I-DATA -7 I-DATA -日 I-DATA +2 B-DATE +月 I-DATE +7 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 3 I-TRIPS @@ -8552,11 +8551,11 @@ 8 O 1 O , O -1 B-DATA -1 I-DATA -月 I-DATA -3 I-DATA -日 I-DATA +1 B-DATE +1 I-DATE +月 I-DATE +3 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 5 I-TRIPS @@ -8619,11 +8618,11 @@ 6 O 7 O , O -5 B-DATA -月 I-DATA -1 I-DATA -7 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +1 I-DATE +7 I-DATE +日 I-DATE G B-TRIPS 8 I-TRIPS 9 I-TRIPS @@ -8684,10 +8683,10 @@ 8 O 7 O , O -3 B-DATA -月 I-DATA -1 I-DATA -日 I-DATA +3 B-DATE +月 I-DATE +1 I-DATE +日 I-DATE K B-TRIPS 3 I-TRIPS 6 I-TRIPS @@ -8752,11 +8751,11 @@ 4 O 5 O , O -5 B-DATA -月 I-DATA -2 I-DATA -0 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +2 I-DATE +0 I-DATE +日 I-DATE G B-TRIPS 1 I-TRIPS 0 I-TRIPS @@ -8847,10 +8846,10 @@ 6 O 2 O ( O -6 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +6 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 0 I-TRIPS @@ -8877,10 +8876,10 @@ 改 O 签 O 为 O -6 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +6 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE G B-TRIPS 1 I-TRIPS 5 I-TRIPS @@ -8924,11 +8923,11 @@ 影 O 响 O , O -7 B-DATA -月 I-DATA -1 I-DATA -8 I-DATA -日 I-DATA +7 B-DATE +月 I-DATE +1 I-DATE +8 I-DATE +日 I-DATE D B-TRIPS 3 I-TRIPS 1 I-TRIPS @@ -8991,11 +8990,11 @@ 乘 O 客 O , O -9 B-DATA -月 I-DATA -1 I-DATA -2 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +1 I-DATE +2 I-DATE +日 I-DATE C B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -9086,11 +9085,11 @@ 3 O 4 O , O -1 B-DATA -0 I-DATA -月 I-DATA -8 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +8 I-DATE +日 I-DATE Z B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -9184,11 +9183,11 @@ 兑 O 换 O 的 O -1 B-DATA -1 I-DATA -月 I-DATA -3 I-DATA -日 I-DATA +1 B-DATE +1 I-DATE +月 I-DATE +3 I-DATE +日 I-DATE G B-TRIPS 7 I-TRIPS 0 I-TRIPS @@ -9255,11 +9254,11 @@ 2 O 1 O , O -8 B-DATA -月 I-DATA -1 I-DATA -5 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +1 I-DATE +5 I-DATE +日 I-DATE G B-TRIPS 1 I-TRIPS 3 I-TRIPS @@ -9318,10 +9317,10 @@ 建 O 国 O , O -7 B-DATA -月 I-DATA -1 I-DATA -日 I-DATA +7 B-DATE +月 I-DATE +1 I-DATE +日 I-DATE G B-TRIPS 9 I-TRIPS 9 I-TRIPS @@ -9389,11 +9388,11 @@ 4 I-TRIPS 次 I-TRIPS ( O -9 B-DATA -月 I-DATA -3 I-DATA -0 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +3 I-DATE +0 I-DATE +日 I-DATE 2 B-TIME 3 I-TIME : I-TIME @@ -9470,12 +9469,12 @@ 1 O 9 O , O -1 B-DATA -0 I-DATA -月 I-DATA -1 I-DATA -0 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +1 I-DATE +0 I-DATE +日 I-DATE D B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -9543,12 +9542,12 @@ 1 O 9 O , O -1 B-DATA -0 I-DATA -月 I-DATA -1 I-DATA -0 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +1 I-DATE +0 I-DATE +日 I-DATE D B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -9618,10 +9617,10 @@ 4 O 5 O , O -3 B-DATA -月 I-DATA -8 I-DATA -日 I-DATA +3 B-DATE +月 I-DATE +8 I-DATE +日 I-DATE K B-TRIPS 4 I-TRIPS 5 I-TRIPS @@ -9675,11 +9674,11 @@ 调 O 整 O 原 O -4 B-DATA -月 I-DATA -1 I-DATA -7 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +1 I-DATE +7 I-DATE +日 I-DATE T B-TRIPS 3 I-TRIPS 6 I-TRIPS @@ -9738,10 +9737,10 @@ 查 O 询 O 的 O -9 B-DATA -月 I-DATA -9 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +9 I-DATE +日 I-DATE ( O 深 B-START 圳 I-START @@ -9817,11 +9816,11 @@ 2 O 3 O , O -6 B-DATA -月 I-DATA -1 I-DATA -8 I-DATA -日 I-DATA +6 B-DATE +月 I-DATE +1 I-DATE +8 I-DATE +日 I-DATE G B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -9879,11 +9878,11 @@ 施 O 工 O , O -7 B-DATA -月 I-DATA -2 I-DATA -2 I-DATA -日 I-DATA +7 B-DATE +月 I-DATE +2 I-DATE +2 I-DATE +日 I-DATE K B-TRIPS 5 I-TRIPS 6 I-TRIPS @@ -9930,11 +9929,11 @@ 成 O 功 O , O -5 B-DATA -月 I-DATA -2 I-DATA -3 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +2 I-DATE +3 I-DATE +日 I-DATE L B-TRIPS 3 I-TRIPS 2 I-TRIPS @@ -9991,11 +9990,11 @@ 成 O 功 O , O -2 B-DATA -月 I-DATA -1 I-DATA -2 I-DATA -日 I-DATA +2 B-DATE +月 I-DATE +1 I-DATE +2 I-DATE +日 I-DATE K B-TRIPS 9 I-TRIPS 5 I-TRIPS @@ -10067,11 +10066,11 @@ 1 O 2 O , O -1 B-DATA -月 I-DATA -0 I-DATA -6 I-DATA -日 I-DATA +1 B-DATE +月 I-DATE +0 I-DATE +6 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 4 I-TRIPS @@ -10143,11 +10142,11 @@ 成 O 功 O , O -6 B-DATA -月 I-DATA -2 I-DATA -9 I-DATA -日 I-DATA +6 B-DATE +月 I-DATE +2 I-DATE +9 I-DATE +日 I-DATE G B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -10205,11 +10204,11 @@ 成 O 功 O , O -7 B-DATA -月 I-DATA -2 I-DATA -8 I-DATA -日 I-DATA +7 B-DATE +月 I-DATE +2 I-DATE +8 I-DATE +日 I-DATE Y B-TRIPS 1 I-TRIPS 5 I-TRIPS @@ -10279,11 +10278,11 @@ 1 O 2 O , O -1 B-DATA -月 I-DATA -0 I-DATA -6 I-DATA -日 I-DATA +1 B-DATE +月 I-DATE +0 I-DATE +6 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 4 I-TRIPS @@ -10366,11 +10365,11 @@ 0 O 2 O , O -3 B-DATA -月 I-DATA -0 I-DATA -3 I-DATA -日 I-DATA +3 B-DATE +月 I-DATE +0 I-DATE +3 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 4 I-TRIPS @@ -10455,11 +10454,11 @@ 0 O 2 O , O -2 B-DATA -月 I-DATA -2 I-DATA -7 I-DATA -日 I-DATA +2 B-DATE +月 I-DATE +2 I-DATE +7 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 6 I-TRIPS @@ -10529,10 +10528,10 @@ 1 O 2 O , O -6 B-DATA -月 I-DATA -8 I-DATA -日 I-DATA +6 B-DATE +月 I-DATE +8 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -10621,10 +10620,10 @@ 8 O 1 O , O -4 B-DATA -月 I-DATA -9 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +9 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 3 I-TRIPS @@ -10694,10 +10693,10 @@ 8 O 1 O , O -5 B-DATA -月 I-DATA -4 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +4 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -10767,10 +10766,10 @@ 8 O 1 O , O -8 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -10841,11 +10840,11 @@ 8 O 1 O , O -1 B-DATA -2 I-DATA -月 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +5 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -10915,10 +10914,10 @@ 8 O 1 O , O -5 B-DATA -月 I-DATA -4 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +4 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -10988,10 +10987,10 @@ 8 O 1 O , O -8 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -11062,11 +11061,11 @@ 8 O 1 O , O -1 B-DATA -2 I-DATA -月 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +5 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -11136,10 +11135,10 @@ 8 O 1 O , O -5 B-DATA -月 I-DATA -4 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +4 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -11210,11 +11209,11 @@ 8 O 1 O , O -1 B-DATA -2 I-DATA -月 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +5 I-DATE +日 I-DATE Z B-TRIPS 3 I-TRIPS 8 I-TRIPS @@ -11284,10 +11283,10 @@ 8 O 1 O , O -5 B-DATA -月 I-DATA -4 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +4 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -11357,10 +11356,10 @@ 8 O 1 O , O -8 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -11431,11 +11430,11 @@ 8 O 1 O , O -1 B-DATA -2 I-DATA -月 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +5 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -11505,10 +11504,10 @@ 8 O 1 O , O -5 B-DATA -月 I-DATA -4 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +4 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -11579,11 +11578,11 @@ 8 O 1 O , O -1 B-DATA -2 I-DATA -月 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +5 I-DATE +日 I-DATE Z B-TRIPS 3 I-TRIPS 8 I-TRIPS @@ -11653,10 +11652,10 @@ 8 O 1 O , O -8 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE T B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -11727,11 +11726,11 @@ 8 O 1 O , O -1 B-DATA -2 I-DATA -月 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +5 I-DATE +日 I-DATE Z B-TRIPS 3 I-TRIPS 8 I-TRIPS @@ -11801,10 +11800,10 @@ 8 O 1 O , O -8 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE T B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -11874,11 +11873,11 @@ 8 O 1 O , O -1 B-DATA -2 I-DATA -月 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +5 I-DATE +日 I-DATE Z B-TRIPS 3 I-TRIPS 8 I-TRIPS @@ -11934,12 +11933,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -2 I-DATA -9 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +2 I-DATE +9 I-DATE +日 I-DATE K B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -11998,12 +11997,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE K B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -12061,12 +12060,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -2 I-DATA -9 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +2 I-DATE +9 I-DATE +日 I-DATE K B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -12125,12 +12124,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE T B-TRIPS 0 I-TRIPS 4 I-TRIPS @@ -12188,12 +12187,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE Z B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -12251,12 +12250,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE D B-TRIPS 4 I-TRIPS 5 I-TRIPS @@ -12327,11 +12326,11 @@ 1 O 2 O , O -1 B-DATA -0 I-DATA -月 I-DATA -7 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +7 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 0 I-TRIPS @@ -12399,12 +12398,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE C B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -12462,12 +12461,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE L B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -12525,12 +12524,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE Y B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -12586,12 +12585,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE G B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -12649,12 +12648,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE Y B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -12713,11 +12712,11 @@ 成 O 功 O , O -1 B-DATA -0 I-DATA -月 I-DATA -7 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +7 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 0 I-TRIPS @@ -12788,12 +12787,12 @@ 成 O 功 O , O -1 B-DATA -0 I-DATA -月 I-DATA -1 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +1 I-DATE +1 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -12868,11 +12867,11 @@ 1 O 2 O , O -1 B-DATA -0 I-DATA -月 I-DATA -7 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +7 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 0 I-TRIPS @@ -12940,12 +12939,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE Y B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -13001,12 +13000,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE G B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -13064,12 +13063,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE Y B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -13139,11 +13138,11 @@ 1 O 2 O , O -1 B-DATA -0 I-DATA -月 I-DATA -7 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +7 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 0 I-TRIPS @@ -13202,12 +13201,12 @@ 0 O 2 O , O -1 B-DATA -0 I-DATA -月 I-DATA -1 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +1 I-DATE +1 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -13264,11 +13263,11 @@ 1 O 2 O , O -1 B-DATA -0 I-DATA -月 I-DATA -7 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +7 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 0 I-TRIPS @@ -13327,12 +13326,12 @@ 0 O 2 O , O -1 B-DATA -0 I-DATA -月 I-DATA -1 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +1 I-DATE +1 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -13389,11 +13388,11 @@ 1 O 2 O , O -9 B-DATA -月 I-DATA -3 I-DATA -0 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +3 I-DATE +0 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 9 I-TRIPS @@ -13459,10 +13458,10 @@ 8 O 1 O , O -5 B-DATA -月 I-DATA -4 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +4 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -13512,11 +13511,11 @@ 6 O 7 O , O -8 B-DATA -月 I-DATA -1 I-DATA -4 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +1 I-DATE +4 I-DATE +日 I-DATE G B-TRIPS 5 I-TRIPS 3 I-TRIPS @@ -13563,11 +13562,11 @@ 8 O 7 O , O -8 B-DATA -月 I-DATA -1 I-DATA -6 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +1 I-DATE +6 I-DATE +日 I-DATE K B-TRIPS 9 I-TRIPS 7 I-TRIPS @@ -13621,10 +13620,10 @@ 8 O 1 O , O -6 B-DATA -月 I-DATA -7 I-DATA -日 I-DATA +6 B-DATE +月 I-DATE +7 I-DATE +日 I-DATE G B-TRIPS 8 I-TRIPS 4 I-TRIPS @@ -13682,11 +13681,11 @@ 8 O 1 O , O -2 B-DATA -月 I-DATA -2 I-DATA -5 I-DATA -日 I-DATA +2 B-DATE +月 I-DATE +2 I-DATE +5 I-DATE +日 I-DATE K B-TRIPS 3 I-TRIPS 2 I-TRIPS @@ -13746,12 +13745,12 @@ 8 O 1 O , O -1 B-DATA -1 I-DATA -月 I-DATA -1 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +1 I-DATE +月 I-DATE +1 I-DATE +5 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 3 I-TRIPS @@ -13809,11 +13808,11 @@ 8 O 1 O , O -4 B-DATA -月 I-DATA -1 I-DATA -2 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +1 I-DATE +2 I-DATE +日 I-DATE D B-TRIPS 9 I-TRIPS 8 I-TRIPS @@ -13874,10 +13873,10 @@ 8 O 1 O , O -8 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -13936,10 +13935,10 @@ 8 O 1 O , O -7 B-DATA -月 I-DATA -8 I-DATA -日 I-DATA +7 B-DATE +月 I-DATE +8 I-DATE +日 I-DATE Z B-TRIPS 6 I-TRIPS 4 I-TRIPS @@ -14007,10 +14006,10 @@ 8 O 1 O , O -8 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE T B-TRIPS 2 I-TRIPS 5 I-TRIPS @@ -14080,11 +14079,11 @@ 8 O 1 O , O -1 B-DATA -2 I-DATA -月 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +5 I-DATE +日 I-DATE Z B-TRIPS 8 I-TRIPS 9 I-TRIPS @@ -14140,12 +14139,12 @@ 成 O 功 O , O -1 B-DATA -0 I-DATA -月 I-DATA -3 I-DATA -0 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +3 I-DATE +0 I-DATE +日 I-DATE K B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -14204,11 +14203,11 @@ 成 O 功 O , O -9 B-DATA -月 I-DATA -2 I-DATA -5 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +2 I-DATE +5 I-DATE +日 I-DATE K B-TRIPS 3 I-TRIPS 1 I-TRIPS @@ -14241,12 +14240,12 @@ 成 O 功 O , O -1 B-DATA -1 I-DATA -月 I-DATA -2 I-DATA -0 I-DATA -日 I-DATA +1 B-DATE +1 I-DATE +月 I-DATE +2 I-DATE +0 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -14280,12 +14279,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE T B-TRIPS 2 I-TRIPS 3 I-TRIPS @@ -14341,10 +14340,10 @@ 成 O 功 O , O -2 B-DATA -月 I-DATA -3 I-DATA -日 I-DATA +2 B-DATE +月 I-DATE +3 I-DATE +日 I-DATE S B-TRIPS 1 I-TRIPS 0 I-TRIPS @@ -14404,11 +14403,11 @@ 成 O 功 O , O -7 B-DATA -月 I-DATA -1 I-DATA -2 I-DATA -日 I-DATA +7 B-DATE +月 I-DATE +1 I-DATE +2 I-DATE +日 I-DATE Z B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -14461,18 +14460,17 @@ 6 I-COMPANY 】 O 李 B-NAME - -I-NAME +四 I-NAME 购 O 票 O 成 O 功 O , O -8 B-DATA -月 I-DATA -3 I-DATA -0 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +3 I-DATE +0 I-DATE +日 I-DATE D B-TRIPS 6 I-TRIPS 5 I-TRIPS @@ -14529,11 +14527,11 @@ 成 O 功 O , O -9 B-DATA -月 I-DATA -0 I-DATA -9 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +0 I-DATE +9 I-DATE +日 I-DATE C B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -14591,11 +14589,11 @@ 成 O 功 O , O -5 B-DATA -月 I-DATA -1 I-DATA -1 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +1 I-DATE +1 I-DATE +日 I-DATE L B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -14654,11 +14652,11 @@ 成 O 功 O , O -6 B-DATA -月 I-DATA -2 I-DATA -4 I-DATA -日 I-DATA +6 B-DATE +月 I-DATE +2 I-DATE +4 I-DATE +日 I-DATE K B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -14716,11 +14714,11 @@ 成 O 功 O , O -5 B-DATA -月 I-DATA -2 I-DATA -6 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +2 I-DATE +6 I-DATE +日 I-DATE Y B-TRIPS 2 I-TRIPS 1 I-TRIPS @@ -14776,11 +14774,11 @@ 成 O 功 O , O -4 B-DATA -月 I-DATA -2 I-DATA -7 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +2 I-DATE +7 I-DATE +日 I-DATE G B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -14836,11 +14834,11 @@ 成 O 功 O , O -1 B-DATA -月 I-DATA -2 I-DATA -8 I-DATA -日 I-DATA +1 B-DATE +月 I-DATE +2 I-DATE +8 I-DATE +日 I-DATE Y B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -14908,11 +14906,11 @@ 1 O 2 O , O -9 B-DATA -月 I-DATA -1 I-DATA -9 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +1 I-DATE +9 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -14983,11 +14981,11 @@ 0 O 2 O , O -5 B-DATA -月 I-DATA -1 I-DATA -8 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +1 I-DATE +8 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -15060,11 +15058,11 @@ 0 O 2 O , O -8 B-DATA -月 I-DATA -1 I-DATA -3 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +1 I-DATE +3 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -15133,10 +15131,10 @@ 1 O 2 O , O -9 B-DATA -月 I-DATA -4 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +4 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -15214,11 +15212,11 @@ 8 O 1 O , O -1 B-DATA -1 I-DATA -月 I-DATA -3 I-DATA -日 I-DATA +1 B-DATE +1 I-DATE +月 I-DATE +3 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 5 I-TRIPS @@ -15280,10 +15278,10 @@ 8 O 7 O , O -3 B-DATA -月 I-DATA -1 I-DATA -日 I-DATA +3 B-DATE +月 I-DATE +1 I-DATE +日 I-DATE K B-TRIPS 3 I-TRIPS 6 I-TRIPS @@ -15349,10 +15347,10 @@ 8 O 1 O , O -6 B-DATA -月 I-DATA -7 I-DATA -日 I-DATA +6 B-DATE +月 I-DATE +7 I-DATE +日 I-DATE G B-TRIPS 8 I-TRIPS 4 I-TRIPS @@ -15422,11 +15420,11 @@ 8 O 1 O , O -2 B-DATA -月 I-DATA -2 I-DATA -5 I-DATA -日 I-DATA +2 B-DATE +月 I-DATE +2 I-DATE +5 I-DATE +日 I-DATE K B-TRIPS 3 I-TRIPS 2 I-TRIPS @@ -15498,12 +15496,12 @@ 8 O 1 O , O -1 B-DATA -1 I-DATA -月 I-DATA -1 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +1 I-DATE +月 I-DATE +1 I-DATE +5 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 3 I-TRIPS @@ -15573,11 +15571,11 @@ 8 O 1 O , O -4 B-DATA -月 I-DATA -1 I-DATA -2 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +1 I-DATE +2 I-DATE +日 I-DATE D B-TRIPS 9 I-TRIPS 8 I-TRIPS @@ -15650,10 +15648,10 @@ 8 O 1 O , O -8 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -15724,10 +15722,10 @@ 8 O 1 O , O -7 B-DATA -月 I-DATA -8 I-DATA -日 I-DATA +7 B-DATE +月 I-DATE +8 I-DATE +日 I-DATE Z B-TRIPS 6 I-TRIPS 4 I-TRIPS @@ -15797,10 +15795,10 @@ 8 O 1 O , O -8 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE T B-TRIPS 2 I-TRIPS 5 I-TRIPS @@ -15872,11 +15870,11 @@ 8 O 1 O , O -1 B-DATA -2 I-DATA -月 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +5 I-DATE +日 I-DATE Z B-TRIPS 8 I-TRIPS 9 I-TRIPS @@ -15934,12 +15932,12 @@ 成 O 功 O , O -1 B-DATA -0 I-DATA -月 I-DATA -3 I-DATA -0 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +3 I-DATE +0 I-DATE +日 I-DATE K B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -15996,11 +15994,11 @@ 成 O 功 O , O -9 B-DATA -月 I-DATA -2 I-DATA -5 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +2 I-DATE +5 I-DATE +日 I-DATE K B-TRIPS 3 I-TRIPS 1 I-TRIPS @@ -16056,12 +16054,12 @@ 成 O 功 O , O -1 B-DATA -1 I-DATA -月 I-DATA -2 I-DATA -0 I-DATA -日 I-DATA +1 B-DATE +1 I-DATE +月 I-DATE +2 I-DATE +0 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -16118,12 +16116,12 @@ 成 O 功 O , O -1 B-DATA -2 I-DATA -月 I-DATA -3 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +3 I-DATE +1 I-DATE +日 I-DATE T B-TRIPS 2 I-TRIPS 3 I-TRIPS @@ -16177,10 +16175,10 @@ 成 O 功 O , O -2 B-DATA -月 I-DATA -3 I-DATA -日 I-DATA +2 B-DATE +月 I-DATE +3 I-DATE +日 I-DATE S B-TRIPS 1 I-TRIPS 0 I-TRIPS @@ -16237,11 +16235,11 @@ 成 O 功 O , O -7 B-DATA -月 I-DATA -1 I-DATA -2 I-DATA -日 I-DATA +7 B-DATE +月 I-DATE +1 I-DATE +2 I-DATE +日 I-DATE Z B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -16297,11 +16295,11 @@ 成 O 功 O , O -8 B-DATA -月 I-DATA -3 I-DATA -0 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +3 I-DATE +0 I-DATE +日 I-DATE D B-TRIPS 6 I-TRIPS 5 I-TRIPS @@ -16356,11 +16354,11 @@ 成 O 功 O , O -9 B-DATA -月 I-DATA -0 I-DATA -9 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +0 I-DATE +9 I-DATE +日 I-DATE C B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -16454,11 +16452,11 @@ 成 O 功 O , O -6 B-DATA -月 I-DATA -2 I-DATA -4 I-DATA -日 I-DATA +6 B-DATE +月 I-DATE +2 I-DATE +4 I-DATE +日 I-DATE K B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -16513,11 +16511,11 @@ 成 O 功 O , O -5 B-DATA -月 I-DATA -2 I-DATA -6 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +2 I-DATE +6 I-DATE +日 I-DATE Y B-TRIPS 2 I-TRIPS 1 I-TRIPS @@ -16572,11 +16570,11 @@ 成 O 功 O , O -4 B-DATA -月 I-DATA -2 I-DATA -7 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +2 I-DATE +7 I-DATE +日 I-DATE G B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -16633,11 +16631,11 @@ 成 O 功 O , O -1 B-DATA -月 I-DATA -2 I-DATA -8 I-DATA -日 I-DATA +1 B-DATE +月 I-DATE +2 I-DATE +8 I-DATE +日 I-DATE Y B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -16693,11 +16691,11 @@ 成 O 功 O , O -1 B-DATA -月 I-DATA -2 I-DATA -8 I-DATA -日 I-DATA +1 B-DATE +月 I-DATE +2 I-DATE +8 I-DATE +日 I-DATE Y B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -16766,11 +16764,11 @@ 1 O 2 O , O -9 B-DATA -月 I-DATA -1 I-DATA -9 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +1 I-DATE +9 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -16852,11 +16850,11 @@ 0 O 2 O , O -5 B-DATA -月 I-DATA -1 I-DATA -8 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +1 I-DATE +8 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -16940,11 +16938,11 @@ 0 O 2 O , O -5 B-DATA -月 I-DATA -1 I-DATA -8 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +1 I-DATE +8 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -17028,11 +17026,11 @@ 0 O 2 O , O -8 B-DATA -月 I-DATA -1 I-DATA -3 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +1 I-DATE +3 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -17102,11 +17100,11 @@ 0 O 2 O , O -8 B-DATA -月 I-DATA -1 I-DATA -3 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +1 I-DATE +3 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -17176,10 +17174,10 @@ 1 O 2 O , O -9 B-DATA -月 I-DATA -4 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +4 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -17268,11 +17266,11 @@ 8 O 1 O , O -1 B-DATA -1 I-DATA -月 I-DATA -3 I-DATA -日 I-DATA +1 B-DATE +1 I-DATE +月 I-DATE +3 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 5 I-TRIPS @@ -17335,11 +17333,11 @@ 6 O 7 O , O -5 B-DATA -月 I-DATA -1 I-DATA -7 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +1 I-DATE +7 I-DATE +日 I-DATE G B-TRIPS 8 I-TRIPS 9 I-TRIPS @@ -17400,10 +17398,10 @@ 8 O 7 O , O -3 B-DATA -月 I-DATA -1 I-DATA -日 I-DATA +3 B-DATE +月 I-DATE +1 I-DATE +日 I-DATE K B-TRIPS 3 I-TRIPS 6 I-TRIPS @@ -17470,11 +17468,11 @@ 8 O 1 O , O -3 B-DATA -月 I-DATA -1 I-DATA -2 I-DATA -日 I-DATA +3 B-DATE +月 I-DATE +1 I-DATE +2 I-DATE +日 I-DATE G B-TRIPS 8 I-TRIPS 2 I-TRIPS @@ -17547,11 +17545,11 @@ 8 O 1 O , O -2 B-DATA -月 I-DATA -2 I-DATA -1 I-DATA -日 I-DATA +2 B-DATE +月 I-DATE +2 I-DATE +1 I-DATE +日 I-DATE K B-TRIPS 3 I-TRIPS 1 I-TRIPS @@ -17624,12 +17622,12 @@ 8 O 1 O , O -1 B-DATA -2 I-DATA -月 I-DATA -0 I-DATA -5 I-DATA -日 I-DATA +1 B-DATE +2 I-DATE +月 I-DATE +0 I-DATE +5 I-DATE +日 I-DATE G B-TRIPS 4 I-TRIPS 5 I-TRIPS @@ -17700,11 +17698,11 @@ 8 O 1 O , O -4 B-DATA -月 I-DATA -1 I-DATA -3 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +1 I-DATE +3 I-DATE +日 I-DATE D B-TRIPS 9 I-TRIPS 3 I-TRIPS @@ -17777,11 +17775,11 @@ 8 O 1 O , O -8 B-DATA -月 I-DATA -1 I-DATA -3 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +1 I-DATE +3 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -17853,11 +17851,11 @@ 8 O 1 O , O -3 B-DATA -月 I-DATA -2 I-DATA -2 I-DATA -日 I-DATA +3 B-DATE +月 I-DATE +2 I-DATE +2 I-DATE +日 I-DATE Z B-TRIPS 6 I-TRIPS 5 I-TRIPS @@ -17928,10 +17926,10 @@ 8 O 1 O , O -1 B-DATA -月 I-DATA -2 I-DATA -日 I-DATA +1 B-DATE +月 I-DATE +2 I-DATE +日 I-DATE T B-TRIPS 2 I-TRIPS 4 I-TRIPS @@ -18003,10 +18001,10 @@ 8 O 1 O , O -4 B-DATA -月 I-DATA -6 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +6 I-DATE +日 I-DATE Z B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -18064,12 +18062,12 @@ 成 O 功 O , O -1 B-DATA -1 I-DATA -月 I-DATA -2 I-DATA -1 I-DATA -日 I-DATA +1 B-DATE +1 I-DATE +月 I-DATE +2 I-DATE +1 I-DATE +日 I-DATE K B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -18127,11 +18125,11 @@ 成 O 功 O , O -4 B-DATA -月 I-DATA -2 I-DATA -5 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +2 I-DATE +5 I-DATE +日 I-DATE K B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -18187,12 +18185,12 @@ 成 O 功 O , O -1 B-DATA -1 I-DATA -月 I-DATA -2 I-DATA -0 I-DATA -日 I-DATA +1 B-DATE +1 I-DATE +月 I-DATE +2 I-DATE +0 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -18250,12 +18248,12 @@ 成 O 功 O , O -1 B-DATA -0 I-DATA -月 I-DATA -3 I-DATA -0 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +3 I-DATE +0 I-DATE +日 I-DATE T B-TRIPS 8 I-TRIPS 9 I-TRIPS @@ -18310,10 +18308,10 @@ 成 O 功 O , O -1 B-DATA -月 I-DATA -3 I-DATA -日 I-DATA +1 B-DATE +月 I-DATE +3 I-DATE +日 I-DATE S B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -18372,11 +18370,11 @@ 成 O 功 O , O -7 B-DATA -月 I-DATA -1 I-DATA -2 I-DATA -日 I-DATA +7 B-DATE +月 I-DATE +1 I-DATE +2 I-DATE +日 I-DATE Z B-TRIPS 1 I-TRIPS 1 I-TRIPS @@ -18433,11 +18431,11 @@ 成 O 功 O , O -8 B-DATA -月 I-DATA -3 I-DATA -0 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +3 I-DATE +0 I-DATE +日 I-DATE D B-TRIPS 6 I-TRIPS 5 I-TRIPS @@ -18492,11 +18490,11 @@ 成 O 功 O , O -2 B-DATA -月 I-DATA -0 I-DATA -3 I-DATA -日 I-DATA +2 B-DATE +月 I-DATE +0 I-DATE +3 I-DATE +日 I-DATE C B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -18552,11 +18550,11 @@ 成 O 功 O , O -3 B-DATA -月 I-DATA -1 I-DATA -1 I-DATA -日 I-DATA +3 B-DATE +月 I-DATE +1 I-DATE +1 I-DATE +日 I-DATE L B-TRIPS 8 I-TRIPS 1 I-TRIPS @@ -18612,11 +18610,11 @@ 成 O 功 O , O -4 B-DATA -月 I-DATA -1 I-DATA -4 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +1 I-DATE +4 I-DATE +日 I-DATE K B-TRIPS 9 I-TRIPS 8 I-TRIPS @@ -18673,11 +18671,11 @@ 成 O 功 O , O -7 B-DATA -月 I-DATA -2 I-DATA -9 I-DATA -日 I-DATA +7 B-DATE +月 I-DATE +2 I-DATE +9 I-DATE +日 I-DATE Y B-TRIPS 2 I-TRIPS 7 I-TRIPS @@ -18733,11 +18731,11 @@ 成 O 功 O , O -8 B-DATA -月 I-DATA -2 I-DATA -3 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +2 I-DATE +3 I-DATE +日 I-DATE G B-TRIPS 1 I-TRIPS 9 I-TRIPS @@ -18795,11 +18793,11 @@ 成 O 功 O , O -1 B-DATA -月 I-DATA -2 I-DATA -8 I-DATA -日 I-DATA +1 B-DATE +月 I-DATE +2 I-DATE +8 I-DATE +日 I-DATE Y B-TRIPS 1 I-TRIPS 9 I-TRIPS @@ -18868,11 +18866,11 @@ 1 O 2 O , O -5 B-DATA -月 I-DATA -0 I-DATA -9 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +0 I-DATE +9 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -18957,11 +18955,11 @@ 0 O 2 O , O -4 B-DATA -月 I-DATA -0 I-DATA -8 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +0 I-DATE +8 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -19048,11 +19046,11 @@ 0 O 2 O , O -3 B-DATA -月 I-DATA -2 I-DATA -3 I-DATA -日 I-DATA +3 B-DATE +月 I-DATE +2 I-DATE +3 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 8 I-TRIPS @@ -19125,10 +19123,10 @@ 1 O 2 O , O -2 B-DATA -月 I-DATA -7 I-DATA -日 I-DATA +2 B-DATE +月 I-DATE +7 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 3 I-TRIPS @@ -19220,11 +19218,11 @@ 8 O 1 O , O -1 B-DATA -1 I-DATA -月 I-DATA -3 I-DATA -日 I-DATA +1 B-DATE +1 I-DATE +月 I-DATE +3 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 5 I-TRIPS @@ -19287,11 +19285,11 @@ 6 O 7 O , O -5 B-DATA -月 I-DATA -1 I-DATA -7 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +1 I-DATE +7 I-DATE +日 I-DATE G B-TRIPS 8 I-TRIPS 9 I-TRIPS @@ -19352,10 +19350,10 @@ 8 O 7 O , O -3 B-DATA -月 I-DATA -1 I-DATA -日 I-DATA +3 B-DATE +月 I-DATE +1 I-DATE +日 I-DATE K B-TRIPS 3 I-TRIPS 6 I-TRIPS @@ -19420,11 +19418,11 @@ 4 O 5 O , O -5 B-DATA -月 I-DATA -2 I-DATA -0 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +2 I-DATE +0 I-DATE +日 I-DATE G B-TRIPS 1 I-TRIPS 0 I-TRIPS @@ -19515,10 +19513,10 @@ 6 O 2 O ( O -6 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +6 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 0 I-TRIPS @@ -19545,10 +19543,10 @@ 改 O 签 O 为 O -6 B-DATA -月 I-DATA -5 I-DATA -日 I-DATA +6 B-DATE +月 I-DATE +5 I-DATE +日 I-DATE G B-TRIPS 1 I-TRIPS 5 I-TRIPS @@ -19592,11 +19590,11 @@ 影 O 响 O , O -7 B-DATA -月 I-DATA -1 I-DATA -8 I-DATA -日 I-DATA +7 B-DATE +月 I-DATE +1 I-DATE +8 I-DATE +日 I-DATE D B-TRIPS 3 I-TRIPS 1 I-TRIPS @@ -19659,11 +19657,11 @@ 乘 O 客 O , O -9 B-DATA -月 I-DATA -1 I-DATA -2 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +1 I-DATE +2 I-DATE +日 I-DATE C B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -19754,11 +19752,11 @@ 3 O 4 O , O -1 B-DATA -0 I-DATA -月 I-DATA -8 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +8 I-DATE +日 I-DATE Z B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -19852,11 +19850,11 @@ 兑 O 换 O 的 O -1 B-DATA -1 I-DATA -月 I-DATA -3 I-DATA -日 I-DATA +1 B-DATE +1 I-DATE +月 I-DATE +3 I-DATE +日 I-DATE G B-TRIPS 7 I-TRIPS 0 I-TRIPS @@ -19923,11 +19921,11 @@ 2 O 1 O , O -8 B-DATA -月 I-DATA -1 I-DATA -5 I-DATA -日 I-DATA +8 B-DATE +月 I-DATE +1 I-DATE +5 I-DATE +日 I-DATE G B-TRIPS 1 I-TRIPS 3 I-TRIPS @@ -19986,10 +19984,10 @@ 建 O 国 O , O -7 B-DATA -月 I-DATA -1 I-DATA -日 I-DATA +7 B-DATE +月 I-DATE +1 I-DATE +日 I-DATE G B-TRIPS 9 I-TRIPS 9 I-TRIPS @@ -20057,11 +20055,11 @@ 4 I-TRIPS 次 I-TRIPS ( O -9 B-DATA -月 I-DATA -3 I-DATA -0 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +3 I-DATE +0 I-DATE +日 I-DATE 2 B-TIME 3 I-TIME : I-TIME @@ -20138,12 +20136,12 @@ 1 O 9 O , O -1 B-DATA -0 I-DATA -月 I-DATA -1 I-DATA -0 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +1 I-DATE +0 I-DATE +日 I-DATE D B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -20211,12 +20209,12 @@ 1 O 9 O , O -1 B-DATA -0 I-DATA -月 I-DATA -1 I-DATA -0 I-DATA -日 I-DATA +1 B-DATE +0 I-DATE +月 I-DATE +1 I-DATE +0 I-DATE +日 I-DATE D B-TRIPS 2 I-TRIPS 2 I-TRIPS @@ -20286,10 +20284,10 @@ 4 O 5 O , O -3 B-DATA -月 I-DATA -8 I-DATA -日 I-DATA +3 B-DATE +月 I-DATE +8 I-DATE +日 I-DATE K B-TRIPS 4 I-TRIPS 5 I-TRIPS @@ -20343,11 +20341,11 @@ 调 O 整 O 原 O -4 B-DATA -月 I-DATA -1 I-DATA -7 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +1 I-DATE +7 I-DATE +日 I-DATE T B-TRIPS 3 I-TRIPS 6 I-TRIPS @@ -20406,10 +20404,10 @@ 查 O 询 O 的 O -9 B-DATA -月 I-DATA -9 I-DATA -日 I-DATA +9 B-DATE +月 I-DATE +9 I-DATE +日 I-DATE ( O 深 B-START 圳 I-START @@ -20485,11 +20483,11 @@ 2 O 3 O , O -6 B-DATA -月 I-DATA -1 I-DATA -8 I-DATA -日 I-DATA +6 B-DATE +月 I-DATE +1 I-DATE +8 I-DATE +日 I-DATE G B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -20547,11 +20545,11 @@ 施 O 工 O , O -7 B-DATA -月 I-DATA -2 I-DATA -2 I-DATA -日 I-DATA +7 B-DATE +月 I-DATE +2 I-DATE +2 I-DATE +日 I-DATE K B-TRIPS 5 I-TRIPS 6 I-TRIPS @@ -20598,11 +20596,11 @@ 成 O 功 O , O -5 B-DATA -月 I-DATA -2 I-DATA -3 I-DATA -日 I-DATA +5 B-DATE +月 I-DATE +2 I-DATE +3 I-DATE +日 I-DATE L B-TRIPS 3 I-TRIPS 2 I-TRIPS @@ -20659,11 +20657,11 @@ 成 O 功 O , O -2 B-DATA -月 I-DATA -1 I-DATA -2 I-DATA -日 I-DATA +2 B-DATE +月 I-DATE +1 I-DATE +2 I-DATE +日 I-DATE K B-TRIPS 9 I-TRIPS 5 I-TRIPS @@ -20735,11 +20733,11 @@ 1 O 2 O , O -1 B-DATA -月 I-DATA -0 I-DATA -6 I-DATA -日 I-DATA +1 B-DATE +月 I-DATE +0 I-DATE +6 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 4 I-TRIPS @@ -20811,11 +20809,11 @@ 成 O 功 O , O -6 B-DATA -月 I-DATA -2 I-DATA -9 I-DATA -日 I-DATA +6 B-DATE +月 I-DATE +2 I-DATE +9 I-DATE +日 I-DATE G B-TRIPS 1 I-TRIPS 2 I-TRIPS @@ -20873,11 +20871,11 @@ 成 O 功 O , O -7 B-DATA -月 I-DATA -2 I-DATA -8 I-DATA -日 I-DATA +7 B-DATE +月 I-DATE +2 I-DATE +8 I-DATE +日 I-DATE Y B-TRIPS 1 I-TRIPS 5 I-TRIPS @@ -20947,11 +20945,11 @@ 1 O 2 O , O -1 B-DATA -月 I-DATA -0 I-DATA -6 I-DATA -日 I-DATA +1 B-DATE +月 I-DATE +0 I-DATE +6 I-DATE +日 I-DATE D B-TRIPS 1 I-TRIPS 4 I-TRIPS @@ -21034,11 +21032,11 @@ 0 O 2 O , O -3 B-DATA -月 I-DATA -0 I-DATA -3 I-DATA -日 I-DATA +3 B-DATE +月 I-DATE +0 I-DATE +3 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 4 I-TRIPS @@ -21123,11 +21121,11 @@ 0 O 2 O , O -2 B-DATA -月 I-DATA -2 I-DATA -7 I-DATA -日 I-DATA +2 B-DATE +月 I-DATE +2 I-DATE +7 I-DATE +日 I-DATE T B-TRIPS 1 I-TRIPS 6 I-TRIPS @@ -21197,10 +21195,10 @@ 1 O 2 O , O -6 B-DATA -月 I-DATA -8 I-DATA -日 I-DATA +6 B-DATE +月 I-DATE +8 I-DATE +日 I-DATE K B-TRIPS 2 I-TRIPS 8 I-TRIPS @@ -21289,10 +21287,10 @@ 8 O 1 O , O -4 B-DATA -月 I-DATA -9 I-DATA -日 I-DATA +4 B-DATE +月 I-DATE +9 I-DATE +日 I-DATE G B-TRIPS 2 I-TRIPS 3 I-TRIPS diff --git a/ner_config.py b/ner_config.py index 71581d7..999015d 100644 --- a/ner_config.py +++ b/ner_config.py @@ -30,7 +30,7 @@ # 交叉验证配置 N_SPLITS = 3 # CPU环境下减少折数 N_SEEDS = 1 # CPU环境下减少种子数量 - + # 确保标签列表完整 LABELS = [ "O", @@ -72,40 +72,40 @@ LEARNING_RATE = 3e-5 WARMUP_RATIO = 0.1 WEIGHT_DECAY = 0.01 - + # 数据增强配置 USE_DATA_AUGMENTATION = False AUGMENTATION_RATIO = 0.3 - + # 训练策略 GRADIENT_ACCUMULATION_STEPS = 4 EVAL_STEPS = 25 LOGGING_STEPS = 10 SAVE_STEPS = 25 # 添加保存步数 SAVE_TOTAL_LIMIT = 2 # 添加保存检查点数量限制 - + # 路径配置 DATA_PATH = "data/repayment.txt" MODEL_PATH = "./models/repayment_model" LOG_PATH = "./logs_repayment" - + # 训练配置优化 SEED = 42 TEST_SIZE = 0.1 EARLY_STOPPING_PATIENCE = 2 - + # CPU环境配置 MAX_GRAD_NORM = 1.0 FP16 = False # CPU环境下关闭FP16 - + # CPU环境下的数据加载优化 DATALOADER_NUM_WORKERS = 0 # CPU环境下设为0 DATALOADER_PIN_MEMORY = False # CPU环境下关闭 - + # 交叉验证配置 N_SPLITS = 3 N_SEEDS = 1 - + # 标签列表 LABELS = [ "O", @@ -149,40 +149,40 @@ LEARNING_RATE = 3e-5 WARMUP_RATIO = 0.1 WEIGHT_DECAY = 0.01 - + # 数据增强配置 USE_DATA_AUGMENTATION = False AUGMENTATION_RATIO = 0.3 - + # 训练策略 GRADIENT_ACCUMULATION_STEPS = 4 EVAL_STEPS = 25 LOGGING_STEPS = 10 SAVE_STEPS = 25 SAVE_TOTAL_LIMIT = 2 - + # 路径配置 DATA_PATH = "data/income.txt" MODEL_PATH = "./models/income_model" LOG_PATH = "./logs_income" - + # 训练配置优化 SEED = 42 TEST_SIZE = 0.1 EARLY_STOPPING_PATIENCE = 2 - + # CPU环境配置 MAX_GRAD_NORM = 1.0 FP16 = False - + # CPU环境下的数据加载优化 DATALOADER_NUM_WORKERS = 0 DATALOADER_PIN_MEMORY = False - + # 交叉验证配置 N_SPLITS = 3 N_SEEDS = 1 - + # 标签列表 LABELS = [ "O", @@ -211,4 +211,154 @@ 'max_integer_digits': 12, # 整数部分最大位数 'currency_symbols': ['¥', '¥', 'RMB', '元'], # 货币符号 'decimal_context_range': 3 # 查找小数点的上下文范围 + } + +class FlightNERConfig: + # 优化模型参数 (与 RepaymentNERConfig 保持一致) + MODEL_NAME = "bert-base-chinese" + MAX_LENGTH = 128 + BATCH_SIZE = 4 + EPOCHS = 10 + LEARNING_RATE = 3e-5 + WARMUP_RATIO = 0.1 + WEIGHT_DECAY = 0.01 + + # 训练策略 + GRADIENT_ACCUMULATION_STEPS = 4 + EVAL_STEPS = 25 + LOGGING_STEPS = 10 + SAVE_STEPS = 25 + SAVE_TOTAL_LIMIT = 2 + + # 路径配置 + DATA_PATH = "data/flight.txt" + MODEL_PATH = "./models/flight_model" + LOG_PATH = "./logs_flight" + + # 训练配置 + SEED = 42 + TEST_SIZE = 0.1 + EARLY_STOPPING_PATIENCE = 2 + + # CPU环境配置 + MAX_GRAD_NORM = 1.0 + FP16 = False + DATALOADER_NUM_WORKERS = 0 + DATALOADER_PIN_MEMORY = False + + # 交叉验证配置 + N_SPLITS = 3 + N_SEEDS = 3 # 增加种子数量以提高模型稳定性 + + # 标签列表 - 保持与需求一致 + LABELS = [ + "O", + "B-FLIGHT", "I-FLIGHT", # 航班号 + "B-COMPANY", "I-COMPANY", # 航空公司 + "B-START", "I-START", # 出发地 + "B-END", "I-END", # 目的地 + "B-DATE", "I-DATE", # 日期 + "B-TIME", "I-TIME", # 时间 + "B-DEPARTURE_TIME", "I-DEPARTURE_TIME", # 起飞时间 + "B-ARRIVAL_TIME", "I-ARRIVAL_TIME", # 到达时间 + "B-TICKET_NUM", "I-TICKET_NUM", # 机票号码 + "B-SEAT", "I-SEAT" # 座位等信息 + ] + + # 实体长度限制 - 更新键名与LABELS一致 + MAX_ENTITY_LENGTH = { + "FLIGHT": 10, # 航班号 + "COMPANY": 15, # 航空公司 + "START": 10, # 出发地 + "END": 10, # 目的地 + "DATE": 15, # 日期 + "TIME": 10, # 时间 + "DEPARTURE_TIME": 10, # 起飞时间 + "ARRIVAL_TIME": 10, # 到达时间 + "TICKET_NUM": 10, # 用户姓名 + "SEAT": 10 # 座位等信息 + } + + # 航班号配置 + FLIGHT_CONFIG = { + 'pattern': r'[A-Z]{2}\d{3,4}', + 'min_length': 4, + 'max_length': 7, + 'carrier_codes': ['CA', 'MU', 'CZ', 'HU', '3U', 'ZH', 'FM', 'MF', 'SC', '9C'] # 常见航司代码 + } + +class TrainNERConfig: + # 模型参数 + MODEL_NAME = "bert-base-chinese" + MAX_LENGTH = 128 + BATCH_SIZE = 4 + EPOCHS = 10 + LEARNING_RATE = 3e-5 + WARMUP_RATIO = 0.1 + WEIGHT_DECAY = 0.01 + + # 训练策略 + GRADIENT_ACCUMULATION_STEPS = 4 + EVAL_STEPS = 25 + LOGGING_STEPS = 10 + SAVE_STEPS = 25 + SAVE_TOTAL_LIMIT = 2 + + # 路径配置 + DATA_PATH = "data/train.txt" + MODEL_PATH = "./models/train_model" + LOG_PATH = "./logs_train" + + # 训练配置 + SEED = 42 + TEST_SIZE = 0.1 + EARLY_STOPPING_PATIENCE = 2 + + # CPU环境配置 + MAX_GRAD_NORM = 1.0 + FP16 = False + DATALOADER_NUM_WORKERS = 0 + DATALOADER_PIN_MEMORY = False + + # 交叉验证配置 + N_SPLITS = 3 + N_SEEDS = 3 # 增加种子数量以提高模型稳定性 + + # 标签列表 + LABELS = [ + "O", + "B-COMPANY", "I-COMPANY", # 车次 + "B-TRIPS", "I-TRIPS", # 车次 + "B-START", "I-START", # 出发站 + "B-END", "I-END", # 到达站 + "B-DATE", "I-DATE", # 日期 + "B-TIME", "I-TIME", # 时间 + "B-SEAT", "I-SEAT", # 座位等信息 + "B-NAME", "I-NAME" # 用户姓名 + ] + + # 实体长度限制 - 更新键名与LABELS一致 + MAX_ENTITY_LENGTH = { + "COMPANY": 8, # 12306 + "TRIPS": 8, # 车次 + "START": 10, # 出发站 + "END": 10, # 到达站 + "DATE": 15, # 日期 + "TIME": 10, # 时间 + "SEAT": 10, # 座位等信息 + "NAME": 10 # 用户姓名 + } + + # 车次配置 + TRIPS_CONFIG = { + 'patterns': [ + r'[GDCZTKY]\d{1,2}', # G1, D1, C1等 + r'[GDCZTKY]\d{1,2}/\d{1,2}', # G1/2等联运车次 + r'[GDCZTKY]\d{1,2}-\d{1,2}', # G1-2等联运车次 + r'\d{1,4}', # 普通车次如1234次 + r'[A-Z]\d{1,4}' # Z1234等特殊车次 + ], + 'min_length': 1, + 'max_length': 8, + 'train_types': ['G', 'D', 'C', 'Z', 'T', 'K', 'Y'] # 车次类型前缀 } \ No newline at end of file diff --git a/train_flight_ner.py b/train_flight_ner.py index e69de29..0641e41 100644 --- a/train_flight_ner.py +++ b/train_flight_ner.py @@ -0,0 +1,297 @@ +# train_flight_ner.py +from transformers import AutoTokenizer, AutoModelForTokenClassification, TrainingArguments, Trainer +from transformers.trainer_callback import EarlyStoppingCallback +import torch +from torch.utils.data import Dataset +import numpy as np +from sklearn.model_selection import train_test_split +from seqeval.metrics import f1_score, precision_score, recall_score +import random +import re +from ner_config import FlightNERConfig + +# 设置随机种子 +def set_seed(seed): + random.seed(seed) + np.random.seed(seed) + torch.manual_seed(seed) + if torch.cuda.is_available(): + torch.cuda.manual_seed_all(seed) + +set_seed(FlightNERConfig.SEED) + +class NERDataset(Dataset): + def __init__(self, texts, labels, tokenizer, label_list): + self.texts = texts + self.labels = labels + self.tokenizer = tokenizer + # 创建标签到ID的映射 + self.label2id = {label: i for i, label in enumerate(label_list)} + self.id2label = {i: label for i, label in enumerate(label_list)} + + # 打印标签映射信息 + print("标签映射:") + for label, idx in self.label2id.items(): + print(f"{label}: {idx}") + + # 对文本进行编码 + self.encodings = self.tokenize_and_align_labels() + + def tokenize_and_align_labels(self): + tokenized_inputs = self.tokenizer( + [''.join(text) for text in self.texts], + truncation=True, + padding=True, + max_length=FlightNERConfig.MAX_LENGTH, + return_offsets_mapping=True, + return_tensors=None + ) + + labels = [] + for i, label in enumerate(self.labels): + word_ids = tokenized_inputs.word_ids(i) + previous_word_idx = None + label_ids = [] + current_entity = None + + for word_idx in word_ids: + if word_idx is None: + label_ids.append(-100) + elif word_idx != previous_word_idx: + # 新词开始 + label_ids.append(self.label2id[label[word_idx]]) + if label[word_idx].startswith("B-"): + current_entity = label[word_idx][2:] + elif label[word_idx] == "O": + current_entity = None + else: + # 同一个词的后续token + if current_entity: + label_ids.append(self.label2id[f"I-{current_entity}"]) + else: + label_ids.append(self.label2id["O"]) + + previous_word_idx = word_idx + + labels.append(label_ids) + + tokenized_inputs["labels"] = labels + return tokenized_inputs + + def __getitem__(self, idx): + return {key: torch.tensor(val[idx]) for key, val in self.encodings.items()} + + def __len__(self): + return len(self.texts) + +def load_data(file_path): + texts, labels = [], [] + current_words, current_labels = [], [] + + def clean_flight_labels(words, labels): + """清理航班号标注,确保格式正确""" + i = 0 + while i < len(words): + if labels[i].startswith("B-FLIGHT"): # 已修改标签名称 + # 找到航班号的结束位置 + j = i + 1 + while j < len(words) and labels[j].startswith("I-FLIGHT"): # 已修改标签名称 + j += 1 + + # 检查并修正航班号序列 + flight_words = words[i:j] + flight_str = ''.join(flight_words) + + # 检查格式是否符合航班号规范 + valid_pattern = re.compile(r'^[A-Z]{2}\d{3,4}$') + if not valid_pattern.match(flight_str): + # 将格式不正确的标签改为O + for k in range(i, j): + labels[k] = "O" + + i = j + else: + i += 1 + + return words, labels + + with open(file_path, 'r', encoding='utf-8') as f: + for line in f: + line = line.strip() + if line: + try: + word, label = line.split(maxsplit=1) + current_words.append(word) + current_labels.append(label) + except Exception as e: + print(f"错误:处理行时出错: '{line}'") + continue + elif current_words: # 遇到空行且当前有数据 + # 清理航班号标注 + current_words, current_labels = clean_flight_labels(current_words, current_labels) + texts.append(current_words) + labels.append(current_labels) + current_words, current_labels = [], [] + + if current_words: # 处理最后一个样本 + current_words, current_labels = clean_flight_labels(current_words, current_labels) + texts.append(current_words) + labels.append(current_labels) + + return texts, labels + +def compute_metrics(p): + """计算评估指标""" + predictions, labels = p + predictions = np.argmax(predictions, axis=2) + + # 移除特殊token的预测和标签 + true_predictions = [ + [FlightNERConfig.LABELS[p] for (p, l) in zip(prediction, label) if l != -100] + for prediction, label in zip(predictions, labels) + ] + true_labels = [ + [FlightNERConfig.LABELS[l] for (p, l) in zip(prediction, label) if l != -100] + for prediction, label in zip(predictions, labels) + ] + + # 计算总体评估指标 + results = { + "overall_f1": f1_score(true_labels, true_predictions), + "overall_precision": precision_score(true_labels, true_predictions), + "overall_recall": recall_score(true_labels, true_predictions) + } + + # 计算每个实体类型的指标 + for entity_type in ["FLIGHT", "COMPANY", "START", "END", "DATE", "TIME", "DEPARTURE_TIME", "ARRIVAL_TIME","TICKET_NUM","SEAT"]: + # 将标签转换为二进制形式 + binary_preds = [] + binary_labels = [] + + for pred_seq, label_seq in zip(true_predictions, true_labels): + pred_binary = [] + label_binary = [] + + for pred, label in zip(pred_seq, label_seq): + # 检查标签是否属于当前实体类型 + pred_is_entity = pred.endswith(entity_type) + label_is_entity = label.endswith(entity_type) + + pred_binary.append(1 if pred_is_entity else 0) + label_binary.append(1 if label_is_entity else 0) + + binary_preds.append(pred_binary) + binary_labels.append(label_binary) + + # 计算当前实体类型的F1分数 + try: + entity_f1 = f1_score( + sum(binary_labels, []), # 展平列表 + sum(binary_preds, []), # 展平列表 + average='binary' # 使用二进制评估 + ) + results[f"{entity_type}_f1"] = entity_f1 + except Exception as e: + print(f"计算{entity_type}的F1分数时出错: {str(e)}") + results[f"{entity_type}_f1"] = 0.0 + + return results + +def augment_data(texts, labels): + """数据增强""" + augmented_texts = [] + augmented_labels = [] + for text, label in zip(texts, labels): + # 原始数据 + augmented_texts.append(text) + augmented_labels.append(label) + + # 删除一些无关字符 + new_text = [] + new_label = [] + for t, l in zip(text, label): + if l == "O" and random.random() < 0.3: + continue + new_text.append(t) + new_label.append(l) + augmented_texts.append(new_text) + augmented_labels.append(new_label) + + return augmented_texts, augmented_labels + +def main(): + # 加载数据 + texts, labels = load_data(FlightNERConfig.DATA_PATH) + print(f"加载的数据集大小:{len(texts)}个样本") + + # 划分数据集 + train_texts, val_texts, train_labels, val_labels = train_test_split( + texts, labels, test_size=FlightNERConfig.TEST_SIZE, random_state=FlightNERConfig.SEED + ) + + # 数据增强 + train_texts, train_labels = augment_data(train_texts, train_labels) + + # 加载分词器和模型 + tokenizer = AutoTokenizer.from_pretrained(FlightNERConfig.MODEL_NAME) + model = AutoModelForTokenClassification.from_pretrained( + FlightNERConfig.MODEL_NAME, + num_labels=len(FlightNERConfig.LABELS), + id2label={i: label for i, label in enumerate(FlightNERConfig.LABELS)}, + label2id={label: i for i, label in enumerate(FlightNERConfig.LABELS)} + ) + + # 创建数据集 + train_dataset = NERDataset(train_texts, train_labels, tokenizer, FlightNERConfig.LABELS) + val_dataset = NERDataset(val_texts, val_labels, tokenizer, FlightNERConfig.LABELS) + + # 训练参数 + training_args = TrainingArguments( + output_dir=FlightNERConfig.MODEL_PATH, + num_train_epochs=FlightNERConfig.EPOCHS, + per_device_train_batch_size=FlightNERConfig.BATCH_SIZE, + per_device_eval_batch_size=FlightNERConfig.BATCH_SIZE, + learning_rate=FlightNERConfig.LEARNING_RATE, + warmup_ratio=FlightNERConfig.WARMUP_RATIO, + weight_decay=FlightNERConfig.WEIGHT_DECAY, + gradient_accumulation_steps=FlightNERConfig.GRADIENT_ACCUMULATION_STEPS, + logging_steps=FlightNERConfig.LOGGING_STEPS, + save_total_limit=2, + no_cuda=True, + evaluation_strategy="steps", + eval_steps=FlightNERConfig.EVAL_STEPS, + save_strategy="steps", + save_steps=FlightNERConfig.SAVE_STEPS, + load_best_model_at_end=True, + metric_for_best_model="overall_f1", + greater_is_better=True, + logging_dir=FlightNERConfig.LOG_PATH, + logging_first_step=True, + report_to=["tensorboard"], + ) + + # 训练器 + trainer = Trainer( + model=model, + args=training_args, + train_dataset=train_dataset, + eval_dataset=val_dataset, + compute_metrics=compute_metrics, + callbacks=[EarlyStoppingCallback(early_stopping_patience=FlightNERConfig.EARLY_STOPPING_PATIENCE)] + ) + + # 训练模型 + trainer.train() + + # 评估结果 + eval_results = trainer.evaluate() + print("\n评估结果:") + for key, value in eval_results.items(): + print(f"{key}: {value:.4f}") + + # 保存最终模型 + model.save_pretrained(f"{FlightNERConfig.MODEL_PATH}/best_model") + tokenizer.save_pretrained(f"{FlightNERConfig.MODEL_PATH}/best_model") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/train_train_ner.py b/train_train_ner.py index e69de29..3ff7fb7 100644 --- a/train_train_ner.py +++ b/train_train_ner.py @@ -0,0 +1,289 @@ +# train_train_ner.py +from transformers import AutoTokenizer, AutoModelForTokenClassification, TrainingArguments, Trainer +from transformers.trainer_callback import EarlyStoppingCallback +import torch +from torch.utils.data import Dataset +import numpy as np +from sklearn.model_selection import train_test_split +from seqeval.metrics import f1_score, precision_score, recall_score +import random +import os +import re +from ner_config import TrainNERConfig + +# 设置随机种子 +def set_seed(seed): + random.seed(seed) + np.random.seed(seed) + torch.manual_seed(seed) + if torch.cuda.is_available(): + torch.cuda.manual_seed_all(seed) + +set_seed(TrainNERConfig.SEED) + +class NERDataset(Dataset): + def __init__(self, texts, labels, tokenizer, label_list): + self.texts = texts + self.labels = labels + self.tokenizer = tokenizer + # 创建标签到ID的映射 + self.label2id = {label: i for i, label in enumerate(label_list)} + self.id2label = {i: label for i, label in enumerate(label_list)} + + # 打印标签映射信息 + print("标签映射:") + for label, idx in self.label2id.items(): + print(f"{label}: {idx}") + + # 对文本进行编码 + self.encodings = self.tokenize_and_align_labels() + + def tokenize_and_align_labels(self): + tokenized_inputs = self.tokenizer( + [''.join(text) for text in self.texts], + truncation=True, + padding=True, + max_length=TrainNERConfig.MAX_LENGTH, + return_offsets_mapping=True, + return_tensors=None + ) + + labels = [] + for i, label in enumerate(self.labels): + word_ids = tokenized_inputs.word_ids(i) + previous_word_idx = None + label_ids = [] + current_entity = None + + for word_idx in word_ids: + if word_idx is None: + label_ids.append(-100) + elif word_idx != previous_word_idx: + # 新词开始 + label_ids.append(self.label2id[label[word_idx]]) + if label[word_idx].startswith("B-"): + current_entity = label[word_idx][2:] + elif label[word_idx] == "O": + current_entity = None + else: + # 同一个词的后续token + if current_entity: + label_ids.append(self.label2id[f"I-{current_entity}"]) + else: + label_ids.append(self.label2id["O"]) + + previous_word_idx = word_idx + + labels.append(label_ids) + + tokenized_inputs["labels"] = labels + return tokenized_inputs + + def __getitem__(self, idx): + return {key: torch.tensor(val[idx]) for key, val in self.encodings.items()} + + def __len__(self): + return len(self.texts) + +def load_data(file_path): + texts, labels = [], [] + current_words, current_labels = [], [] + + def clean_trips_labels(words, labels): + """清理车次标注,确保格式正确""" + i = 0 + while i < len(words): + if labels[i].startswith("B-TRIPS"): # 修改标签名 + # 找到车次的结束位置 + j = i + 1 + while j < len(words) and labels[j].startswith("I-TRIPS"): # 修改标签名 + j += 1 + + # 检查并修正车次序列 + train_words = words[i:j] + train_str = ''.join(train_words) + + # 检查格式是否符合车次规范 + valid_patterns = [ + re.compile(r'^[GDCZTKY]\d{1,2}$'), + re.compile(r'^[GDCZTKY]\d{1,2}/\d{1,2}$'), + re.compile(r'^[GDCZTKY]\d{1,2}-\d{1,2}$'), + re.compile(r'^\d{1,4}$'), + re.compile(r'^[A-Z]\d{1,4}$') + ] + + is_valid = any(pattern.match(train_str) for pattern in valid_patterns) + if not is_valid: + # 将格式不正确的标签改为O + for k in range(i, j): + labels[k] = "O" + + i = j + else: + i += 1 + + return words, labels + + with open(file_path, 'r', encoding='utf-8') as f: + for line in f: + line = line.strip() + if line: + try: + word, label = line.split(maxsplit=1) + current_words.append(word) + current_labels.append(label) + except Exception as e: + print(f"错误:处理行时出错: '{line}'") + continue + elif current_words: # 遇到空行且当前有数据 + # 清理车次标注 + current_words, current_labels = clean_trips_labels(current_words, current_labels) + texts.append(current_words) + labels.append(current_labels) + current_words, current_labels = [], [] + + if current_words: # 处理最后一个样本 + current_words, current_labels = clean_trips_labels(current_words, current_labels) + texts.append(current_words) + labels.append(current_labels) + + return texts, labels + +def compute_metrics(p): + """计算评估指标""" + predictions, labels = p + predictions = np.argmax(predictions, axis=2) + + # 移除特殊token的预测和标签 + true_predictions = [ + [TrainNERConfig.LABELS[p] for (p, l) in zip(prediction, label) if l != -100] + for prediction, label in zip(predictions, labels) + ] + true_labels = [ + [TrainNERConfig.LABELS[l] for (p, l) in zip(prediction, label) if l != -100] + for prediction, label in zip(predictions, labels) + ] + + # 计算总体评估指标 + results = { + "overall_f1": f1_score(true_labels, true_predictions), + "overall_precision": precision_score(true_labels, true_predictions), + "overall_recall": recall_score(true_labels, true_predictions) + } + + # 计算每个实体类型的指标 + for entity_type in ["COMPANY","TRIPS", "START", "END", "DATE", "TIME", "SEAT", "NAME"]: + # 将标签转换为二进制形式 + binary_preds = [] + binary_labels = [] + + for pred_seq, label_seq in zip(true_predictions, true_labels): + pred_binary = [] + label_binary = [] + + for pred, label in zip(pred_seq, label_seq): + # 检查标签是否属于当前实体类型 + pred_is_entity = pred.endswith(entity_type) + label_is_entity = label.endswith(entity_type) + + pred_binary.append(1 if pred_is_entity else 0) + label_binary.append(1 if label_is_entity else 0) + + binary_preds.append(pred_binary) + binary_labels.append(label_binary) + + # 计算当前实体类型的F1分数 + try: + entity_f1 = f1_score( + sum(binary_labels, []), # 展平列表 + sum(binary_preds, []), # 展平列表 + average='binary' # 使用二进制评估 + ) + results[f"{entity_type}_f1"] = entity_f1 + except Exception as e: + print(f"计算{entity_type}的F1分数时出错: {str(e)}") + results[f"{entity_type}_f1"] = 0.0 + + return results + +def augment_data(texts, labels): + """数据增强""" + augmented_texts = [] + augmented_labels = [] + for text, label in zip(texts, labels): + # 原始数据 + augmented_texts.append(text) + augmented_labels.append(label) + + # 删除一些无关字符 + new_text = [] + new_label = [] + for t, l in zip(text, label): + if l == "O" and random.random() < 0.3: + continue + new_text.append(t) + new_label.append(l) + augmented_texts.append(new_text) + augmented_labels.append(new_label) + + return augmented_texts, augmented_labels + +def main(): + # 加载数据 + texts, labels = load_data(TrainNERConfig.DATA_PATH) + print(f"加载的数据集大小:{len(texts)}个样本") + + # 划分数据集 + train_texts, val_texts, train_labels, val_labels = train_test_split( + texts, labels, test_size=TrainNERConfig.TEST_SIZE, random_state=TrainNERConfig.SEED + ) + + # 数据增强 + train_texts, train_labels = augment_data(train_texts, train_labels) + + # 加载分词器和模型 + tokenizer = AutoTokenizer.from_pretrained(TrainNERConfig.MODEL_NAME) + model = AutoModelForTokenClassification.from_pretrained( + TrainNERConfig.MODEL_NAME, + num_labels=len(TrainNERConfig.LABELS), + id2label={i: label for i, label in enumerate(TrainNERConfig.LABELS)}, + label2id={label: i for i, label in enumerate(TrainNERConfig.LABELS)} + ) + + # 创建数据集 + train_dataset = NERDataset(train_texts, train_labels, tokenizer, TrainNERConfig.LABELS) + val_dataset = NERDataset(val_texts, val_labels, tokenizer, TrainNERConfig.LABELS) + + # 训练参数 + training_args = TrainingArguments( + output_dir=TrainNERConfig.MODEL_PATH, + num_train_epochs=TrainNERConfig.EPOCHS, + per_device_train_batch_size=TrainNERConfig.BATCH_SIZE, + per_device_eval_batch_size=TrainNERConfig.BATCH_SIZE, + learning_rate=TrainNERConfig.LEARNING_RATE, + warmup_ratio=TrainNERConfig.WARMUP_RATIO, + weight_decay=TrainNERConfig.WEIGHT_DECAY, + gradient_accumulation_steps=TrainNERConfig.GRADIENT_ACCUMULATION_STEPS + ) + + trainer = Trainer( + model=model, + args=training_args, + train_dataset=train_dataset, + eval_dataset=val_dataset, + compute_metrics=compute_metrics + ) + + trainer.train() + # 评估结果 + eval_results = trainer.evaluate() + print("\n评估结果:") + for key, value in eval_results.items(): + print(f"{key}: {value:.4f}") + + # 保存最终模型 + model.save_pretrained(f"{TrainNERConfig.MODEL_PATH}/best_model") + tokenizer.save_pretrained(f"{TrainNERConfig.MODEL_PATH}/best_model") + +if __name__ == "__main__": + main() \ No newline at end of file -- Gitblit v1.9.3