色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

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)方案可對中文文本中的人名、地名、組織機(jī)構(gòu)等實體進(jìn)行端到端識別包含完整源碼、項目說明、預(yù)訓(xùn)練模型與標(biāo)注數(shù)據(jù)適合計算機(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)練與測試項目說明詳細(xì)且經(jīng)測試運行成功既適合小白逐步練習(xí)也可作為課設(shè)、畢設(shè)或初期項目立項演示能幫助深入理解NER中序列標(biāo)注、特征融合與解碼的完整流程。1. 一個zip里裝著的成熟技術(shù)棧BERTBiLSTMCRF 到底是做什么的看到“基于BERTBILSTMCRF進(jìn)行中文命名實體識別python源碼項目說明模型數(shù)據(jù).zip”這個打包名字懂行的人會先松一口氣這不是什么玩具 demo而是目前中文命名實體識別NER領(lǐng)域最經(jīng)典、最不容易翻車的三層結(jié)構(gòu)。BERT負(fù)責(zé)把每個字的語義編碼成向量BiLSTM在整句話里再做一輪上下文精修CRF在最后給標(biāo)簽序列套上合規(guī)約束。三者的關(guān)系有點像“閱讀理解 上下文潤色 校對排版”。這套技術(shù)棧能解決的具體問題很直接從一段中文文本里自動抽出人名、地名、機(jī)構(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)配。但它的天花板在于輸入特征如果還是用隨機(jī)初始化的字向量模型對語義的理解非常淺碰到“蘋果發(fā)布新手機(jī)”這種句子它很難把“蘋果”歸到ORG還是MISC因為沒有足夠的預(yù)訓(xùn)練知識告訴它“蘋果”在科技新聞里指公司。在實際項目中我見過不少團(tuán)隊把這三層拆開做對比實驗。結(jié)論很一致BERT單層F1大約在82-86BiLSTMCRF單跑大概在75-80三層疊加能上到90左右。差異來源主要就是“語義理解”和“標(biāo)簽序列約束”這兩個能力缺一不可。另外BERT內(nèi)部其實包含12層Transformer已經(jīng)具備很強(qiáng)的特征提取能力所以疊加的BiLSTM通??梢宰龅脺\一些單層即可作用是對BERT輸出做一次序列級別的平滑聚合而不是重新提取特征。2.3 CRF的轉(zhuǎn)移矩陣沒有它標(biāo)簽會亂跳CRF條件隨機(jī)場在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)移概率極低所以會把“京”強(qiáng)行糾正為I-LOC。注意CRF不是用來提升實體識別概率的它是用來壓制不合法序列的。訓(xùn)練過程中你是否正確實現(xiàn)了“損失 真實路徑分?jǐn)?shù) - log(所有路徑分?jǐn)?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之前先確認(rèn)機(jī)器上已經(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負(fù)責(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加進(jìn)去否則代碼里from_pretrained會重新走默認(rèn)源卡在下載。判斷預(yù)訓(xùn)練模型有沒有下載成功看緩存目錄即可。Windows默認(rèn)在C:\Users\你的用戶名\.cache\huggingface\Linux在~/.cache/huggingface/。看到模型文件完整躺在那里后面訓(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這樣在計算交叉熵?fù)p失的時候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)練集、驗證集和測試集。劃分的時候要按句子為單位隨機(jī)打亂不能按字符打亂否則會造成同一句子的標(biāo)簽泄漏到不同集合里評估結(jié)果會虛高。4. 訓(xùn)練參數(shù)這樣調(diào)batch size、max_len 與學(xué)習(xí)率的三方權(quán)衡4.1 一套默認(rèn)能跑的參數(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計算時取負(fù)對數(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下游隨機(jī)初始化的層需要用更大的學(xué)習(xí)率max_len128超過128的真實句子占少數(shù)長了切掉短了補(bǔ)齊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這些隨機(jī)初始化的層用1e-3這兩組參數(shù)放進(jìn)同一個優(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分母是所有可能路徑的分?jǐn)?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)注意這里有兩個細(xì)節(jié)一是all_true和all_pred里存的是每句話的標(biāo)簽序列不是單個樣本的平鋪數(shù)組因為seqeval要求對每個句子分別計算實體匹配二是跑模型前先model.eval()再包torch.no_grad()否則顯存會被推理時保存的梯度撐爆。如果你希望訓(xùn)練中途自動存最好的模型可以維護(hù)一個best_f1變量每輪結(jié)束后對比一次超過就torch.save(model.state_dict(), best_model.bin)??窟@個機(jī)制我?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才勉強(qiáng)跑起來速度又慢得讓人想放棄。原因BERT本身占用不小尤其是max_len設(shè)成512時attention矩陣是平方級增長。8G顯存下batch_size16、max_len512幾乎是必爆配置。另外還有兩個隱形兇手一是paddingmax_length把短句也全補(bǔ)齊到128長度浪費大量顯存二是訓(xùn)練時沒有設(shè)置torch.cuda.empty_cache()碎片累積偶爾也會頂爆顯存。解決把max_len降到128batch_size先設(shè)8短句padding策略臨時改成paddingTrue讓每個batch內(nèi)部對齊不全局補(bǔ)齊。如果想提速可以嘗試在模型里用gradient_accumulation_steps2相當(dāng)于batch_size16但顯存占用只有8。注意梯度累積時loss要除以累積步數(shù)再回傳。5.3 預(yù)訓(xùn)練模型下載失敗每次跑到一半就卡住現(xiàn)象第一次運行BertModel.from_pretrained(bert-base-chinese)進(jìn)度條走到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)簽如果按句子隨機(jī)劃分?jǐn)?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)練到推理把模型接進(jì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)象最簡單的補(bǔ)救是提高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
返回資訊列表
超碰国产情侣自拍网| 国产一级内射无挡观看| 肉嘟嘟www视频在线观看高清| 久草久热| 日韩欧美性爱电影在线观看| 色五月激情网| 久久激情视频| 日欧操屄视频| 亚洲另类春色| 吻戏激情性巴克| 98超碰欧美| 嫖老熟女A片一二三区| 日韩一999精品| 精品无码久久久久久久杏吧| 大香蕉伊利av| 三男一女不戴套的A片| 99热久| 加勒比综合a∨| 欧美东京热精品A∨| 熟妇艹鸡八| 插插综合网天天影视网| 老熟妇一区二区三区…| 亚洲欧洲日本精品中文a∨| 免费视频在线观看啊啊啊啊啊| 亚洲伊人成综合成人网| 欧美亚洲综合色| 人妻娇喘 激情视频| 日韩三级一区| 日韩视频中文字幕| 超硑97精品| 国产美女裸体秘 永久无遮挡| 乱码熟妇人妻久久久| 夜夜操美女| 久久久久久久国产| 日韩不卡毛片Av免费高清| 久男人久久| 蜜乳AV一区| 精品女同一区| 淫淫总合网| 日本中文熟女视频| 国产91专区| 五月天婷婷色| 日本精品无码三级网站| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 国产乱伦一二三区| 欧美色图 色综合图| 青青草视频在线观看一区二区| 日韩在线地址一| 天堂涩涩| ss久久| 无码最新| 日本加勒比无码专区| 亚洲男人的天堂一区二区| 极品内射| 97人人超| 美日韩成人| 亚洲视频中文一区| 蜜臀av网址| 偷拍网站久久男女男| 99精品视频在线观看免费| 亚洲情色 自拍| 国产一区二区三区中文字幕| 国产欧美精选激情视频| 一级AV性爱| 97ai亚洲| 欧美色日本| 一级免费啪啪片| 91精品久久久| 日韩三级伊人| 97国产精选| 午夜福利区| 思思热在线视频精品| 性色av大全| 黑人粗大V S日韩女优视频| 人妻加勒比东京热| 中文字幕成人| 日韩免费看黄片| 秋霞Av理论一级在线| 五十路熟女,国产欧美精品区一区二区三区| 天天添天天干电影| 操逼日韩无码 | 久久久久久9| 亚洲熟妇白浆无码AV| 精品视频在线观看| 青青草原成人| 97精品97久久| 亚洲丨在线| 99re在线视频这里只有精品| 色综和网| 婷婷色香| 美女诱惑在线一区| 青青草好吊| 超碰98综合网| 好看的久久不射无码影视影院| 日韩伦理视频| 婷婷伊人一区| www.91欧美| 91九久| 国内毛片无码一级毛片| 91亚州日韩高清| 99热只有| 亚洲国产精品乱码在线观看| 伊人AAA| 一区二区三区精品视频| 五月色综合| 久操操| 97人人射| 亚洲人妻一区二区三区| 亚洲最大的黄色电影网站。 | 高清无码在线播放网站| 成人性爱视频在线看| 嫩呦国产一区二区三区AV| 亚洲不卡三级手机播放| a片在线播放| 亚洲 se图 欧美电影| 黄色网址久久精品欧美喷水| 激情一区二区三区在线观看| 极品丝袜无码| 欧美亚洲高清不卡| 亚欧美色图| 欧美性色欧美| 91老熟女视频| 亚洲激情综合另类男同| 啪啪资源网| 国产区91柔拿会所技师| 91呆哥人妻| 精品少妇一区二区三区在线视频| 91婷婷| 青青草视频这里只有精品| 久久久久久久久久久六六| 色爽爽文学| 亚洲影院小综合| 久久久久9999精品九九九| 久久综合久色欧美综合狠狠 | 精彩久久中文| 亚洲欧美另类图片| 国产野战露脸在线播放| 殴美大黄片| 日操粉逼逼| 婷婷五月天激情四射| 国产无遮挡| 精品无码人妻一区二区免费蜜桃| 骚日日av| 欧美日韩啪啪电影| 秋霞曰韩R级| 熟妇熟女一区二区三区| 亚洲成人精品在线一区| 色色99| 麻豆福利视频导航| 99久草| 国产日韩无码一区二区三区久久区| 国产操伦| 黄色乱论网站| 91蜜桃传媒精品久久久一区二区| 无码精品久久久久久亚洲| 看大黄色大片原件| 2025亚洲男人天堂| 好爽视频在线观看| 强奸乱伦动态污图免费| 蜜桃臀 后入 一区 二区 三区 在线| 四虎国产成人精品免费一女五男| 就去色综合| 天天夜躁日日躁狠狠2002| 熟妇操花| 亚州久久9| 欧美性夜| 天天躁日日躁XXXXYY| 97久久精品国产| 美女91网| 91色色色| 91AV天美在线视频| 天天操人人操狠狠插| 天天日天天舔天天喷天天射| 91艹| 嫩草在线视频| 欧美专利1区2区3区4区5区免费| 欧亚成人在线视频| 翔田千里AⅤHD无码| 亚洲三级。日韩三级| 国产精品亚洲天堂网址| 有码免费观看| 97视频免费播放| 欧美日韩一区二区三区四区蜜桃| 大香蕉综合久久| 激情文学88| 欧美亚洲中文字幕| 男人成人黄色视频在线观看免费下载| 日韩操逼性鲍| 色女综合| 亚洲人成网站7777| 干B视频伊人网| 久久99国产精品| 92人人操人人| 欧洲大香蕉| 岛国视频一二三区| 职场同事知名国产国产精品久久欧美日韩 | 99精品无码| 色呦呦呦在线观看视频| 情色五月天就去干| 亚洲色图殴美色图激情乱伦| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 高清无码人妻久久久一区二区三区aⅴ| 亚洲超碰在线| 久久久999| 亚洲综合小说另类图欧美视频激情小说色五月天 | 麻豆区99999| 日本媚薬中文字幕在线| 亚洲综合激情五月久久| 91视频综合网| 啊啊啊啊啊好大好舒服想要| av网站在线观看了| 久久九九热| 亚洲福利中文字幕在线| 欧美性爱超碰97| 超碰在线99| 男人的天堂2018| 日韩女优在线| 中文字幕乱码人妻二区三区| 日韩精品人妻中文字有码在线| 欧洲欧美视频一区二区| 蜜桃臀一区二区aV| 夜夜爽77777| 97超碰人人模人人拍人人| 亚洲AO在线| 中日亚韩免费视频| 久久粉色| 你草精品在线视频| 尤物一级在线免费观看| 亚洲爽图| 蜜臀无码一区二区| 91色艳| 97在线精品观看视频| 97AV在线免费观看| 99在线精品观看99| 操操逼视频| 超碰无码五月97| 亚洲黄色影视| 国产欧美日韩一区二区三区| 99999久久精| 高清不卡国产| 人妻-91porn| 97超碰9| 亚洲色图 欧美热图 清纯唯美 另类自拍| 一本色道综合久久欧美| 91美| 屁股久久久久久久久| A久久| 国产JDAV无码视频在线观看| 国产精品另类一区大香蕉| 小草精彩毛片| 操狠狠| 黄色区免费观看中文字幕| 欧美亚洲手机在线| 91欧美巨乳| 亚州操操穴网| 99热这里只有精| 福利操逼| 国产肏逼网站| 老司机香蕉久久久久| 97干天天| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 综合久久中文字幕综合日韩精品| 午夜乱轮操逼视频免费看| 久久久久久无码人妻中文字幕| 色综合美国| 国产一区二区av综合| 国产精品人妻无码久久久互動交流 | 狠狠 91| 久久精品国产亚洲AV无码电影| 久久αⅴ| 国产精品另类| 亚洲有薄码区久久在线一区| 精品一区二区三区四区女| 亚洲激情网一二三四区| 色欲日韩欧美在线一区| 夜夜操青青草| 日逼视频日本| 国产最火爆久久国产网站网站| 97亚洲自在精品在线观看| 久久熟女久| 无码heyzo高清一区| 久久亚洲精品成人av| 韩国一级AAA| 精品国产av一区二区三区四区入口| 农村少妇久久久久久久| 国产天天噜一噜久久久| 久久久久久中文| 高清不卡 中文 人妻| 久久九精品| 熟女欧美日韩综合婷婷| 97色色,97综合| 熟妇视频一区二区三区在线观看| 九九视品黄色| 乱码熟妇人妻久久久| 91丝袜美女| 日韩内射视频| 亚洲色图国产另类| 天天操人人操骚逼网站| 久久精品99久久久久久| 午夜福利在线合集| 青青草五月份天| 欧美肥臀在线| 亚洲久久久| 91内射| 亚洲 暴爽 AV人人爽日日碰| 日韩肏逼视频| 操逼免费视频无码国产| 玖玖蜜臀资源网| 97无码视频在线播放| 亚洲色狠| 家庭乱伦麻豆| 久久东京伊人一本到鬼色| a一区二区三区乱码在线| 日韩精品色呦呦| 日韩欧美成人午夜福利| 欧美人妻久久精品二区三区| 99热只有这里有精品| 六月激情婷婷| 熟女丰满人妻一区| 爱啪精品一区| 五月天婷婷社区| 欧美色图 色综合图| 东京热一区二区中文字幕| 欧美第一页性| 日韩av色图综合| 欧美精品三区| 久草综合网| 蜜臀久久99精品久久久电影| 国内毛片无遮挡国产| 老司机老司机午夜影院| 五月激情在线| 精久久久91| 日本免费一区二区不卡| 一区二区三区视频| 国产乱码精品一区二区三区四川| 五月婷婷深深爱| 91精品成人| 久超碰这里只有精品| 超碰在线91| 中文人妻av高清一区| 精品黑人一区二区| 天天综合有色网| 亚洲日韩黑丝| 眼镜人妻101.com| 中文字幕 国产区| 宅男91视频在线播放| 欧美日韩美女精品久草一区二区三区| 俞拍久久国应视频| 亚洲色色探花| 国内精品不卡无毒99999| 精品美女久久一二三| 中国和日本人色哪个不下载能放| 波多野结衣被操50分钟免费视频| 亚洲国男人的天堂| 91网站在线播放| 91色色网站| 亚洲最大AV网| 97超碰超欧美。| 97碰| www久| 国产av美女被艹的乱叫| 激情综合av| 91东北熟女| a级理论午夜日本| 欧美熟女妇同| 久久久新亚洲AV| aⅴ日韩成人电影av在线免费看av大全| 91N五十路| 久久老熟女| 全球成人中文在线| 久久久免费懂色| 国产精品成久久久久午夜午夜| 久草大| 久草草一二三四区久久| 乱伦熟女论坛| 爆乳免费黄网站| 日本精品高清一二区一本到| 国产精品夜夜夜| 青青草原香蕉日本Ap| 草草草视频在线免费看| 这里只有精品久久| 欧美人妻制服| 97色伦欧美| 久久久久久久久9| 天天干天天狼在线视频| 内射卯月麻衣| 欧美人妻精品一区二区| 伊人亚洲综合| 日本人妻天堂网站在线播放| 人人操人人干xxx| 中文字幕一区 二区三四五 区日 日骚| 香蕉大久久久| 亚洲一区二区三区四区视频| 黄色十八禁| 亚洲天堂人妻熟妇视频| 在线小视频| 国产综合网站在线播放 | 婷婷五月av| 久久久一区二区三区麻豆| 最近的最新的中文字幕视频| 国产在线激情| 亚洲色图超碰在线| 日韩国产精品人妻无码久久久| 无码免费一区二区三区啪啪| 久久春色| 青娱乐福利99| 人人乐大香蕉| 国产精品久久久久久久久久久久| 人妻天堂综合网| 综合网 欧美| 伊色综合天堂色97| 粉嫩av平台| caopeng97人妻| 久久社区一区二区三区| 97超级色碰碰| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 91操人| 色原狠狠天天天| 婷婷五月天在线观看| 五月色综合| 亚洲欧美黄| 自拍偷拍草一草| 亚洲综合在线视频| yw尤物av无码点击进入麻豆| 日日干男人的天堂| 日本熟女中文| 无码久久国产| 欧美爱国产综合、| 久久精彩视频9| 亚洲第一免费视频| 男女啊啊啊| xxx亚洲午夜天堂| 亚洲国产精品有声| 97精品网| 综合性视频99| 成人日韩中文字幕| 色情五月丁香| 蜜乳Av成人片网站| 亚洲牲交| 色天天野狼综合社区| 色噜噜人妻av 中文字幕| 婷婷午夜成人色中色| 狠狠爱夜夜| AV在线资源| 久久丁香五月天| 欧美性爱免费短视频| 99久在线精品99re8蜜桃| 西西美女视频网| 五月丁香久久| 最新国产亚洲精品精品国产亚洲综合| 少妇厨房愉情理伦片bd在线观看 | 久久婷婷伊人| 人摸人人操人| 在线综合 亚洲 欧美中文字幕| 中文字幕AV中出| 丰满精品人妻少妇久久字幕| 色九九九| 青青草日本无码| 亚洲最大网站av| 色操逼网| 岛国在线国产| 亚洲精品一二三四区| 美女黄频a美女大全免费皮| 麻豆国产97在线| 久久久999国产精品| 色天堂在线观看| 高树玛利亚无码流出| 色色色网站| 中日高清无码操逼视频| 亚洲欧洲精品视频发布| 亚欧免费| 国产亚洲日韩欧| 狠狠干91| 日本不卡一区二区| 欧美天天综合网| 加勒比99999| 精品人妻一区二区蜜桃视频| 五月天人妻综合| 亚洲欧美综合网站| 色偷偷男人的天堂麻豆| 夜夜夜夜爽| 欧美天堂亚洲电影院一区在线播放| 亚洲色图欧美色图制服丝袜| 国产精品久久久视频| 欧美黄页在线| 丝袜内射| 六月丁操逼| 第45页一区二区| 日本中文字幕高跟| 欧美性暴力猛交XXXX | av天堂影视中文在字幕在线中文| 国产伦精品一区二区三区在线观| 成人国产精品三级A片| 乱伦av麻豆| 日韩丰满熟妇| 日本精品不卡一二三区| 国产精品亚洲免费| 五月丁香综合网| 久久精精区一区二区一蜜桃一区二区| 天天添天天干电影| 日韩一级二级在线| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 国产综合网站在线播放 | 精品人妻一区二区视频| 天天色播亚洲综合网站| 五月丁香色综合| 久久国产精品91| AV中文在线| 欧美午夜一区二区三区| 国产成人精品日本亚洲语言| 九月色婷婷| 亚洲乱妇p22| 人妻天堂综合网| 打av高清| 超碰97导航| 怡红院成人视频| 欧美激情久操网| 天天懆天天日| www99热| 国产在线不卡导航| 熟妇国产免费一区| 久久久久久久| 亚洲精品国产专区在线观看| 岛国片在线观看视频亚洲| 免费夜夜爱黄色视频毛片| 操香逼| 欧洲一区二区| 74成人在线| 高清在线偷拍自拍视频| 色鬼在线综合| 91蜜臀人妻中文字幕在线| 欧美综合网| 无色无码| 中文字幕55555| 蜜臀va69| 97精品熟女少妇一区| 啊啊啊好爽快点啊啊啊嗯嗯| 91熟女.com| 日本一级真人黄色性爱视频| 超碰到97情色| 成人免费性爱视视| 91|九色|国产熟女| 97bbn| 天天肏视频| 男人a天堂手机在线版| 五月丁香啪啪| 丰满搜索结果 -第18页- 久久高清无码 | 午夜毛片高清免费不卡| 91丝袜视频在线观看| 亚洲三区视频| 啪啪91| 精品人妻少妇| 美女极品一区二区三区| 日韩99神马视频播放| 欧美日韩国产中文精品字幕自在自线| 日本在线不卡123| 91天天c| 青娱乐福利99| 五月婷婷激情网| 欧美日本不卡| 亚洲伊人a线观看视频| 日本超碰在线国产一区| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 强奸抽插av| 亚洲成人在线播放| 黄色高清久久无码依人| 加勒比综合88| 国产操操日韩三级黄| 97硬碰| 伊人麻豆传媒| 人妻啊啊人妻啊| 久草毛片| 中国东北熟女老太婆内谢| 五月天久久婷婷亚洲| 久久久999| 亚洲人成色9999精品久久| 狠狠爱夜夜干| 99久久精品无码一区二区| 日日干夜夜操视频h| 97在线观看| 欧美日韩国产中文超碰| 婷婷色五月激情| 96久久久| 偷拍 精品另类 凸凹了四区| 日本免费二区三区| 欧美视频在线视频免费va| 亚洲日韩XXX| 日日操丁香五月天| 亚洲宗合网| 综合五月婷婷亚洲一区| 日韩精品影视| 无码抄逼网| 亚洲天堂另类| 青青草日韩无码| 精品免费成人久久| 欧美中出1| 黄久久| 人妻少妇色综合| 人妻少妇精品久久久久久| 亚洲中文字幕97久久精品少妇| 91精品操美女| 亚洲综合激情五月久久| 看全色黄大色大片免费视频| 九色 人妻 大香蕉| 久热在线精品免费观看| 免费成人在线熟妇网| 大香蕉久| 少妇淫妇久久久久久久| 亚洲91av| 性爱免费视频成人| 国产外初女出血视频| 性色av蜜臀av色欲aV| 国产深喉| 91劲爆| 一级黄色视频网| 九色 蝌蚪 熟女自| 丁香六月激情| 无码丰满熟妇一区二区浪潮AV| 欧美青青视频| 黄污污污污| 日韩精品在线放| 四虎在线播放| 碰碰在线视频| 久久精品国产亚洲AV高清演员表| 91超碰丝袜制服| 中文字暮97| av网站免费线看| 91精品少妇搡搡搡| 女人的久久久| 国产69精品久久久久99尤物| 97久操| 国产亚洲色婷婷久久99精品91葵花宝典 | 丰满人妻一区二区三区| 夜精品久无码| 久久综合五月天| 草草影院日本第一页| 美女91网址| 天天综合网久久ww| 97人人操人人干| 翔田千里Av在线| 粉嫩av一区二区三区天美传媒 | 激情综合亚洲| 极品欧美一区二区三区| 成人开心网在线视频| 99爱久久视频频| 午夜寂寞欧美| 97高清啪啪| 日本精品高清一二区一本到| www久久国产精品| 老司机福利社视频在线观看| 国产丰满少妇久久久精品影院| 精品女人999| 亚洲一卡2卡3卡4卡乱码网站 | 草草电影院| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 91天射| 日本少妇va7777| 五月天婷婷综合网| 超碰成人最新最好看| .精品人妻一区二区三| 亚洲中文sv| 午夜精品久久久99热蜜桃的功能特点| 人妻精品综合中文字幕在线| 久久人妻视频| 亚洲AV无码国产精品久久久久| 日产欧美电影一区二区三区| 久久精品熟妇丰满人妻99| av日韩中文字幕| 在线小说视频一区| ai欧美亚洲小说| 99re只有精品| 久久伊人网视频一区二区三区| 911粉嫩人妻| 超碰成人公开| 精品成人无码| 秋霞一级A片黄色视频| 亚洲色婷婷久久91| 成人国产视频在线观看| …亚洲黄色厕厕女女在线播…| 久久欧美激情| 深喉吞精| 亚洲日韩狠狠撸视频| 草B在线| 九草九九九| 国产suv精品一区二六| 超碰久久网| 久久久9 9 9精品| 亚洲天天影视色综合| 亚欧美综合网。| 在线黄色污污网站| 超碰这里只有精品| 日本黄色XXX| 久久人妻无码毛片A片麻豆| 曰韩少妇无码| 97在线欧| 国产97在线 | 亚洲| 78超碰| 人伦四五区| 久久久精品久久| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 五月黑AⅤ| 九九毛片这里只有精品| 麻豆黄色五月天| 九热大香蕉| 很很很很操| 欧美综合传媒| 欧美高清色| 女性喷水高潮在线观看| 亚洲图片婷婷五月天| 国产亚洲精品激情| 人妻精品视频一区二区| 日日夜夜干| 韩国三级三级BD在线| 国产精品不卡一区二区三区| 国产91丝袜 在线播放| 国产精品自拍视频| se01国产在线视频| 无码在线亚洲| 志村玲子视频一区二区| 欧美一二在线| 久久久久婷婷精品av电影| 69一区二区三区 | 99视频自拍区| 丁香五六月啪啪| 高清国产成人无码| 人妻大香蕉| 无码一区免费在线不卡| 精品人妻1区| 色乱二区| 午夜久久一区二区无码中出 | 91肉片| 911av网站免费观看| 亚洲久热| 精品96久久| 老熟女网站| 看大黄色大片原件| 欧美色偷拍 | 天美传媒国产原创中文字幕亚洲欧美另类 | av 模特一区了| 女优大全 - 91n| 操日韩第| 丁香激情五月天| 亚洲性少妇| 男人的天堂va在线| 日韩av在线播放不卡| 色av中文字| 日日干日日操五月天伦理视频| 久久久久久免费电影| 91成人18| 婷婷激情五月| 丝袜亚洲91| 亚洲天堂在线怕怕视频| 操逼操操操91| 午夜毛片高清免费不卡| 蜜臀视频网站| 激情色播| 亚洲鸥美色图| 波多野结衣一级视频| 亚洲天堂男人在线| 中国91AV| 国产亚洲一黄| 97超碰欧美精品| 久久直播国产| 中文字幕日韩人妻视频一区二区三区交换夫妻| 欧美 日韩第一性色| 精品国产无码中文| 欧美人妻二区三区| 天天干夜夜操一区二区| 操逼片中文| 上床不卡网站| 免费久久一级毛片大黄| 超碰三级秋霞| 国产精品99999| 99综合免费视频| 激情综合 婷婷五月 红杏 | 狠狠爱夜夜| 志村玲子视频一区二区| 91热色| 性爱网站一区二区| 亚洲蜜臀懂色| 欧美成熟性爱精品| 青青操少妇| 国产精品福利资源在线尤物| 91暧暧| 精品欧美老熟女一二区| 91丝袜美女| a级免费在线观看| 爱欲AV| 久久草草亚洲蜜桃臀| 黄总AV色图| 欧美自拍偷拍综合图片| 久草在| 久久男人精品| 91亚洲丝袜| 一级久久久久久久久久久| 欧洲站一级二级三级h| 成人免费福利在线观看| 亚洲丝袜二区在线| 一块操欧美| 97综合在线| 91蜜臀在线久久久久| 日本爽爽爽爽爽爽免费视频| 亚熟在线| 岛国片国产成人亚洲播放| 中文一区在线日| 激情看片网站| 欧美劲爆第一页| 欧美性战999| 欧美一二三级精品在线| 美女91色黄18| 伊人婷婷五月天| 久久精品国产亚洲5555| 操B久久| 日韩欧美字幕亚洲一区二区| 夜夜久久久| 嗯嗯啊啊操死我| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 久久有码视频| 九九玖玖精品| 蜜臀久久99精品久久久久久-DVD原版全| 麻豆AV一区二区| 色噜噜精品一区二区三| 国产精品网址| 亚洲精品骚逼| 九九aV| 少妇二级| 欧美色图 色综合图| 高潮嗯啊性感美女久久久| 亚洲人妻在线一区| 91麻豆天美传媒在线| 人妻日日夜夜精品| 人妻乱仑一区二区三区| 97超碰超| 偷拍2020| 播播亚洲小说亚洲| 欧美极品美女aaaaaa级黄片| 欧美高清在线| 精品国产乱码久久久久久影片| 一区二区三区探花在线观看| 亚洲欧美国产精品久久久久久久| av在线人气| 蜜臀AV网站| 91一区二区三区蜜桃| 人人操人人精品影片| 日韩av三四区| 欧美黄片视频在线观看免费| 成人av在线播放| 欲香欲色综合天天伊人| 日日做夜狠狠爱欧美黑人| 爱射综合| 无码精品一区二区三区潘金莲| 亚州性色| 国内外毛片在线观看| 欧美激情超碰777| 狠狠爱综合| 成人麻豆av电影网站| 亚洲毛片基地专区| 天堂在线一区二区| 五月婷婷影院| 丁香九月激情啪| 亚洲精品尤物yw在线影院| 亚洲有码视频二区| 中文字幕一区二区三区蜜桃视频| 国产久久日韩网站导航| 99操逼| 精品人妻美妇91job| 一级二级三级黑人无码| 一级二级在线观看| 抽插一区二区视频| 日本免费一区二区不卡| 欧美97日韩精品| 97视频在线免费看| 麻豆2区1区天美| 国产亚洲精品自在线亚洲情侣| 黄色AAAAA欧美| 日本黄色精品专区网站| 百度百度日本操逼| 成人性生活高清视频在线播放| 亚洲激情欧美色图| 操老熟女AV| 伦理日韩国产久久| 99在线视频播放| 91九九九小逼| 熟女一区二区三区| 97色诱| 麻豆AV短剧| 欧美色图天堂网m| 啪啪91| 日韩在线视频1234| 爱射综合| 激情综合97| 熟妇视频一区二区三区在线观看| 久久久工口| 日本高清电影欧美色图| 狠狠久久四虎| 1024亚洲中文字幕久在线看片你懂的 | 亚洲亚洲亚洲天堂天堂| 久久久精品一区二区| 欧美在线55555| 国产第二页| 欧美天堂亚洲电影院一区在线播放 | 日韩视频中文字幕| 男女啪啪网站免费视频| 蜜臀久久99精品久久久久| 3PAV乱伦视频| 精品人妻久久久久一区二区三区| 熟妇人妻一二三区免费| 91A欧美电影网站| 国产区在线| 日本不卡一区二区| 日本视频在线中文字幕| 国产精品不卡av免费在线观看| 综合av社区| 91香蕉视频在线观看免费| 久久国内| 999在线电影香蕉| 色哟哟国产精品免费网址| 少妇与黑人高潮在线| 五十路熟女工口 | 97中文天堂| 伊人久久大香线综合无码| 一区二区不卡| 综合网少妇| 99999精品| 黄片色区软件| 中文字幕在线免费观看视频| 欧美少妇大量自拍视频在线观看| 亚洲限制级| 啊啊啊轻点在线观看| 久久春色| 尤物视频一区| www99热| 91精品人妻一区二区三区蜜桃臀| a片亚洲一本通视频| 加勒比伊人综合| 夜夜爽夜夜高潮夜夜爽| 成人免费看吃奶视频网站| 色yeye成人免费视频| 日韩精品一二三四| 国产精品女生av| 日韩有码中文字幕女同性恋| 91美女视频电影| 性欧美| 99在线精品观看视频中文| 少妇高潮九九九九九九九| 欧美精品庄| 国产91亚洲精品一区二区三区| 五月丁香婷婷综合网| 超碰成人免费| 337p大胆噜噜噜噜噜91Av| 嗯嗯啊中文字幕| 秋霞成人一级在线观看| 最新精品久久蜜桃| 久久九九国产精品| yellow网站免费观看日韩高清无码| 国产久久久久久| 日韩无码久久熟女一级片| 97精品视频免费| 性爱AV天堂| 97视频播放| 屁股久久久久久| 欧美精品一区二区少妇免费A片| 超碰人人超在线观看| 亚洲,欧美,春色,另类| 很黄很污的免费网站| 亚洲资源吧| 欧美亚洲天天| 国产一级作爱毛片| 99热精品青草在线| 中文字幕三四五区| 午夜无码精品免费看性色| 麻豆乱码久久精| 天天做天天爱| 极品色www影院| 中国的操老妇女| 国产日韩精品suv| 水野优香在线观看| 久久亚洲不卡一区二区三区 | 国产偷人伦激情在线观看| 色狠狠色| 欧美三四五区| 嗯啊抽插大香蕉网页| 大香蕉在线视频重口味毛片在线| 亚洲人妻爽爽爽| 91九色精品熟女内射| 青青草导航在线视频| 亚洲图片激情综合另类| 99re69综合| 久久综合九色综合欧洲98| 欧美亚涩| 狠狠91| 97操操| 夫妻日逼| 六月婷婷色综合| 人妻第一页| 亚洲中文字幕噜噜噜久久久| 国产在线激情| 丁香六月婷婷久久综合| 97欧美色| 色色五月婷| 啪啪资源网| 久久m| 97人人操人人摸人人爱| 青女在线| 日本一区二区三区四区免费观看| 亚洲日韩欧美一区二区| 69少妇一区二区| 国产精品一区二区后入| 一类无码操逼视频| 屁股久久久久久久久| 国产一区二区av综合| 曰本精品久久久| 操死我了啊啊啊| 国产精品久久成人免费| 东京男人天堂| 在线99热| 精品国产乱码久久| 91狠狠综合久久久久久| 青草精品视频-日本久久久久网站| 91美女丝袜诱惑视频| 日韩猛交| 熟女色图在线| 男女一进一出视频久久| 97亚洲综合电影| 一区操逼| 亚洲和欧美裸体美女双飞视频| 久久亚洲AV无码专区国产精品| 舔人妻中文免费视频| 操逼日韩无码 | 亚洲最大的黄色电影网站。| 99老司机精品视频在线观看| 亚洲和欧美裸体美女双飞视频| 把腿张开老子CAO烂你| 97视频在线观看免费高清| 欧美一级三级| 午夜福利一区二区影院| 天天干人妻| 桃色五月天| www.久久制服糖| 欧美日本不卡| AV天天在线观看| 无码操逼网| 日韩精品午夜操呦呦不卡影院| 亚熟在线| 人妻人人做人人澡人人爽欧美一区| 精品在线78| 91伊人大香蕉| 午夜福利视频在线一区| 久热一区二区| 色色青青久久| 在线观看一卡二卡| 日韩无码黄色片| 色亚洲欧美| 打av高清| 91操操| 岛国A V在线免费看| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 操一对老熟妇爽上天视频| 熟妇熟女亚洲天堂网| 熟女精品va中文字幕| 亚洲欧美另类激情小说 | 丁香六月天| 八戒无码国产午夜福利| 超碰美女97| 97精品97久久| 久操九九九九| 91超级碰| 国产精品爽爽va在线观看98| 东京热双插| 色天天野狼综合社区| 一区二区三区无卡视频在线观看| 亚洲欧洲综合视频在线| 精品人妻一区二区视频| 免费操逼91| 五十路熟女在线不卡观看一区二区| 亚洲av总站| 狠狠色噜噜狠狠狠狠狠色综合久久| 东北少妇高潮zzzz| 欧美天天综合在线| 日韩噜噜69| 日韩久久超碰色| 91N欧美| www成人啪啪18秘 免费| 国产性爱在线视频一区二区| 国产精品com| 欧美在线亚洲| 熟女熟妇伦久久影院毛片一区二区| 日韩人妻无码精品系列| 久久婷婷五月| 99精品在线播放| 美女被艹尤物视频| 欧美黄色大片在线观看 | 78精品| 亚洲中文sv| 少妇久久久免费| 熟女一区二区三区| 天操老女人| 婷婷另类小说| 丰满少妇人妻久久久久久| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 精品美女久久一二三| 99国产精品人妻人伦| 中亚精品极乱| 啊视频在线| 亚洲欧美中文日韩视频中国语| 蜜乳AV一区二区三区四| 人人贴人人摸| 一级@啪啪视频| 日韩无码三级影院| 91看黄片| 人人操人人操人人人操| 宅男影院久久久,99| 一级做受视频免费是看美女| 无遮挡男女激烈动态图| av毛片aaaaa免费看| 天天综合-91入口| 精品人妻av区天天看片| 97视频在线看| 97超碰香蕉| 欧美日本成人一区二区| av影片在线观看不卡| 精品妇操一区二区三区| 国产一级做a爰大片免费久久| 日韩精品高清资源在线 | 久久中文字幕在线观看| 亚洲少妇视频| 天天综合网网欲色| 老鸭窝成人| 欧美天天干| 亚洲无码国产探花在线观看| 国产无码精品高清| 天天摸夜夜添无码小视频| 国产欧美成人第一页在线观看| 影视综合无码少妇| 亚洲AV无码黄色强奸| 色五月首页| 丰满人妻-区二区三区免费| 不卡九肏| 国产精品久久久久久夜夜夜夜| 绑缚麻绳人妻寝取完整版| 男人的天堂久久狠| 久久东京热成人| 尤物av网站免费在线播放| 超碰精品日韩欧美国产| 亚州操逼图| 伊人久久婷婷| 91ise欧美| 蜜臀色乳| 精品人妻少妇| 久久男人的天堂| 岛国黄| 99亚洲天堂| 人妻在线臀日韩| 伊人96在线| 97干色| 久操视频资源站公开| 色九月| 日本人妻天堂网站在线播放| 精品在线78|