免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

中文命名實體識別實戰(zhàn):BERT+BiLSTM+CRF完整項目解析

中文命名實體識別實戰(zhàn):BERT+BiLSTM+CRF完整項目解析 簡介面向中文命名實體識別任務(wù)融合BERT、BiLSTM與CRF的Python實現(xiàn)方案可對中文文本中的人名、地名、組織機構(gòu)等實體進行端到端識別包含完整源碼、項目說明、預(yù)訓(xùn)練模型與標(biāo)注數(shù)據(jù)適合計算機、人工智能等專業(yè)學(xué)生用于畢業(yè)設(shè)計、課程設(shè)計或NLP實戰(zhàn)練習(xí)。壓縮包共58個文件以16個py源碼、19個pyc編譯文件、9個txt說明為主輔以png結(jié)構(gòu)圖、md筆記、xml工程配置和csv數(shù)據(jù)整體13.75MB目錄按模型、數(shù)據(jù)處理、訓(xùn)練等模塊劃分便于按圖索驥。從現(xiàn)有瀏覽數(shù)據(jù)看已有1209人學(xué)習(xí)下載。工程內(nèi)提供BILSTM_CRF、IDCNN_CRF、BILSTM_Attention_CRF、BERT_BILSTM_CRF等多種對比模型附帶人民日報和MSRA數(shù)據(jù)集預(yù)處理腳本可直接運行訓(xùn)練與測試項目說明詳細且經(jīng)測試運行成功既適合小白逐步練習(xí)也可作為課設(shè)、畢設(shè)或初期項目立項演示能幫助深入理解NER中序列標(biāo)注、特征融合與解碼的完整流程。1. 一個zip里裝著的成熟技術(shù)棧BERTBiLSTMCRF 到底是做什么的看到“基于BERTBILSTMCRF進行中文命名實體識別python源碼項目說明模型數(shù)據(jù).zip”這個打包名字懂行的人會先松一口氣這不是什么玩具 demo而是目前中文命名實體識別NER領(lǐng)域最經(jīng)典、最不容易翻車的三層結(jié)構(gòu)。BERT負責(zé)把每個字的語義編碼成向量BiLSTM在整句話里再做一輪上下文精修CRF在最后給標(biāo)簽序列套上合規(guī)約束。三者的關(guān)系有點像“閱讀理解 上下文潤色 校對排版”。這套技術(shù)棧能解決的具體問題很直接從一段中文文本里自動抽出人名、地名、機構(gòu)名、時間、藥品名、案件名等實體片段。對畢業(yè)設(shè)計、法律文書抽取、醫(yī)療病歷結(jié)構(gòu)化、客服工單打標(biāo)這些場景它都是最穩(wěn)的起點方案。在動手之前我要先幫你看清楚這個結(jié)構(gòu)為什么值得搭、每一步怎么落地、以及哪些地方會白白浪費你兩三天時間。2. 三層神經(jīng)網(wǎng)絡(luò)各司其職為什么非要把 BERT、BiLSTM、CRF 拼在一起2.1 中文NER難在哪邊界、歧義和嵌套中文命名實體識別和英文最大的差別在于“字”和“詞”的關(guān)系。英文里詞天然有空格分隔實體邊界基本等于詞邊界中文沒有這個天然分隔符所以中文NER通常退化成“序列標(biāo)注”問題——每個字給一個標(biāo)簽連起來才構(gòu)成實體。比如“我 在 北 京 上 班”這六個字需要給“北”“京”分別打上“B-LOC”“I-LOC”模型才能拼出“北京”這個地名。邊界還不是唯一難點。中文的歧義很要命“南京市長江大橋”既可以切成“南京市/長江大橋”也可以理解為“南京市長/江大橋”“小米上市了”里的“小米”是公司還是糧食要看句子上下文。更麻煩的是嵌套實體比如“北京大學(xué)附屬醫(yī)院”里同時存在“北京大學(xué)”和“北京大學(xué)附屬醫(yī)院”兩個實體但扁平式標(biāo)注只能選一層。所以一個能干活的NER系統(tǒng)必須同時擁有“理解語義”和“利用上下文修正”的能力這正是三層結(jié)構(gòu)存在的理由。如果把NER比作流水線BERT是看懂了全文語義的閱讀者BiLSTM是把前后文線索反復(fù)咀嚼的校稿人CRF則是最后那道不許標(biāo)簽亂跳的質(zhì)檢閘門。三層各管一段去掉任何一層效果都會肉眼可見地變差。2.2 為什么不能只用 BERT也不能只用 BiLSTMCRF先看只用BERT的情況。BERT經(jīng)過預(yù)訓(xùn)練之后每個字會得到一個帶著整句上下文信息的向量理論上可以直接把這些向量喂給一個全連接層輸出每個字屬于每種標(biāo)簽的概率。這樣做能出結(jié)果但在長句上問題很明顯BERT的解碼端沒有“記住剛才那個字是什么標(biāo)簽”的能力。比如“李華在北京工作”中“李”被識別成B-PER后下一個“華”大概率也應(yīng)該是I-PER但如果只看BERT輸出的概率向量“華”也可能被誤判成B-PER因為詞向量層面它并沒有“我是不是前一個實體的延續(xù)”這個信息。再看只用BiLSTMCRF的情況。BiLSTM能從兩個方向讀取序列信息CRF能約束標(biāo)簽轉(zhuǎn)移這套經(jīng)典組合在十年前是標(biāo)配。但它的天花板在于輸入特征如果還是用隨機初始化的字向量模型對語義的理解非常淺碰到“蘋果發(fā)布新手機”這種句子它很難把“蘋果”歸到ORG還是MISC因為沒有足夠的預(yù)訓(xùn)練知識告訴它“蘋果”在科技新聞里指公司。在實際項目中我見過不少團隊把這三層拆開做對比實驗。結(jié)論很一致BERT單層F1大約在82-86BiLSTMCRF單跑大概在75-80三層疊加能上到90左右。差異來源主要就是“語義理解”和“標(biāo)簽序列約束”這兩個能力缺一不可。另外BERT內(nèi)部其實包含12層Transformer已經(jīng)具備很強的特征提取能力所以疊加的BiLSTM通??梢宰龅脺\一些單層即可作用是對BERT輸出做一次序列級別的平滑聚合而不是重新提取特征。2.3 CRF的轉(zhuǎn)移矩陣沒有它標(biāo)簽會亂跳CRF條件隨機場在NER里的核心作用是一個詞約束。它會學(xué)習(xí)一個標(biāo)簽轉(zhuǎn)移矩陣比如“B-PER后面只能跟I-PER或者O不能直接跟B-LOC”“I-LOC前面必須是B-LOC或者I-LOC”。這種約束用代碼很難手寫全因為標(biāo)簽組合太多而CRF會從訓(xùn)練數(shù)據(jù)里自動統(tǒng)計這些轉(zhuǎn)移概率。具體來說BERTBiLSTM輸出的每個字的標(biāo)簽概率會被送入CRF層CRF會結(jié)合“當(dāng)前字的概率”和“前一個字的標(biāo)簽”這兩部分信息利用維特比算法找出整條句子最優(yōu)的標(biāo)簽路徑。舉個例子“我 在 北 京 上 班”如果沒有CRF模型可能給“北”打B-LOC、給“京”打O因為單獨看每個字“京”被識別成O的概率也不低但CRF知道“B-LOC 后面接 O”的轉(zhuǎn)移概率極低所以會把“京”強行糾正為I-LOC。注意CRF不是用來提升實體識別概率的它是用來壓制不合法序列的。訓(xùn)練過程中你是否正確實現(xiàn)了“損失 真實路徑分數(shù) - log(所有路徑分數(shù)和)”這個公式直接決定了最終實體邊界是否整齊。理解了這個原理你在調(diào)參時才不會把“CRF的學(xué)習(xí)率”和“BERT的學(xué)習(xí)率”混為一談——這是后面實操里非常關(guān)鍵的坑。3. 本地跑通最小源碼環(huán)境、數(shù)據(jù)格式與第一個訓(xùn)練循環(huán)3.1 環(huán)境準(zhǔn)備依賴與預(yù)訓(xùn)練模型下載在你打開那個zip之前先確認機器上已經(jīng)有了最基本的Python環(huán)境。這里的要求不算苛刻Python 3.8以上就可以顯卡有的話最好沒有也能用CPU硬跑只是訓(xùn)練速度會慢很多。下面是我常用的創(chuàng)建環(huán)境命令# 創(chuàng)建獨立環(huán)境并激活避免把系統(tǒng)Python搞亂 conda create -n ner python3.8 -y conda activate ner # 安裝核心依賴按順序執(zhí)行 pip install torch --index-url https://download.pytorch.org/whl/cu118 pip install transformers4.21.3 pip install datasets pip install seqeval pip install tqdm numpy pandas說一下每個依賴為什么要裝torch是BERT和BiLSTM的底層框架transformers負責(zé)加載預(yù)訓(xùn)練模型比如bert-base-chinese注意版本不要追新4.2x系列足夠新版本API差異反而容易讓你從網(wǎng)上抄來的訓(xùn)練代碼報錯datasets用來把原始標(biāo)注文件轉(zhuǎn)成pytorch能讀的Dataset對象seqeval是專門做序列標(biāo)注評估的庫比手寫F1計算省心得多。預(yù)訓(xùn)練模型這塊是很多人卡住的地方。HuggingFace上的bert-base-chinese大約400M如果網(wǎng)絡(luò)不穩(wěn)定建議設(shè)置鏡像環(huán)境變量# Linux/Mac下執(zhí)行 pip install -U huggingface_hub export HF_ENDPOINThttps://hf-mirror.com python -c from transformers import BertTokenizer, BertModel; BertTokenizer.from_pretrained(bert-base-chinese); BertModel.from_pretrained(bert-base-chinese)提示鏡像環(huán)境變量只對當(dāng)前終端有效。如果你用pycharm跑代碼需要在運行配置里同樣把HF_ENDPOINT加進去否則代碼里from_pretrained會重新走默認源卡在下載。判斷預(yù)訓(xùn)練模型有沒有下載成功看緩存目錄即可。Windows默認在C:\Users\你的用戶名\.cache\huggingface\Linux在~/.cache/huggingface/??吹侥P臀募暾稍谀抢锖竺嬗?xùn)練就不會再為下載來回折騰。3.2 數(shù)據(jù)標(biāo)注格式BIOES是什么意思你的數(shù)據(jù)要長什么樣中文NER的數(shù)據(jù)格式通常是“字標(biāo)簽”逐行排列不同句子之間用空行隔開。標(biāo)簽體系有BIO和BIOES兩種BIO標(biāo)簽將所有實體的第一個字標(biāo)為B-后續(xù)字標(biāo)為I-非實體標(biāo)為OBIOES在BIO基礎(chǔ)上多了E和S分別表示實體的結(jié)束字和單字實體。我在項目里優(yōu)先推薦BIOES因為它在實體邊界上的信息量更明確。舉個例子“我在北京上班”這句話的BIOES標(biāo)注長這樣我 O 在 O 北 B-LOC 京 E-LOC 上 O 班 O而“王小明去北京”這種含單字實體的句子就必須用S來標(biāo)單字人名王 S-PER 小 I-PER 明 E-PER 去 O 北 B-LOC 京 E-LOC如果你拿到的是BIO格式可以用一段小腳本轉(zhuǎn)成BIOES但轉(zhuǎn)換邏輯要小心處理“連續(xù)實體緊挨著”的情況BIO里連續(xù)兩個實體“北京上海”的標(biāo)注是“B-LOC I-LOC B-LOC I-LOC”轉(zhuǎn)BIOES時不能只看實體首尾必須判斷上一個字的標(biāo)簽是B還是I否則會把“北京上”誤標(biāo)成一個地名。這個轉(zhuǎn)換函數(shù)建議寫完以后用“北京市朝陽區(qū)”這種帶連續(xù)實體的句子手動驗一遍。3.3 數(shù)據(jù)讀取與標(biāo)簽對齊數(shù)據(jù)格式讀完下一步是把文本轉(zhuǎn)成模型能吃的張量。這一步是整個項目里最容易出錯的地方核心原因是BERT的tokenizer給每個漢字可能拆成多個subword片段而你的標(biāo)注是按“字”給的兩者對不上。我先展示一個最常見的數(shù)據(jù)讀取代碼然后解釋為什么要注意對齊# -*- coding: utf-8 -*- from transformers import BertTokenizer import torch MAX_LEN 128 def load_data(file_path): sentences, labels [], [] with open(file_path, r, encodingutf-8) as f: sentence, label [], [] for line in f: line line.strip() if line : if sentence: sentences.append(sentence.copy()) labels.append(label.copy()) sentence, label [], [] else: parts line.split() # 文件可能是“字 空格 標(biāo)簽”也可能用制表符 sentence.append(parts[0]) label.append(parts[-1] if len(parts) 1 else O) return sentences, labels class NERDataset(torch.utils.data.Dataset): def __init__(self, sentences, labels, tokenizer, label2id, max_len128): self.examples [] for sent, tag in zip(sentences, labels): # 關(guān)鍵點設(shè)置return_offsets_mappingTrue, 才能拿到每個subword對應(yīng)原文字符的映射 encoding tokenizer( sent, is_split_into_wordsTrue, max_lengthmax_len, truncationTrue, paddingmax_length, return_tensorspt, return_offsets_mappingTrue, ) # 標(biāo)簽對齊到subword word_ids encoding.word_ids() aligned_label [] prev_word None for word_id in word_ids: if word_id is None: aligned_label.append(-100) # 特殊token不參與loss計算 elif word_id ! prev_word: aligned_label.append(label2id[tag[word_id]]) else: # 同一個word被拆成多個subword沿用第一個標(biāo)簽 aligned_label.append(label2id[tag[word_id]]) prev_word word_id self.examples.append({ input_ids: encoding[input_ids].squeeze(), attention_mask: encoding[attention_mask].squeeze(), labels: torch.tensor(aligned_label, dtypetorch.long), }) def __len__(self): return len(self.examples) def __getitem__(self, idx): return self.examples[idx]這段代碼的關(guān)鍵在標(biāo)簽對齊邏輯。word_ids()會返回每個token對應(yīng)的原始字索引None表示CLS、SEP、PAD這些特殊token。遇到特殊token時我把標(biāo)簽設(shè)為-100這樣在計算交叉熵損失的時候PyTorch會自動忽略-100所在的位置。遇到同一個字被拆成多個subword的情況后續(xù)subword直接用第一個subword的標(biāo)簽保證標(biāo)簽不串位。注意上面的代碼里有一個容易埋雷的小地方——tokenizer的is_split_into_wordsTrue參數(shù)。如果不把句子傳成詞列表而是直接傳字符串BERT會按自己的規(guī)則重新分詞原本的“字-標(biāo)簽”對應(yīng)關(guān)系就被打亂了。我在剛開始做項目時就在這里吃過虧換句話說是“標(biāo)簽對不上”里最高頻的原因。數(shù)據(jù)集做好后按照8:1:1的比例劃分訓(xùn)練集、驗證集和測試集。劃分的時候要按句子為單位隨機打亂不能按字符打亂否則會造成同一句子的標(biāo)簽泄漏到不同集合里評估結(jié)果會虛高。4. 訓(xùn)練參數(shù)這樣調(diào)batch size、max_len 與學(xué)習(xí)率的三方權(quán)衡4.1 一套默認能跑的參數(shù)模板模型搭建和訓(xùn)練循環(huán)看起來代碼量不小但結(jié)構(gòu)是固定的。下面是一段可以直接套用的訓(xùn)練核心代碼也是大多數(shù)NER項目的通用寫法# -*- coding: utf-8 -*- import torch from torch.utils.data import DataLoader from transformers import BertModel, BertTokenizer, AdamW, get_linear_schedule_with_warmup import torch.nn as nn class BertBiLSTMCRF(nn.Module): def __init__(self, bert_path, num_labels, lstm_hidden256): super().__init__() self.bert BertModel.from_pretrained(bert_path) self.bilstm nn.LSTM( input_sizeself.bert.config.hidden_size, hidden_sizelstm_hidden, num_layers1, bidirectionalTrue, batch_firstTrue, ) self.fc nn.Linear(lstm_hidden * 2, num_labels) self.crf nn.CRF(num_labels) # 如果使用pytorch-crf庫 def forward(self, input_ids, attention_mask, labelsNone): bert_out self.bert(input_idsinput_ids, attention_maskattention_mask) sequence_output bert_out.last_hidden_state lstm_out, _ self.bilstm(sequence_output) emissions self.fc(lstm_out) if labels is not None: loss -self.crf(emissions, labels, maskattention_mask.bool()) return loss else: return self.crf.decode(emissions, maskattention_mask.bool())這段代碼的層次關(guān)系很清晰BERT的輸出維度是768BiLSTM的hidden_size設(shè)為256雙向拼接后是512維再通過全連接層映射到標(biāo)簽數(shù)量。注意CRF層直接放在了模型內(nèi)部loss計算時取負對數(shù)似然解碼時直接調(diào)用decode方法。如果你用的不是pytorch-crf庫也可以手寫維特比算法但既然有成熟的庫我建議直接用pip install pytorch-crf裝上省時又不愛出錯。提示上面對CRF的調(diào)用基于pytorch-crf這個庫。如果你拿到手的zip里是自己實現(xiàn)的手寫CRF類注意檢查它的decode是否接收了mask參數(shù)有些舊版實現(xiàn)不接收mask在padding部分會出現(xiàn)幻覺標(biāo)簽這類問題特別隱蔽。4.2 學(xué)習(xí)率與BERT層凍結(jié)微調(diào)的重心應(yīng)該放在哪訓(xùn)練參數(shù)的首選清單看這張表參數(shù)推薦值說明batch_size16GPU/ 8CPU顯存不夠就減半不要硬扛learning_rateBERT2e-5微調(diào)預(yù)訓(xùn)練模型的標(biāo)準(zhǔn)學(xué)習(xí)率太大容易災(zāi)難性遺忘learning_rateBiLSTMCRF1e-3下游隨機初始化的層需要用更大的學(xué)習(xí)率max_len128超過128的真實句子占少數(shù)長了切掉短了補齊epochs20-30存best模型不需要訓(xùn)滿全部warmup_ratio0.1前10%的step線性升學(xué)習(xí)率穩(wěn)定BERT微調(diào)有關(guān)鍵設(shè)計是分組學(xué)習(xí)率。BERT層用2e-5BiLSTM和CRF這些隨機初始化的層用1e-3這兩組參數(shù)放進同一個優(yōu)化器卻要用不同學(xué)習(xí)率。常規(guī)做法是在構(gòu)造optimizer時傳一個參數(shù)組列表# 構(gòu)造分組參數(shù)BERT層和下游層用不同學(xué)習(xí)率 optimizer_grouped_parameters [ {params: [p for n, p in model.named_parameters() if bert in n], lr: 2e-5}, {params: [p for n, p in model.named_parameters() if bert not in n], lr: 1e-3}, ] optimizer AdamW(optimizer_grouped_parameters, weight_decay0.01)還有一個常被忽略的選項是“凍結(jié)BERT的一部分層”。前幾層Transformer學(xué)習(xí)到的是通用字面特征對領(lǐng)域遷移幫助不大微調(diào)預(yù)算有限的話把第1到第8層的參數(shù)requires_gradFalse只訓(xùn)練后幾層和下游結(jié)構(gòu)往往能省一半顯存、速度提升30%以上效果只掉零點幾個點。第一次把項目跑通時我不建議凍結(jié)先全量訓(xùn)練拿到一個基線成績再說。4.3 訓(xùn)練過程的監(jiān)控指標(biāo)直接點說光看loss是不夠的。BERTBiLSTMCRF這類模型在訓(xùn)練前期loss下降很快到了第3個epoch以后loss就“玄學(xué)”了震蕩到面無波瀾但實體F1還在漲。原因是CRF的loss分母是所有可能路徑的分數(shù)和這個值天然很大loss雖然不再好看但序列約束正在慢慢起作用。正確的監(jiān)控方式是每個epoch結(jié)束后在驗證集上計算實體級F1而不是整個標(biāo)簽級準(zhǔn)確率。標(biāo)簽級準(zhǔn)確率會被“O”標(biāo)簽主導(dǎo)模型全部預(yù)測成O也能有接近80%的準(zhǔn)確率數(shù)值毫無意義。我習(xí)慣在每個epoch跑一遍from seqeval.metrics import classification_report, f1_score def evaluate(model, dataloader, id2label): model.eval() all_true, all_pred [], [] with torch.no_grad(): for batch in dataloader: input_ids batch[input_ids].to(device) attention_mask batch[attention_mask].to(device) true_labels batch[labels].numpy() pred model(input_ids, attention_mask) # 去掉特殊token和padding只看實際標(biāo)簽 for b_idx, word_idx in enumerate(true_labels): true_seq, pred_seq [], [] for i in range(len(word_idx)): if word_idx[i] ! -100: true_seq.append(id2label[word_idx[i]]) pred_seq.append(id2label[pred[b_idx][i]]) all_true.append(true_seq) all_pred.append(pred_seq) print(classification_report(all_true, all_pred, digits4)) return f1_score(all_true, all_pred)注意這里有兩個細節(jié)一是all_true和all_pred里存的是每句話的標(biāo)簽序列不是單個樣本的平鋪數(shù)組因為seqeval要求對每個句子分別計算實體匹配二是跑模型前先model.eval()再包torch.no_grad()否則顯存會被推理時保存的梯度撐爆。如果你希望訓(xùn)練中途自動存最好的模型可以維護一個best_f1變量每輪結(jié)束后對比一次超過就torch.save(model.state_dict(), best_model.bin)??窟@個機制我?guī)缀鯊牟恍枰獮椤癳poch設(shè)多少”糾結(jié)。5. 避坑記錄中文NER最常見的四個翻車現(xiàn)場5.1 標(biāo)簽錯位預(yù)測結(jié)果全是對的但實體全都湊不齊現(xiàn)象模型在訓(xùn)練集上loss正常下降驗證集F1卻一直徘徊在20分以下。把預(yù)測結(jié)果打印出來發(fā)現(xiàn)每個字的標(biāo)簽看起來都有道理但組合成的實體要么缺頭、要么缺尾甚至有“I-PER”開頭的序列。原因這就是“標(biāo)簽對齊”翻車了。最常見的情況是is_split_into_words參數(shù)漏傳tokenizer把“北京”這種連續(xù)字符當(dāng)成了一個詞導(dǎo)致word_ids映射錯位原本“北B-LOC 京I-LOC”的標(biāo)簽被錯誤地跟BERT的piece一一對應(yīng)整個序列往后錯一位。還有一個變體是用了return_offsets_mappingTrue卻完全沒用它等于白拿映射做裝飾。解決在數(shù)據(jù)讀取階段把encoding[word_ids()]打印出來對照原始句子人工檢查前3條樣本??吹絒None, 0, 1, 1, 2, None]這種結(jié)構(gòu)就該意識到第1和第2號字被合并成了同一個word。標(biāo)簽對齊那一段代碼不要直接復(fù)制要逐行理解后敲一遍。5.2 顯存OOM一跑就爆batch減半還是爆現(xiàn)象顯存8G的卡batch_size設(shè)16直接OOM改成8還在OOM最后改到2才勉強跑起來速度又慢得讓人想放棄。原因BERT本身占用不小尤其是max_len設(shè)成512時attention矩陣是平方級增長。8G顯存下batch_size16、max_len512幾乎是必爆配置。另外還有兩個隱形兇手一是paddingmax_length把短句也全補齊到128長度浪費大量顯存二是訓(xùn)練時沒有設(shè)置torch.cuda.empty_cache()碎片累積偶爾也會頂爆顯存。解決把max_len降到128batch_size先設(shè)8短句padding策略臨時改成paddingTrue讓每個batch內(nèi)部對齊不全局補齊。如果想提速可以嘗試在模型里用gradient_accumulation_steps2相當(dāng)于batch_size16但顯存占用只有8。注意梯度累積時loss要除以累積步數(shù)再回傳。5.3 預(yù)訓(xùn)練模型下載失敗每次跑到一半就卡住現(xiàn)象第一次運行BertModel.from_pretrained(bert-base-chinese)進度條走到99%就超時或者直接報ConnectionError。重試幾次大概率仍失敗偶爾成功一次又會發(fā)現(xiàn)下載不完整。原因從HuggingFace官方源下載連接不穩(wěn)定文件接近400M中斷后緩存里的臨時文件會把后續(xù)下載也污染掉。這個問題的根源是網(wǎng)絡(luò)環(huán)境跟代碼沒有任何關(guān)系。解決換鏡像源下載在運行代碼前先執(zhí)行export HF_ENDPOINThttps://hf-mirror.comWindows在命令行里用set HF_ENDPOINThttps://hf-mirror.compycharm需要重啟kernel讓環(huán)境變量生效。如果鏡像也出問題先手動把模型文件下載到本地目錄然后在代碼里指定本地路徑model BertModel.from_pretrained(./chinese_bert_wwm_ext_pytorch/) tokenizer BertTokenizer.from_pretrained(./chinese_bert_wwm_ext_pytorch/)用本地路徑加載時目錄下面至少要包含config.json、pytorch_model.bin、vocab.txt三個文件缺一不可。這也是你從別人那里拷來預(yù)訓(xùn)練模型時最愛踩的坑——他們給你的是一個壓縮包你解壓后發(fā)現(xiàn)缺了vocab.txt代碼跑不了一點。5.4 每個類別的F1差距離譜O標(biāo)簽主導(dǎo)真實實體幾乎被淹沒現(xiàn)象訓(xùn)練20個epoch驗證集標(biāo)簽準(zhǔn)確率96%但entity-level的F1只有55。翻看classification_report發(fā)現(xiàn)模型把幾乎所有token都預(yù)測成了O。原因數(shù)據(jù)里實體占比太少。一個典型的法律文書里“當(dāng)事人”段落人名集中但全文正文大量是“O”標(biāo)簽如果按句子隨機劃分數(shù)據(jù)集可能出現(xiàn)實體稀疏到?jīng)]法學(xué)的局面。更深層的原因是類別不均衡在序列標(biāo)注里被滾動放大了O標(biāo)簽在每個位置都成為超高先驗概率。解決這個現(xiàn)象要從數(shù)據(jù)配比入手。先把實體密度實體字符數(shù)/總字符數(shù)打印出來如果低于10%要考慮換數(shù)據(jù)源或調(diào)整驗證集劃分方式。其次可以在損失函數(shù)里給非O標(biāo)簽更大的權(quán)重但我直接說結(jié)果——調(diào)權(quán)重只能提升1-2個點治標(biāo)不治本。更正經(jīng)的辦法是引入真實實體詞典做注入或者在預(yù)測階段限制維特比解碼器禁止出現(xiàn)I開頭和孤立的E標(biāo)簽。用代碼實現(xiàn)的話前者是在訓(xùn)練前標(biāo)記詞典命中詞的位置并替換那些位置的loss權(quán)重后者是自定義CRF約束條件普通項目用不到那么深。6. 從訓(xùn)練到推理把模型接進真實文本的批量預(yù)測鏈路6.1 加載權(quán)重做單句預(yù)測訓(xùn)練結(jié)束后best_model.bin就是全部成果。加載它做推理時最容易被坑的一點是必須用和訓(xùn)練時完全一樣的tokenizer配置和標(biāo)簽映射表。下面這段代碼是我的標(biāo)準(zhǔn)推理模板# -*- coding: utf-8 -*- from transformers import BertTokenizer import torch def predict_single(text, model, tokenizer, id2label, max_len128): model.eval() # 逐字拆成列表和訓(xùn)練時的is_split_into_words保持完全一致 chars list(text) encoding tokenizer( chars, is_split_into_wordsTrue, max_lengthmax_len, truncationTrue, return_tensorspt, ) with torch.no_grad(): pred_ids model(encoding[input_ids], encoding[attention_mask])[0] # pred_ids是token級別的需要過濾掉特殊token再映射回原文 word_ids encoding.word_ids() entities [] current_entity None for token_id, word_id in enumerate(word_ids): if word_id is None: continue label id2label[pred_ids[token_id]] char chars[word_id] if label.startswith(B-): if current_entity is not None: entities.append(current_entity) current_entity {text: char, label: label[2:], start: word_id, end: word_id} elif label.startswith(I-) and current_entity is not None and current_entity[label] label[2:]: current_entity[text] char current_entity[end] word_id elif label.startswith(E-) and current_entity is not None and current_entity[label] label[2:]: current_entity[text] char current_entity[end] word_id entities.append(current_entity) current_entity None else: if current_entity is not None: entities.append(current_entity) current_entity None if current_entity is not None: entities.append(current_entity) # 去重避免S和B-E并存時重復(fù)輸出 return {text: text, entities: entities}這段推理邏輯最核心的地方在于按B-、I-、E-的標(biāo)簽順序來拼裝實體。注意幾個邊界條件遇到O必須立刻結(jié)束當(dāng)前實體遇到新實體緊挨著舊實體比如一個B-PER后面直接跟一個B-LOC要先把舊實體落盤再開新實體。如果你的標(biāo)簽體系是BIO而不是BIOES格式判斷邏輯要相應(yīng)簡化——但要小心“I實體跨界”的問題也就是I-PER后面接I-LOC這種情況只能靠CRF在訓(xùn)練時從數(shù)據(jù)里學(xué)到轉(zhuǎn)移懲罰推理代碼里沒法徹底兜底。6.2 把實體序列映射回原文字符位置訓(xùn)練時的tokenizer給定的是一個list輸出predict_single里的start/end已經(jīng)是原始字符下標(biāo)了。但如果你想對一整段長文本做批量識別先切句再逐句推理必須記錄每個句子在原段落里的偏移量否則所有實體的start/end都是從0開始的。# 簡單的切句與偏移量對齊策略 import re def segment_with_offset(text): segments [] offset 0 for sent in re.split(r([。]), text): if not sent.strip(): continue segments.append((sent, offset)) offset len(sent) return segments def predict_long_text(text, model, tokenizer, id2label): result [] for sent, offset in segment_with_offset(text): pred predict_single(sent, model, tokenizer, id2label) for ent in pred[entities]: result.append({ text: ent[text], label: ent[label], start: ent[start] offset, end: ent[end] offset, }) return result這個方案只是按標(biāo)點切句如果你處理的文本是PDF抽取出來的注意整段文本因為換行符被切碎的問題——遇到換行符時先做拼接再切句。還有offset的累加邏輯必須基于原始字符串的字符數(shù)不能基于去空格后的文本否則最終位置全部錯位。6.3 用測試集衡量真實召回最后一件事不是寫代碼而是用你的測試集做一次全量推理并看一眼錯誤樣例。我見過太多人訓(xùn)練完只看訓(xùn)練集F1這一看不要緊上線發(fā)現(xiàn)真實文本里大量實體漏檢。正確的姿勢是把測試集的預(yù)測結(jié)果和真實標(biāo)簽逐句打印出來對照閱讀漏檢的句子大多長什么樣是實體長度普遍超過10個字還是大量嵌套結(jié)構(gòu)誤報的實體集中在哪幾個類別比如把“華為”預(yù)測成PER還是ORG模型在短句上的表現(xiàn)和長句上的差異是否巨大對于長實體識別率低的現(xiàn)象最簡單的補救是提高max_len上限到192或256因為BERT在長文本上的注意力分配會稀釋尾部的字符特征。如果仍然無法根治就要考慮對實體做重疊窗口推理——把長文本切出部分重疊的窗口分別預(yù)測再合并結(jié)果合并時以重疊區(qū)域的投票結(jié)果為準(zhǔn)。我自己的習(xí)慣是每個實驗跑完后都把最好的checkpoint單獨保存一份把對應(yīng)的tokenizer和label映射表打個zip放在旁邊日期寫清楚。因為幾周后再回來你大概率會忘記自己的label2id順序是什么忘掉的后果就是推理結(jié)果整個亂了套而且很難定位。保留好一份完整的“模型配置數(shù)據(jù)劃分seed”是這個方向里最實在的后悔藥。這個技術(shù)棧看起來很重但從數(shù)據(jù)準(zhǔn)備好到訓(xùn)出一個能用的模型通常只需要一個晚上。你踩過的坑會讓下一個跑這個項目的人少走很多彎路希望幫到你。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 五月久久网| 任你爽精品免费视频6| 久久综合性| 天天肏视奸| 五月激情小说网| 日本a片网址| 精品日本视频444| 色五月偷偷| 丁香五月综合久久八| 亚洲图色五月天| 99亚州综合精品成人网| 大香蕉中文| 久久五月网| 黄色片精品| 97一区二区| AV在线大香蕉| 天天射影院| 激情五月天婷婷直播| 久99久视频精品| 色婷五月天| 色综合久网| 色色性爱视频| 婷婷五月天久久久| 欧美一级色| 国产裸舞表演WWWW| 婷婷五月花西瓜| 综合亚洲六月婷婷在线| 五月婷色| 综合五月婷婷| 五月丁香啪啪婷婷| 日韩在线9| 五月天婷婷色色首页| 九九色色| 日韩一本操| 99热这里只有精| 久热这里| 五月丁香六月激情综合| 色爱99| 亚洲五月天婷婷在线| 丁香午月AV中文字幕| 天堂久久婷婷| 九九色影视| 久久综合网桃花| 日韩欧美成人一区二区三区| 玖玖婷婷免费| 五月婷九月| 欧美大片免费播放器| 成人av免费观看| 草五月| 成人九九视频| 亚洲精品国产精品乱码视99| 亚洲最大激情无码| 九九干视频| 精品久久人妻| 激情六月丁香| 久久机热/这里只有精品| 亚洲成人无码网站| AV电影在线播放| 婷婷五月天天爽| 色婷婷五月天视频网站| 97在线刺激| 亚洲视频操| 国产一二三四五六七八视频| 激情五月婷婷五月丁香五月开心五月| 婷婷五月天网| 婷婷伊人综合中文字幕| 一级性爱视频| 99操99| 狠狠五月天| 婷婷久久色| 九九热最新| 天天干天天操天天爽| 91操人| 成人视屏在线观看| 九九碰九九爱97超碰| 五月婷婷色播| 天堂美国久久| 东京热伊人| 桃色Av色哟哟| 成年人99热| 深爱激情婷| 99精品在线观看视频| 天天做天天爽| 亚洲精品99| 五月天开心网| 久久99日本精品视频免费观看| 99精品手机在线视频| 99热免费18| 99热有精品在线观看| 97成人丁香| 91seAV| 97超碰欧美中文字幕| 色五月欧美| 亚洲AV中文在线| 好好干Av| 99热这里只有精品86| 噜噜在线| 伊人综合网站| 亚洲成人中心| 国产精品色一哟哟| 97人人操人人爽| 少妇人妻人伦A片| 久久五月婷综合| 99热第一页| 久天综合| 亚洲激情精品| 五月天综合| 影音先锋五月婷婷| 日日骑夜夜撸| 夜丁香五月婷婷| 婷婷五月综合久久中文字幕| 国产亚洲AV人片在线| 操九色| 伍月婷婷免费视频| 激情av在线| 久久香蕉影院| 色婷五月| 91九色中文| 婷婷色五月婷| Www.sesese丁香| 狠狠干综合网| 激情婷婷五月天日本系列| 婷婷色片| 91精品久| 九九热在线视频,| 99噜噜| 超碰在线网站9| 99视频在线观看网址| 日本人妻丁香婷婷久久寝取熟女五月| 青青草原伊人网| 熟女人妻一区二区三区免费看| 1234操逼网| 免费九九热| 99热这里只有精品18| 四色99久久| 无码人妻一区二区一牛影视| 色色aⅤ網| 色婷婷综合亚洲| 久久婷婷青青草| 九九综合网色全集 | 日韩ac不卡无码| 五月婷婷人妻| 婷婷丁香无码专区| 99热这里只有精品98| 五月天婷婷影院| 激情五月婷婷| 亚洲婷婷月丁香五月| 亚洲碰碰碰| 超碰色碰碰| 婷婷五月播| 亚洲乱码w在线观看| 久操香蕉| 丁香五月开心五月激情| 久久婷婷五月天大香蕉| 色色婷婷综合网| 色噜噜狠狠色综合成人网| 色五月色综合| 99re这里只有精品在线观看| 九九婷婷热| 亚州激情在线视频| 丰满女老板BD高清A片| 99视频内射三四| 欧美五月丁香| 激情婷婷九月| 伊人婷婷大香蕉| 久久五月天丁香花| 五月婷婷亚洲色视频| 色色色色欧美| www夜夜操comwww| 天天色综网| 亚洲天天免费| 狠狠爱深色婷婷综合| 丁香五月AV综合| 丁香五月电影| 婷婷五月天天天日日夜夜| 丁香五月天黄色片| 色婷操逼| 五月丁香啪啪网| 久久久这里都是精品| 亚洲AV网站在线观看| 国产黄色av| www.深爱激情| 五月色婷婷中文字幕| 影音先锋天天日| 中文字幕婷婷在线| 五月婷婷中文字幕| 第四色色六月色综合| 日韩无码色色| 丁香婷婷五月天色播| 亚洲精品V天堂中文字幕| 激情五月天婷婷免费观看| 久久机热/这里只有精品| 超碰中文字幕在线| 人妻AV在线观看| 五月丁香激情怕怕| 五月婷丁香| 色综合久久88色综合天天人守婷| 色婷婷亚洲综合网站| 久久在线人妻| 1024成人在线观看| 99操视频| 狠狠狠激情网| 亭亭玉月丁香| 九九色色| 婷婷丁香在线播放| 久久婷婷综合网| 狠狠色婷婷7777久| 看黄的网站18禁| 久热播这里只有精品| 青青操成人福利| 影音先锋偷偷色男人站| 第二色AⅤ| www婷婷色| 五月丁香六月婷婷在线观看| 天天日天天做天天舔| 五月丁香婷婷综合| 六月婷婷五月天| 色婷婷97| 激情五月婷婷| 波多野结衣AV无码Porn| 草美女在线观看视频在线播放| 五月婷婷综合激情小说| 91青娱乐青青草| www.色色五月天.com| 第五色婷婷| 天天碰天天插天天操| 丁香五月婷婷欧美成人色图| 可以看的av| 五月婷婷乱| 伊人香大香蕉视频| 五月婷婷之综合激情| 婷婷中文字幕版| WWW·色色色·COM| 亚洲成人在线在线| 丁香五月婷婷深五月| 国产婷婷婷| 巴基斯坦粉嫩无码视频| 天天做天天爱天天日| 亚洲天堂婷婷| 激情综合久久| 99爽视频| 色综合激情| 欧韩性爱| 婷婷五月综合网| 免费看欧美成人A片无码| 九九久热| 九九热这里只有精品一| 91啪啪| 激情五月天婷婷播播久久综合91| 99久久激情视频| WWW.桔色成人.COM入口| 丝袜人妻| 色噜噜狠狠色综合成人网| AA片在线观看视频在线播放| 丁香五月天啪啪| 热99热9| 亚洲AV网站| 狠狠爱五月婷婷综合六月| 五月婷婷六月丁香综合| 天天操天天操天天操天天操天天操 | 伊人在线视频| 五月天婷婷久久| 婷婷六月丁香五月| 五月天色网站| 婷婷综合伊人丁香| 综合久色五月| 狠狠色综合网| 婷婷五月天色播| 99热这里有精品| 678五月丁香亚洲综合| 成人AV中文字幕| 99热最新国内| 亚洲欧美日韩VIP| 五月丁香啪啪| 一级黄色尤物综合视频手机在线观看| 天天日夜夜操五月| 99热大全在线观看| 亚洲美女高潮久久久久久69| 日韩黄色电影| 4399在线观看免费毛片| 九九人人看| 7777国产盗摄农村女人| 成人.在线日韩| 色婷婷五月综合| 182TV大香蕉| 亚洲视频丁香网va| 丁香五月色综合色播五月| 97干网站| 日本色婷婷| wWW九九在线播放| 国产精产国品一二三在观看| 丁香五月婷婷啪啪| 婷婷久久久| 五月婷婷色| 思思re99视频在线观看| 99热这里有精品| www色婷婷com| 色色色色色色网站| 九九大香视频| 97色操| 玖玖资源在线视频| 日日夜夜干| 婷婷五月天六月| 六月狠狠综合| 激情综合激情综合| 九九99九九99| 亚洲综合色色色| 色激情五月| 九九在线视频| 专区无日本视频高清8| 色色亚洲| 亚洲欧美成人在线观看| 婷婷六月香| 99日热在线视频| 成人做爰高潮A片免费视频| 丁香五月天激情| 99热精品中文字幕| 国产人妻777人伦精品HD| 91色呦哟| 美欧成人视频| 色一情一乱一乱一区91Av| 久久久中文| 五月丁香网视频| 九九sese| 韩国天天婷婷| 99热国产| 激情98色婷婷五| 超碰97色| 亚洲国产婷婷色五月| 欧美色狠婷久| 五月丁香六月香综合激情| 伊人五月成人| 丁五月激情视频免费| 七七色色综合| 激情爱爱网站| 国产毛多水多女人A片| 久久大大香| 99啪视频在线观看| 成人资源在线| 天天AV导航网| 亚洲五月天婷婷综合| 亚洲中文乱字字幕在线永久| 人妻久久久久久| 99热亚洲| www.婷婷五月天,com| 国产免费一区二区三州老师F1F1| 九九综合久久丁香婷婷,开心激情综合网| 婷婷五月天激情在线观看 | 99精品自拍| 粉嫩AV久久一区二区三区| 大香蕉五月婷婷丁香| 日本精品人妻无码77777| 一级性感毛片| 丁香五月另类小说在线阅读| 婷婷的色色五月天| 777米奇影视第四色| 9色操| 色噜噜狠狠色综| 欧美婷婷五月天综合| 丁香 久久| 五月天激情网图片| 色综合九九色综合88| 五月天a婷婷伊人| 五月婷婷亚洲色视频| 丁香五月天堂| 99久精品视频| 婷婷射图五月天| 日本五月婷婷| 亚洲成人无码网站| 色操b| 日韩成人电影AV| 69超碰在线| 国产ava| 五月激情另类| 色婷婷大香蕉| 久久国产高清| 五月涩涩网| 丁香五月香蕉| 九九自拍网| www.minyis.com【JT】国内CDN落地页保证转化QQ2101460746 | 性色综合网| 天堂婷婷五月在线| 综合久久97| 丁香五月婷婷总啪啪| 五月天色色激情综合| 免费五月婷婷网| 九九综合| 青青草原中文字幕| 国产激情综合| 97婷婷狠狠| 噜色精品| 激情综合网激情五月天| 99 热国产在| 久色| 久久人操-久草婷婷-成人AV| 丁香六月在线| tingtingseav| 色丁香婷婷| 久久久国产精品黄毛片| 天天色·欧美| 亚洲综合五月天| 婷婷五月综合网| 午夜丁香综合婷婷| 大香蕉人人人| 综合成人小说婷婷| 青青999| 99er6热在线观看精品6| 五婷婷综合网| 中文字幕 久久9999| 伊人色综合网| 99视频这里只有免费精品| 色一情一乱一乱一区91Av| 无码yw| 99热精品在这里| 9热超碰| 色婷婷六月综合| 丁香五月综合| 无码人妻少妇色欲AV一区二区| www久久久| av在线资源| 啪啪黄页网| 五月天婷久精视频| 亚洲无码黄色| 国产白丝在线一区| 丁香五月性爱| 任你爽视频| 就99这里只有精品| 久久人妻精品| 综合在线丁香五月| 日本操B视频| 婷婷丁香激情五月| 五月色激情综合网| 久久999久久999久久999久久| 丁香婷婷五月人体| 欧美日韩成人免费在线| 99.N在线视频| 狠狠色噜噜狠狠狠狠综合| 狠狠色婷婷7777久| 中国丰满熟女A片免费观| 色婷婷精品小视频| 国产AV一区二区三区最新精品| 久久亚洲色导航| 天天干天天拍| 亚洲aV写真天天综合网久久| 亚洲婷婷五月| 五月丁香综合啪啪| 六月丁香五月激情婷婷| 色图亚洲91| 婷婷丁香色情| 欧美在线视频9| 99玖玖在线视频| 99久久99久久综合| 婷婷五月激情黄色| 狠狠五月天| 91狠狠色| 操操操97| 日本九九网| 一起草av| 操逼综合激情网| 九九精品自拍| 欧美交换配乱吟粗大25P| 五月丁香婷婷人体| 亚洲无aV在线中文字幕 | 26UUU欧美激情一区二区| 99亚州综合精品成人网| 97婷婷五月| 1024成人在线观看| 天天弄天天操| 综合网亚洲| 色婷婷五月天激情| 爱狠射| 日本超碰在线| 久久aaaa片一区二区| 青青草原亚洲久| 天天干天天爽| 99热情这里只有精品在线播放| 天天狠狠综合精区| 欧美97色| 丁香激情综合| 99综合色色色| 都市激情亚洲| 粉嫩AV久久一区二区三区| 婷婷五月激情图片| 亚洲欧洲自拍图片专区五月天| 色色色天堂网| 亚洲国产精品二二三三区| 五月婷婷激情69| 99九九在线观看免费| 狠狠狠狠狠狠狠狠| 激情色色色| 五月综合视频在线| 久婷婷五月综合欧美| 2018国产大陆天天弄| 久久精彩视频| 国模淫穴色图| 五月婷婷久久激情 | 热99这里只有精品视频| 五月激情丁香五月| 26uuu丁香婷婷五月| 亚洲成av人影院| 9色在线视频| 五月天激情婷婷小说| 国产成人网站在线观看| 黄页免费一级视频懂色| 婷婷丁香五月综合网| 色情综合| 97色啪| 婷婷五月天资源| 五月色婷婷综合色| 久久9视频| 五月天丁香欧美激情| 8090在线影视少妇| 亚洲乱码精品久久久久..| 激情伊人| 1区2区视频| 天天色综合网1| 怡红院99| 成人va在线观看视频| 91互操| 久久综合综合综合| 97婷婷五月丁香| 五月天激情色色| 九九久久99| 狠狠香蕉| 色综合综合色| 久热69| 五月激情久久| 婷婷五月丁香手机在线视频| 色色综合视频| 操一操插一插| 色99欧洲色19| 99久久大片| 日逼免费视频| 色情五月停停丁香| 婷婷综合精品视频97| 开心五月丁香婷婷| 五月丁香六月情婷婷久久| 怡红院院在线导航网| 天天操天天日天天爱| 国产免费av在线| 色色五月激情| 色婷婷av综合网| 婷婷影视久久| www.cao.com久久| 久久久全国免费视频| www。久久久久一b。Cc| 九九99偷拍视频| 久久综合香蕉国产国产蜜臀AV| 激情综合网激情五月婷婷| 亚洲操B| 五月丁香六月综合激情| 亚洲色综合| 激情五月婷婷视频一区二区三区| 狠狠爱综合网| 五月色综合| 69精品人人人人| 欧美顶级少妇做爰HD| 99ER热精品视频| 丁香五月天AV在线| 色婷婷五月影视| 久久久久久久8| 九色自拍| 婷婷黄色五月天在线视频| 亚洲综合丁香五月| 五月天综合| 五月婷啪啪| 久久久性爱视频| 婷婷五月天基地| 国产精品99久久久久久久女警| 免费观看欧美成人AA片爱我多深| 日本婷婷色| 久久婷婷东京热大香樵| 久久综合五月天| 涩涩五月天综合| 综合在线丁香五月| 色五月婷婷一二| 另类天堂| www婷婷色| 婷婷丁香五月激情密臀av| 殴美激情综合网| 梁铮版《蜘蛛女侠》在线| 丁香五月人妻熟女| 欧美 日韩 成人| 综合五月天| 99操碰| 大香蕉福利导航| 九九人人自拍| 国产色婷婷亚洲| 激情五月狠狠| 99激情视频| 九九精品9| 九九aV| 五月天婷婷色播| 亚洲色网址| 成人av免费观看| 色五月天 丁香| 一级黄色操B| 婷婷大香蕉| 五月天激情婷婷丁香| 色五月AV| 99精品国产乱码久久久人妻| 秋霞AV美国| 色综合久久伊伊婷婷五月| 五月天播播中文字幕| 激情五月天综合网| 欧美熟妇一区二区三区| 久久五月人人摸| 九九视频在线| 农村熟妇高潮精品A片| 99视频这里有精品| 丁香五月香蕉| 开心激情五月天网| 中字幕视频在线永久在线观看免费| 色婷婷色| 综合久久五月| 五月丁香色婷婷| 免费99色| 操你av| 五月天综合色| 9色天堂| 人人玩人人橾| 九九热婷婷| 久操操| 91精品婷婷国产综合| 在线国产精品色| 五月婷婷官网色| 久久精品一区二区三区四区| 1024久婷| 伊人色综在线| 8090在线影视少妇| 色五月天.con| 日本精品99| 九伊人网| 日韩无码色色| 婷婷五月丁香激情图片 | 狠狠综合| 丁香婷婷综合激情五月色| 婷婷无码视频| 农村熟妇高潮精品A片| 久热九九| 五月天操逼网| 操逼巨乳91| 婷婷五月天偷拍| 97高清国语自产拍| 婷婷深爱色五月| 婷婷五月天av| 99re最新地址视频| 99久久婷婷国产综合精品草原| 色婷婷国产精品综合在线观看| 色综合久久88色综合天天| 国产欧美精品AAAAAA片| 亚洲成色综合网站免费观看| 天天爽天天干| 丁香综合婷婷开心激情网| 天天干天天干天天干天天干天天干| 久久成人亚洲欧美电影| 日韩人妻操逼视频| 91人人人人人| 五月丁香六月婷婷综合伊人| 午夜无码熟熟妇丰满人妻| 梁铮版《蜘蛛女侠》在线| 中文字幕 中文字幕明步| 婷婷精品视频| 免费黄色片子| 欧洲激情五月天婷婷| 91chinese在线| .操區COm| 最近中文字幕2019视频1| 夜夜骑日日夜夜| 桃色成人网| va婷婷在线免费观看| www.超碰97| 六月婷婷国产| 99人人看| 噜噜在线| 婷婷永久在线| 精品久久99| 婷婷五月天色网久| 婷婷激情四射五月天| 亚洲色热| 一起草aV| 婷婷丁香五月激情| 色情丁香五月天| 日韩一本操| 日日爱699| 在线99精品| 久久综合五月天| 97香蕉碰碰人妻国产欧美| 色丁香五月| 国产在线6| 久久色大香蕉| 啪色综合| 六月婷婷无码| 色婷婷五月天av在线| 亚洲va欧洲va国产va不卡| 亚洲无码成人网| 99色婷婷| www.日日夜夜| 无码AV大香线蕉伊人| 天天日天天干天天操| 国产午夜精品一区二区| 天天色视频| 深爱激情五月天婷婷网| www.91五月| 欧美精品啪啪| www婷婷色情网| 国产精品成人网站| 夜夜干 夜夜操| 色999;丁香五月| 99久久精品国产色欲| 久久天天| 婷婷五月天激情五月天深爱五月天| 夜夜爱伊人| 色五月在线观看| 人妻操操色| 99玖玖在线视频| 久久这里只有精品99| 五月激情综合美女久久| 亚洲女婷婷五月基地综合久久久| 狠狠色噜噜狠狠狠狠狠色综合久久| 日婷婷| 激情综合五月| 五月天婷婷色综合| 超碰91在线| 色亚洲欧洲| 婷婷99狠狠| 99热99草97| 亚洲精品99| 五月丁香婷婷网在线在线| 丁香香五月激情免费视频| 精品一二三区久久AAA片| 六月婷婷视频| 激情五月图| av最新在线| 极品人妻VIDEOSSS人妻| 99精品爱| 色色综合网站| 午夜日韩久久久网站| 香蕉久久国产AV一区二区| 五月停停999| 天天艹天天色| 五月婷婷婷综合网| 日韩AV免费电影在线播放| 婷婷五月激情图片| 噜噜色五月| 色狠狠999综合| 日本婷婷激情四射中文字幕在线观看| 97色色色色色| 久久婷狠狠色| 深爱激情婷| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 激情综合网五月婷婷| 综合久久8| A久久| 999婷婷综合| WWW.婷婷| 色色婷婷综合网| 丁香五月天导航| 91色吧网| 婷婷综合性爱网| 91碰碰碰| 第四色五月天| 日本五月天激情| 五月天黄色激情小说| WWW五月婷婷| 99综合97| 九九99九九精品免费| 婷婷五月婷婷| 欧美精品18| 婷婷五月天激情文学| 婷婷色五月激情强奸四射| 国产无套精品一区二区| 这里只有精品在线看| 五月婷伊人| 欧美激情五月天婷婷| 色婷婷狠狠爱| 97人人搞| 久久九九99.www| 色色五月天 亚洲| chaopengdaxiangjiao| 国外亚洲成AV人片在线观看| 天天爽天天爽| 777精品久无码人妻蜜桃| www.久热| 色婷婷五月天在线观看| 五月天婷婷无码| 婷婷大香蕉| 五月天综合在线| 久久久18| 天天做天天爽| 亚洲经典三级| 特级西西4444www无码| 成人在线视频网| 天天插天天干| 北京熟妇搡BBBB搡BBBB| 三人荫蒂添的好舒服A片| 久久久GOGO无码啪啪艺术| 久久婷五月| 五月天成人综合| 日本九九九九| 少妇性按摩无码中文A片 | 香蕉久操| 久久丁香九| 九九综舍久久| 亚洲天堂热| 婷婷丁香六月综合激情站| 激情久久五月天| 国产伦理精品高清在线观看网站一区二区| 99er这里只有精品| 亚州欧美国产久精国产99综合视频| 欧美色色色色色色色色色色影视| site:pzdcoin.com| 婷婷五月天受日本法律保护| 欧美天天干五月丁香| 嫩BBB槡BBBB搡BBBB视频| 色婷婷成人做爰A片免费看网站 | 另类婷婷丁香| 天天舔日日肏夜夜爽| 97色色网| 亚洲成人五月天| 狠狠干综合| 日日夜夜九九| 久久婷婷五月天激情四射| 色综合色五月| 超碰成人av| 高潮毛片遮挡费高一百度| 97色色色色色色色色色色色色色| 五月天婷婷丁香社区| 美欧成人视频| 激情综合色| 十二区无码| www.com在线操视频免费观看| 色婷婷色综合激情91| 五月天婷婷操逼视频| 色婷婷五月天激情久久| 婷婷精品综合| 久99视频| 丁香五月婷婷综合啪啪| 天天综合91入口| 99色在线视频观看| 精品人妻久久久久| 欧美激情综合| 性av| 91chinese 在线| 日本久久天堂| 日日爽天天| 久久色区| 任你爽在线视频| 人人操日| 天天夜夜六月丁香五月婷婷老师| 五月婷婷真爱激情网| 伊人久久婷婷| 一婬一伦一区二区三区| 久久99这里| 久久婷婷六月综合综合| 99色在线| 亚洲色夜| 新激情五月开心五月婷婷五月丁香五月| 99视频精品在线| 亚洲成人av在线| 综合色色五月| 婷婷综合激情| 99精品亚洲| 99精品网| 日本91在线| 99热在线观看精品| 日韩免费视频| 五月久久婷婷| 激情深爱综合网| 亚洲无码色| 色色激情五月天| 91碰免费视频| 丁香五月天激情五月天激情五月天激情网| 激情五月丁香亭亭| 玖玖婷婷色欲| 五月丁香色婷婷婷基地| 99国产精品久久久久久久久久久| 97久久久久久久久久久| 99福利导航| 九九这里都是精品| 99热99在线| 色色色1网址| 五月丁香六月色情网欧美| 久久总和99| 国产亚洲成人综合| 色色色.com| 亚洲成人免费在线| 丁香五月激情婷婷| 婷婷五月天网址| 婷香狠狠爱五月| 五月丁香花免费视频| 久久香蕉影院| 婷婷操逼| 热久国产| 9999热在线观看| 国产一二三四五六七八视频| 国产精品久久久久久久久久| 天天操天天爱天天日| 97色天堂| 五月天综合久久丁香91| 精品亚洲VA网站| 色婷婷呢狠禁久禁| 婷婷在线操| 五月天丁香| 99热免费网站| 99爱视频在线观看这里只有精品| 欧美色图天堂网色| 五月婷婷之美女图片| 日本人妻伦在线中文字幕| 狠狠干天天内射| 久草热在线视频| 丁香九月激情| 五月花激情| 伊人婷婷五月天| 丁香婷婷基地| 婷婷开心深爱五月天| 婷婷五月激情中文字幕| 婷婷精品| 色婷婷小说网| 五月份婷婷| 夜夜操天天干| 婷婷激情肏屄网| 激情五月丁香婷婷| 丁香六月婷月91婷月| 亚洲综合激情五月久久| 99热精品10| 97超碰,人人舔,人人操,人人摸 | 97人人做| 九九综合精品| 日日日日做夜夜夜夜无码| 婷婷91| 激情久久五月网| 超碰人人摸人人操| 91精品综合久久久久久五月丁香 | 日韩九区| 亚洲婷婷久久综合| 8区视频在线| 久久久网站| 九九色中文| 中文激情网| 九九在线免费观看| 91女人18毛片水多国产| 丁香五月婷中字幕| 国产av基地| 日日干天天爽| 内射丰满人妻| 4438亚洲欧美| 可以看的av网站| 婷婷五月综合社区| 色五月网址| 伊人国产婷婷五月天| 激情五月黄色| 亚洲午夜一区二区| 婷婷五月天激情网| 99re这里有精品手机在线| 九九色插| 人人爱人人摸人人澡| 亚洲成人中心| 色无码| 综合综合网| 国产4P视频精品五区| 五月激情视频| 3pAV| 91干99| 日本在线视频www色| ss五月天激情| 国产婷婷五月| 久久婷婷视频| 五月激情综合深爱| 99热精品99| 成 人片 黄 色 大 片| 久久视频这里99| 久久HD| 天天爽天天爽| 亚洲a色| 色五月婷婷五月丁香五月激情五月视频| XX色综合| AV在线大香蕉| 五月婷婷,六月激情| 婷婷五月天AV在线| 激情综合网激情五月天| 五月天国产| 99热热九九| 五月天婷婷丁香成人网| 六月婷婷av| 丁香网五月网| 91婷色| 五月丁香久久久| 久操人妻| 色婷婷综合网站| 超碰av在线| 精品综合网在线| 99爱视频免费| 思思热再线视频| 五月综合激情| 五月色情婷婷| 亚洲超碰在线| 亚洲免费av在线| 色婷婷五月天激情综合| 97久久视频| 99ri国产精品| 99免费超碰在线| 中文字幕av在线| 99热这里只有免费精品| 成人精品在线观看| 伊人五月天久久| 色五月婷婷成人| 丁香婷婷色五月| 狠狠爱五月婷婷| 国产日日操夜夜操的肉棒视频| 五月婷婷另类| 色播五月综合网| 亞洲自怕| 天天干天天干天天干| 成人短视频在线| 丁香五月婷中字幕| 夜夜天天久久婷婷| 婷婷午夜精品久久久| 墨西哥毛片内射精| 99爱视频| 99热碰碰| www,天天干| 色五月色综合| 六月婷伊人| 色色色婷婷五月| 影音先锋91男人资源在线播放| 极品人妻VIDEOSSS人妻| 婷婷丁香午夜综合影视| 99啪| 九月色婷婷综合| 超碰在线免费观看3 9| 激情AV| 久热超碰| 久99热| 亚欧州精品视频| 色五月五月天色婷婷色五月| 婷婷伊人久久综合| www开心激情网| 欧美天天综合网站上去吧| 就要去操亚洲成人精品五月天丁香婷婷| 狠狠爱丁香婷| 国产亚洲99久久精品| 99欧美| 99视频久久| 色女人久久| 丁香五月婷婷网| 激情五月婷| 九九这里都是精品| 直接看的AV| 另类激情五月天| 五月婷婷福利| 美英法精品无码免费视频| 5月婷婷六月丁香| 狠狠夜夜五月丁香| 五月丁了香蕉综合| 丁香六月婷婷综合激情欧美| 婷婷丁香五月亚洲欧美| 在线成人网站| 婷色人人狠| 97色色色色| 99热6这里只有精品6| 日本本土色网第一区| 操操操www.com| 色五月婷婷天天干| 激情综合网络插| 99r久久这里只有精品| 天天拍夜夜撸| henhencao国产在线| 婷婷五月天777| 激情小说五月天中文字幕| 六月丁香综合网| 亚洲精品久久久久久久久久吃药| 精品国产va久久久| 色视频五月天| 99在线视频播放| 少妇搡BBBB搡BBB搡毛茸茸 | 五月婷婷丁香综合| 色99网| www久久久| 久草热8精品视频在线观看 | 天天做综合| 婷婷五月天影视网址| 这里只有精品在线免费视频| 久久视频这里99| 欧洲亚洲午夜| 激情网五月天| 激情综合区| 日本超碰在线| 亚洲操逼网| 激情婷婷六月天| 色99在线| 美女五月天| 国产偷人爽久久久久久老妇APP | 99热久久最新地址| 激情五婷网| 亚洲网站999| 人人摸人人搞| 国产婷婷色综合AV蜜臀AV | 99热在线极品极品| 九九99在线视频| 乱精品一区字幕二区| 婷婷丁香六月| 好叼操在线观看| 98色丁香五月婷婷综合网| 婷婷五月天激情综合| 男女99免费视频| 爱草视频在线观看| 人人操AV| 亚洲精品视频在线播放| 操操综合网婷婷| 97久久超级| 色碰碰视频| 人人爽人人爽人人爽人人爽| 国产激情婷婷| 99热综合网| 激情文学 综合 九月| 婷婷激情综合网| 狠狠狠狠狠草| 色婷另类| 中文字幕日产A片在线看| 国产精品24r| 黄色三级日本| 丁香五月激情视频| 国产精品久久..4399| 两性婷婷丁香五月| 丁香色综合| 久热这里只有精品99re,久热这里只有精品7| 日韩爱操视频| 大香蕉520| 99视频热99| 久久欧洲久久| 五月丁香中文字幕| 六月天婷婷| 欧美日韩婷婷五月天| 亚洲欧美综合7777色婷婷| 婷婷六月视频| 在线观看免费狠狠色丁香香综合| 日日躁夜夜躁狠狠久久AV| 伊人色五月| 2025天天爽天天摸| 六月丁香婷婷综合狠狠爱夜夜爱| 婷婷五月天淫荡| 一级A片天天操夜夜操| 另类 在线| 色情五月天se| 天天爱天天操| 国产精产国品一二三在观看| 9精品在线| 婷婷丁香五月天在线| 9l视频自拍9l九色成人| WWW久| 99re这里有精品手机在线| 色婷婷av在线观看| 久久久色情| 思思久久96热在精品国产,| 婷婷丁香亚洲色综合91| 色婷婷丁香女女| 天天综合网、天天综合色| 99热6精品| 国产精品久久久久久久久久久久| 色综合色五月| 婷婷四色五月| 人妻中文在线| 99啪啪视频| 欧美中文五月天| 亚洲av电影网站| 五月婷婷色情| AV成人在线播放| www.夜夜爱.com| 婷婷丁香水多多视频| 人妻人人操| 狠狠色噜噜狠狠狠888| 五月天社区婷婷| 国产精品色色666| 五月丁香六月在线| 丁香婷婷五月综合影院| 日本成人噜噜噜| 99在线观看精品视频| 日本在线视频www色| 色婷婷先锋| 99re青青草| 五月天精品视频| 亚洲五月六月婷婷| 色播丁香五月婷婷操:屄| 五月天成人综合| 99人妻碰碰碰久久久久| 五月花综合视频| 91丨九色丨国产| 婷婷五月天六月| 日韩在线看AV| 九九一综合精品| 久久综合九色综合97婷婷| 思思99精品视频在线观看| 97香蕉久久超级碰碰高清版| 吾爱AV导航| 久久久久人妻精品| 久人人操| 丁香五月婷婷色情综合| 97人人干。| 五月天天爽| 大香人妻| 五月丁六月香| 九九色天堂| 五月天六月色| 九色PORNY在线精品酒店| 99热思思| 日本久久人| 久操人妻| 九九热色视频| 久久激情网| 日韩AAA| 五月婷婷视频| 天天日日爽| 久久五月情| 51国精产品自偷自偷综合| 日本乱论99| 久99久精品视频| 中文字幕黄色片| 五月色婷婷综合| 色六月天天激情综合网| 中文字幕1区2区。| 五月天无码视屏播放| 91夫妻视频| 91午夜激情| 色婷婷精| 色婷婷六月天| 99热这里都是精品| 五月色网| 秋霞电影理论| www...com黄在线观看| 99爱视频免费| 97色97干| www久| 天天狠狠色综合| 999九九九久久久99HD| 五月天综合久久| 丁香五月成人论坛| 这里只有精品视频在线| 开心五月色婷| 牛牛色av| 日本色色网站| 99热丁香五月| 日本色婷婷| 亚洲色无码| 先锋资源91| 欧美在线视频99| 婷婷99狠狠躁| 99热在线观看精品| 色婷婷五月天| 亚洲免费婷婷| 亚洲中文字幕AV| 亚洲午夜成人av电影网| 欧美激情综合五月色丁香| 久热综合| 91无码色色| 欧美五月婷婷| 国产99美少妇| 草榴视频黄色网| 激情综合九月| 国产精品色一哟哟| 久热9| 日日操夜夜撸| 色综合xx| 色综合偷拍| 色婷婷综合网|