日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

中文命名实体识别NER

發(fā)布時(shí)間:2023/12/14 编程问答 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 中文命名实体识别NER 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

命名實(shí)體識(shí)別(英語(yǔ):Named Entity Recognition),簡(jiǎn)稱(chēng)NER,是指識(shí)別文本中具有特定意義的實(shí)體,主要包括人名、地名、機(jī)構(gòu)名、專(zhuān)有名詞等,以及時(shí)間、數(shù)量、貨幣、比例數(shù)值等文字。目前在NER上表現(xiàn)較好的模型都是基于深度學(xué)習(xí)或者是統(tǒng)計(jì)學(xué)習(xí)的方法的,這些方法共同的特點(diǎn)都是需要大量的數(shù)據(jù)來(lái)進(jìn)行學(xué)習(xí),本文使用的數(shù)據(jù)集是2018ACL論文中新浪財(cái)經(jīng)收集的簡(jiǎn)歷數(shù)據(jù)。

數(shù)據(jù)集鏈接:https://github.com/jiesutd/LatticeLSTM

標(biāo)注集采用BIOES(B表示實(shí)體開(kāi)頭,E表示實(shí)體結(jié)尾,I表示在實(shí)體內(nèi)部,O表示非實(shí)體,S表示單個(gè)實(shí)體),句子之間用一個(gè)空行隔開(kāi)。

對(duì)于命名實(shí)體識(shí)別其他方法舉例

?

?

常用的模型以及涉及到的主要代碼

?1、隱馬爾可夫模型(HMM)

隱馬爾可夫模型描述由一個(gè)隱藏的馬爾科夫鏈隨機(jī)生成不可觀測(cè)的狀態(tài)隨機(jī)序列,再由各個(gè)狀態(tài)生成一個(gè)觀測(cè)而產(chǎn)生觀測(cè)隨機(jī)序列的過(guò)程(李航 統(tǒng)計(jì)學(xué)習(xí)方法)。隱馬爾可夫模型由初始狀態(tài)分布,狀態(tài)轉(zhuǎn)移概率矩陣以及觀測(cè)概率矩陣所確定。上面的定義太過(guò)學(xué)術(shù)看不懂沒(méi)關(guān)系,我們只需要知道,NER本質(zhì)上可以看成是一種序列標(biāo)注問(wèn)題(預(yù)測(cè)每個(gè)字的BIOES標(biāo)記),在使用HMM解決NER這種序列標(biāo)注問(wèn)題的時(shí)候,我們所能觀測(cè)到的是字組成的序列(觀測(cè)序列),觀測(cè)不到的是每個(gè)字對(duì)應(yīng)的標(biāo)注(狀態(tài)序列)。對(duì)應(yīng)的,HMM的三個(gè)要素可以解釋為,初始狀態(tài)分布就是每一個(gè)標(biāo)注作為句子第一個(gè)字的標(biāo)注的概率,狀態(tài)轉(zhuǎn)移概率矩陣就是由某一個(gè)標(biāo)注轉(zhuǎn)移到下一個(gè)標(biāo)注的概率(設(shè)狀態(tài)轉(zhuǎn)移矩陣為??,那么若前一個(gè)詞的標(biāo)注為??,則下一個(gè)詞的標(biāo)注為??的概率為??),觀測(cè)概率矩陣就是指在某個(gè)標(biāo)注下,生成某個(gè)詞的概率。根據(jù)HMM的三個(gè)要素,我們可以定義如下的HMM模型:

class HMM(object):def __init__(self, N, M):"""Args:N: 狀態(tài)數(shù),這里對(duì)應(yīng)存在的標(biāo)注的種類(lèi)M: 觀測(cè)數(shù),這里對(duì)應(yīng)有多少不同的字"""self.N = Nself.M = M# 狀態(tài)轉(zhuǎn)移概率矩陣 A[i][j]表示從i狀態(tài)轉(zhuǎn)移到j(luò)狀態(tài)的概率self.A = torch.zeros(N, N)# 觀測(cè)概率矩陣, B[i][j]表示i狀態(tài)下生成j觀測(cè)的概率self.B = torch.zeros(N, M)# 初始狀態(tài)概率 Pi[i]表示初始時(shí)刻為狀態(tài)i的概率self.Pi = torch.zeros(N)

有了模型定義,接下來(lái)的問(wèn)題就是訓(xùn)練模型了。HMM模型的訓(xùn)練過(guò)程對(duì)應(yīng)隱馬爾可夫模型的學(xué)習(xí)問(wèn)題(李航 統(tǒng)計(jì)學(xué)習(xí)方法),實(shí)際上就是根據(jù)訓(xùn)練數(shù)據(jù)根據(jù)最大似然的方法估計(jì)模型的三個(gè)要素,即上文提到的初始狀態(tài)分布、狀態(tài)轉(zhuǎn)移概率矩陣以及觀測(cè)概率矩陣。舉個(gè)例子幫助理解,在估計(jì)初始狀態(tài)分布的時(shí)候,假如某個(gè)標(biāo)記在數(shù)據(jù)集中作為句子第一個(gè)字的標(biāo)記的次數(shù)為k,句子的總數(shù)為N,那么該標(biāo)記作為句子第一個(gè)字的概率可以近似估計(jì)為k/N,很簡(jiǎn)單對(duì)吧,使用這種方法,我們近似估計(jì)HMM的三個(gè)要素,代碼如下(出現(xiàn)過(guò)的函數(shù)將用省略號(hào)代替):

class HMM(object):def __init__(self, N, M):....def train(self, word_lists, tag_lists, word2id, tag2id):"""HMM的訓(xùn)練,即根據(jù)訓(xùn)練語(yǔ)料對(duì)模型參數(shù)進(jìn)行估計(jì),因?yàn)槲覀冇杏^測(cè)序列以及其對(duì)應(yīng)的狀態(tài)序列,所以我們可以使用極大似然估計(jì)的方法來(lái)估計(jì)隱馬爾可夫模型的參數(shù)參數(shù):word_lists: 列表,其中每個(gè)元素由字組成的列表,如 ['擔(dān)','任','科','員']tag_lists: 列表,其中每個(gè)元素是由對(duì)應(yīng)的標(biāo)注組成的列表,如 ['O','O','B-TITLE', 'E-TITLE']word2id: 將字映射為IDtag2id: 字典,將標(biāo)注映射為ID"""assert len(tag_lists) == len(word_lists)# 估計(jì)轉(zhuǎn)移概率矩陣for tag_list in tag_lists:seq_len = len(tag_list)for i in range(seq_len - 1):current_tagid = tag2id[tag_list[i]]next_tagid = tag2id[tag_list[i+1]]self.A[current_tagid][next_tagid] += 1# 一個(gè)重要的問(wèn)題:如果某元素沒(méi)有出現(xiàn)過(guò),該位置為0,這在后續(xù)的計(jì)算中是不允許的# 解決方法:我們將等于0的概率加上很小的數(shù)self.A[self.A == 0.] = 1e-10self.A = self.A / self.A.sum(dim=1, keepdim=True)# 估計(jì)觀測(cè)概率矩陣for tag_list, word_list in zip(tag_lists, word_lists):assert len(tag_list) == len(word_list)for tag, word in zip(tag_list, word_list):tag_id = tag2id[tag]word_id = word2id[word]self.B[tag_id][word_id] += 1self.B[self.B == 0.] = 1e-10self.B = self.B / self.B.sum(dim=1, keepdim=True)# 估計(jì)初始狀態(tài)概率for tag_list in tag_lists:init_tagid = tag2id[tag_list[0]]self.Pi[init_tagid] += 1self.Pi[self.Pi == 0.] = 1e-10self.Pi = self.Pi / self.Pi.sum()

模型訓(xùn)練完畢之后,要利用訓(xùn)練好的模型進(jìn)行解碼,就是對(duì)給定的模型未見(jiàn)過(guò)的句子,求句子中的每個(gè)字對(duì)應(yīng)的標(biāo)注,針對(duì)這個(gè)解碼問(wèn)題,我們使用的是維特比(viterbi)算法。關(guān)于該算法的數(shù)學(xué)推導(dǎo),可以查閱一下李航統(tǒng)計(jì)學(xué)習(xí)方法。

HMM存在兩個(gè)缺陷:1)觀察值之間嚴(yán)格獨(dú)立,觀測(cè)到的句子中每個(gè)字相互獨(dú)立

2)狀態(tài)轉(zhuǎn)移過(guò)程中當(dāng)前狀態(tài)只與前一狀態(tài)有關(guān),沒(méi)有關(guān)注到后一時(shí)刻的狀態(tài)

HMM代碼實(shí)現(xiàn)的主要模型部分如下:

import torchclass HMM(object):def __init__(self, N, M):"""Args:N: 狀態(tài)數(shù),這里對(duì)應(yīng)存在的標(biāo)注的種類(lèi)M: 觀測(cè)數(shù),這里對(duì)應(yīng)有多少不同的字"""self.N = Nself.M = M# 狀態(tài)轉(zhuǎn)移概率矩陣 A[i][j]表示從i狀態(tài)轉(zhuǎn)移到j(luò)狀態(tài)的概率self.A = torch.zeros(N, N)# 觀測(cè)概率矩陣, B[i][j]表示i狀態(tài)下生成j觀測(cè)的概率self.B = torch.zeros(N, M)# 初始狀態(tài)概率 Pi[i]表示初始時(shí)刻為狀態(tài)i的概率self.Pi = torch.zeros(N)def train(self, word_lists, tag_lists, word2id, tag2id):"""HMM的訓(xùn)練,即根據(jù)訓(xùn)練語(yǔ)料對(duì)模型參數(shù)進(jìn)行估計(jì),因?yàn)槲覀冇杏^測(cè)序列以及其對(duì)應(yīng)的狀態(tài)序列,所以我們可以使用極大似然估計(jì)的方法來(lái)估計(jì)隱馬爾可夫模型的參數(shù)參數(shù):word_lists: 列表,其中每個(gè)元素由字組成的列表,如 ['擔(dān)','任','科','員']tag_lists: 列表,其中每個(gè)元素是由對(duì)應(yīng)的標(biāo)注組成的列表,如 ['O','O','B-TITLE', 'E-TITLE']word2id: 將字映射為IDtag2id: 字典,將標(biāo)注映射為ID"""assert len(tag_lists) == len(word_lists)# 估計(jì)轉(zhuǎn)移概率矩陣for tag_list in tag_lists:seq_len = len(tag_list)for i in range(seq_len - 1):current_tagid = tag2id[tag_list[i]]next_tagid = tag2id[tag_list[i+1]]self.A[current_tagid][next_tagid] += 1# 問(wèn)題:如果某元素沒(méi)有出現(xiàn)過(guò),該位置為0,這在后續(xù)的計(jì)算中是不允許的# 解決方法:我們將等于0的概率加上很小的數(shù)self.A[self.A == 0.] = 1e-10self.A = self.A / self.A.sum(dim=1, keepdim=True)# 估計(jì)觀測(cè)概率矩陣for tag_list, word_list in zip(tag_lists, word_lists):assert len(tag_list) == len(word_list)for tag, word in zip(tag_list, word_list):tag_id = tag2id[tag]word_id = word2id[word]self.B[tag_id][word_id] += 1self.B[self.B == 0.] = 1e-10self.B = self.B / self.B.sum(dim=1, keepdim=True)# 估計(jì)初始狀態(tài)概率for tag_list in tag_lists:init_tagid = tag2id[tag_list[0]]self.Pi[init_tagid] += 1self.Pi[self.Pi == 0.] = 1e-10self.Pi = self.Pi / self.Pi.sum()def test(self, word_lists, word2id, tag2id):pred_tag_lists = []for word_list in word_lists:pred_tag_list = self.decoding(word_list, word2id, tag2id)pred_tag_lists.append(pred_tag_list)return pred_tag_listsdef decoding(self, word_list, word2id, tag2id):"""使用維特比算法對(duì)給定觀測(cè)序列求狀態(tài)序列, 這里就是對(duì)字組成的序列,求其對(duì)應(yīng)的標(biāo)注。維特比算法實(shí)際是用動(dòng)態(tài)規(guī)劃解隱馬爾可夫模型預(yù)測(cè)問(wèn)題,即用動(dòng)態(tài)規(guī)劃求概率最大路徑(最優(yōu)路徑)這時(shí)一條路徑對(duì)應(yīng)著一個(gè)狀態(tài)序列"""# 問(wèn)題:整條鏈很長(zhǎng)的情況下,十分多的小概率相乘,最后可能造成下溢# 解決辦法:采用對(duì)數(shù)概率,這樣源空間中的很小概率,就被映射到對(duì)數(shù)空間的大的負(fù)數(shù)# 同時(shí)相乘操作也變成簡(jiǎn)單的相加操作A = torch.log(self.A)B = torch.log(self.B)Pi = torch.log(self.Pi)# 初始化 維比特矩陣viterbi 它的維度為[狀態(tài)數(shù), 序列長(zhǎng)度]# 其中viterbi[i, j]表示標(biāo)注序列的第j個(gè)標(biāo)注為i的所有單個(gè)序列(i_1, i_2, ..i_j)出現(xiàn)的概率最大值seq_len = len(word_list)viterbi = torch.zeros(self.N, seq_len)# backpointer是跟viterbi一樣大小的矩陣# backpointer[i, j]存儲(chǔ)的是 標(biāo)注序列的第j個(gè)標(biāo)注為i時(shí),第j-1個(gè)標(biāo)注的id# 等解碼的時(shí)候,我們用backpointer進(jìn)行回溯,以求出最優(yōu)路徑backpointer = torch.zeros(self.N, seq_len).long()# self.Pi[i] 表示第一個(gè)字的標(biāo)記為i的概率# Bt[word_id]表示字為word_id的時(shí)候,對(duì)應(yīng)各個(gè)標(biāo)記的概率# self.A.t()[tag_id]表示各個(gè)狀態(tài)轉(zhuǎn)移到tag_id對(duì)應(yīng)的概率# 所以第一步為start_wordid = word2id.get(word_list[0], None)Bt = B.t()if start_wordid is None:# 如果字不再字典里,則假設(shè)狀態(tài)的概率分布是均勻的bt = torch.log(torch.ones(self.N) / self.N)else:bt = Bt[start_wordid]viterbi[:, 0] = Pi + btbackpointer[:, 0] = -1# 遞推公式:# viterbi[tag_id, step] = max(viterbi[:, step-1]* self.A.t()[tag_id] * Bt[word])# 其中word是step時(shí)刻對(duì)應(yīng)的字# 由上述遞推公式求后續(xù)各步for step in range(1, seq_len):wordid = word2id.get(word_list[step], None)# 處理字不在字典中的情況# bt是在t時(shí)刻字為wordid時(shí),狀態(tài)的概率分布if wordid is None:# 如果字不再字典里,則假設(shè)狀態(tài)的概率分布是均勻的bt = torch.log(torch.ones(self.N) / self.N)else:bt = Bt[wordid] # 否則從觀測(cè)概率矩陣中取btfor tag_id in range(len(tag2id)):max_prob, max_id = torch.max(viterbi[:, step-1] + A[:, tag_id],dim=0)viterbi[tag_id, step] = max_prob + bt[tag_id]backpointer[tag_id, step] = max_id# 終止, t=seq_len 即 viterbi[:, seq_len]中的最大概率,就是最優(yōu)路徑的概率best_path_prob, best_path_pointer = torch.max(viterbi[:, seq_len-1], dim=0)# 回溯,求最優(yōu)路徑best_path_pointer = best_path_pointer.item()best_path = [best_path_pointer]for back_step in range(seq_len-1, 0, -1):best_path_pointer = backpointer[best_path_pointer, back_step]best_path_pointer = best_path_pointer.item()best_path.append(best_path_pointer)# 將tag_id組成的序列轉(zhuǎn)化為tagassert len(best_path) == len(word_list)id2tag = dict((id_, tag) for tag, id_ in tag2id.items())tag_list = [id2tag[id_] for id_ in reversed(best_path)]return tag_list

2、條件隨機(jī)場(chǎng)

上面講的HMM模型中存在兩個(gè)假設(shè),一是輸出觀察值之間嚴(yán)格獨(dú)立,二是狀態(tài)轉(zhuǎn)移過(guò)程中當(dāng)前狀態(tài)只與前一狀態(tài)有關(guān)。也就是說(shuō),在命名實(shí)體識(shí)別的場(chǎng)景下,HMM認(rèn)為觀測(cè)到的句子中的每個(gè)字都是相互獨(dú)立的,而且當(dāng)前時(shí)刻的標(biāo)注只與前一時(shí)刻的標(biāo)注相關(guān)。但實(shí)際上,命名實(shí)體識(shí)別往往需要更多的特征,比如詞性,詞的上下文等等,同時(shí)當(dāng)前時(shí)刻的標(biāo)注應(yīng)該與前一時(shí)刻以及后一時(shí)刻的標(biāo)注都相關(guān)聯(lián)。由于這兩個(gè)假設(shè)的存在,顯然HMM模型在解決命名實(shí)體識(shí)別的問(wèn)題上是存在缺陷的。

而條件隨機(jī)場(chǎng)就沒(méi)有這種問(wèn)題,它通過(guò)引入自定義的特征函數(shù),不僅可以表達(dá)觀測(cè)之間的依賴(lài),還可表示當(dāng)前觀測(cè)與前后多個(gè)狀態(tài)之間的復(fù)雜依賴(lài),可以有效克服HMM模型面臨的問(wèn)題。條件隨機(jī)場(chǎng)數(shù)學(xué)公式不在此講述了。其解碼也是采用維特比算法。

from sklearn_crfsuite import CRF # CRF的具體實(shí)現(xiàn)太過(guò)復(fù)雜,這里我們借助一個(gè)外部的庫(kù)def word2features(sent, i):"""抽取單個(gè)字的特征"""word = sent[i]prev_word = "<s>" if i == 0 else sent[i-1]next_word = "</s>" if i == (len(sent)-1) else sent[i+1]# 因?yàn)槊總€(gè)詞相鄰的詞會(huì)影響這個(gè)詞的標(biāo)記# 所以我們使用:# 前一個(gè)詞,當(dāng)前詞,后一個(gè)詞,# 前一個(gè)詞+當(dāng)前詞, 當(dāng)前詞+后一個(gè)詞# 作為特征features = {'w': word,'w-1': prev_word,'w+1': next_word,'w-1:w': prev_word+word,'w:w+1': word+next_word,'bias': 1}return featuresdef sent2features(sent):"""抽取序列特征"""return [word2features(sent, i) for i in range(len(sent))]class CRFModel(object):def __init__(self,algorithm='lbfgs',c1=0.1,c2=0.1,max_iterations=100,all_possible_transitions=False):self.model = CRF(algorithm=algorithm,c1=c1,c2=c2,max_iterations=max_iterations,all_possible_transitions=all_possible_transitions)def train(self, sentences, tag_lists):"""訓(xùn)練模型"""features = [sent2features(s) for s in sentences]self.model.fit(features, tag_lists)def test(self, sentences):"""解碼,對(duì)給定句子預(yù)測(cè)其標(biāo)注"""features = [sent2features(s) for s in sentences]pred_tag_lists = self.model.predict(features)return pred_tag_lists

?

3、Bi_LSTM_CRF

簡(jiǎn)單的LSTM的優(yōu)點(diǎn)是能夠通過(guò)雙向的設(shè)置學(xué)習(xí)到觀測(cè)序列(輸入的字)之間的依賴(lài),在訓(xùn)練過(guò)程中,LSTM能夠根據(jù)目標(biāo)(比如識(shí)別實(shí)體)自動(dòng)提取觀測(cè)序列的特征,但是缺點(diǎn)是無(wú)法學(xué)習(xí)到狀態(tài)序列(輸出的標(biāo)注)之間的關(guān)系,要知道,在命名實(shí)體識(shí)別任務(wù)中,標(biāo)注之間是有一定的關(guān)系的,比如B類(lèi)標(biāo)注(表示某實(shí)體的開(kāi)頭)后面不會(huì)再接一個(gè)B類(lèi)標(biāo)注,所以LSTM在解決NER這類(lèi)序列標(biāo)注任務(wù)時(shí),雖然可以省去很繁雜的特征工程,但是也存在無(wú)法學(xué)習(xí)到標(biāo)注上下文的缺點(diǎn)。相反,CRF的優(yōu)點(diǎn)就是能對(duì)隱含狀態(tài)建模,學(xué)習(xí)狀態(tài)序列的特點(diǎn),但它的缺點(diǎn)是需要手動(dòng)提取序列特征。所以一般的做法是,在LSTM后面再加一層CRF,以獲得兩者的優(yōu)點(diǎn)。

下面是給Bi-LSTM加一層CRF的代碼實(shí)現(xiàn):

from itertools import zip_longest from copy import deepcopyimport torch import torch.nn as nn import torch.optim as optimfrom .util import tensorized, sort_by_lengths, cal_loss, cal_lstm_crf_loss from .config import TrainingConfig, LSTMConfig from .bilstm import BiLSTMclass BILSTM_Model(object):def __init__(self, vocab_size, out_size, crf=True):"""功能:對(duì)LSTM的模型進(jìn)行訓(xùn)練與測(cè)試參數(shù):vocab_size:詞典大小out_size:標(biāo)注種類(lèi)crf選擇是否添加CRF層"""self.device = torch.device("cuda" if torch.cuda.is_available() else "cpu")# 加載模型參數(shù)self.emb_size = LSTMConfig.emb_sizeself.hidden_size = LSTMConfig.hidden_sizeself.crf = crf# 根據(jù)是否添加crf初始化不同的模型 選擇不一樣的損失計(jì)算函數(shù)if not crf:self.model = BiLSTM(vocab_size, self.emb_size,self.hidden_size, out_size).to(self.device)self.cal_loss_func = cal_losselse:self.model = BiLSTM_CRF(vocab_size, self.emb_size,self.hidden_size, out_size).to(self.device)self.cal_loss_func = cal_lstm_crf_loss# 加載訓(xùn)練參數(shù):self.epoches = TrainingConfig.epochesself.print_step = TrainingConfig.print_stepself.lr = TrainingConfig.lrself.batch_size = TrainingConfig.batch_size# 初始化優(yōu)化器self.optimizer = optim.Adam(self.model.parameters(), lr=self.lr)# 初始化其他指標(biāo)self.step = 0self._best_val_loss = 1e18self.best_model = Nonedef train(self, word_lists, tag_lists,dev_word_lists, dev_tag_lists,word2id, tag2id):# 對(duì)數(shù)據(jù)集按照長(zhǎng)度進(jìn)行排序word_lists, tag_lists, _ = sort_by_lengths(word_lists, tag_lists)dev_word_lists, dev_tag_lists, _ = sort_by_lengths(dev_word_lists, dev_tag_lists)B = self.batch_sizefor e in range(1, self.epoches+1):self.step = 0losses = 0.for ind in range(0, len(word_lists), B):batch_sents = word_lists[ind:ind+B]batch_tags = tag_lists[ind:ind+B]losses += self.train_step(batch_sents,batch_tags, word2id, tag2id)if self.step % TrainingConfig.print_step == 0:total_step = (len(word_lists) // B + 1)print("Epoch {}, step/total_step: {}/{} {:.2f}% Loss:{:.4f}".format(e, self.step, total_step,100. * self.step / total_step,losses / self.print_step))losses = 0.# 每輪結(jié)束測(cè)試在驗(yàn)證集上的性能,保存最好的一個(gè)val_loss = self.validate(dev_word_lists, dev_tag_lists, word2id, tag2id)print("Epoch {}, Val Loss:{:.4f}".format(e, val_loss))def train_step(self, batch_sents, batch_tags, word2id, tag2id):self.model.train()self.step += 1# 準(zhǔn)備數(shù)據(jù)tensorized_sents, lengths = tensorized(batch_sents, word2id)tensorized_sents = tensorized_sents.to(self.device)targets, lengths = tensorized(batch_tags, tag2id)targets = targets.to(self.device)# forwardscores = self.model(tensorized_sents, lengths)# 計(jì)算損失 更新參數(shù)self.optimizer.zero_grad()loss = self.cal_loss_func(scores, targets, tag2id).to(self.device)loss.backward()self.optimizer.step()return loss.item()def validate(self, dev_word_lists, dev_tag_lists, word2id, tag2id):self.model.eval()with torch.no_grad():val_losses = 0.val_step = 0for ind in range(0, len(dev_word_lists), self.batch_size):val_step += 1# 準(zhǔn)備batch數(shù)據(jù)batch_sents = dev_word_lists[ind:ind+self.batch_size]batch_tags = dev_tag_lists[ind:ind+self.batch_size]tensorized_sents, lengths = tensorized(batch_sents, word2id)tensorized_sents = tensorized_sents.to(self.device)targets, lengths = tensorized(batch_tags, tag2id)targets = targets.to(self.device)# forwardscores = self.model(tensorized_sents, lengths)# 計(jì)算損失loss = self.cal_loss_func(scores, targets, tag2id).to(self.device)val_losses += loss.item()val_loss = val_losses / val_stepif val_loss < self._best_val_loss:print("保存模型...")self.best_model = deepcopy(self.model)self._best_val_loss = val_lossreturn val_lossdef test(self, word_lists, tag_lists, word2id, tag2id):"""返回最佳模型在測(cè)試集上的預(yù)測(cè)結(jié)果"""# 準(zhǔn)備數(shù)據(jù)word_lists, tag_lists, indices = sort_by_lengths(word_lists, tag_lists)tensorized_sents, lengths = tensorized(word_lists, word2id)tensorized_sents = tensorized_sents.to(self.device)self.best_model.eval()with torch.no_grad():batch_tagids = self.best_model.test(tensorized_sents, lengths, tag2id)# 將id轉(zhuǎn)化為標(biāo)注pred_tag_lists = []id2tag = dict((id_, tag) for tag, id_ in tag2id.items())for i, ids in enumerate(batch_tagids):tag_list = []if self.crf:for j in range(lengths[i] - 1): # crf解碼過(guò)程中,end被舍棄tag_list.append(id2tag[ids[j].item()])else:for j in range(lengths[i]):tag_list.append(id2tag[ids[j].item()])pred_tag_lists.append(tag_list)# indices存有根據(jù)長(zhǎng)度排序后的索引映射的信息# 比如若indices = [1, 2, 0] 則說(shuō)明原先索引為1的元素映射到的新的索引是0,# 索引為2的元素映射到新的索引是1...# 下面根據(jù)indices將pred_tag_lists和tag_lists轉(zhuǎn)化為原來(lái)的順序ind_maps = sorted(list(enumerate(indices)), key=lambda e: e[1])indices, _ = list(zip(*ind_maps))pred_tag_lists = [pred_tag_lists[i] for i in indices]tag_lists = [tag_lists[i] for i in indices]return pred_tag_lists, tag_listsclass BiLSTM_CRF(nn.Module):def __init__(self, vocab_size, emb_size, hidden_size, out_size):"""初始化參數(shù):vocab_size:字典的大小emb_size:詞向量的維數(shù)hidden_size:隱向量的維數(shù)out_size:標(biāo)注的種類(lèi)"""super(BiLSTM_CRF, self).__init__()self.bilstm = BiLSTM(vocab_size, emb_size, hidden_size, out_size)# CRF實(shí)際上就是多學(xué)習(xí)一個(gè)轉(zhuǎn)移矩陣 [out_size, out_size] 初始化為均勻分布self.transition = nn.Parameter(torch.ones(out_size, out_size) * 1/out_size)# self.transition.data.zero_()def forward(self, sents_tensor, lengths):# [B, L, out_size]emission = self.bilstm(sents_tensor, lengths)# 計(jì)算CRF scores, 這個(gè)scores大小為[B, L, out_size, out_size]# 也就是每個(gè)字對(duì)應(yīng)一個(gè) [out_size, out_size]的矩陣# 這個(gè)矩陣第i行第j列的元素的含義是:上一時(shí)刻tag為i,這一時(shí)刻tag為j的分?jǐn)?shù)batch_size, max_len, out_size = emission.size()crf_scores = emission.unsqueeze(2).expand(-1, -1, out_size, -1) + self.transition.unsqueeze(0)return crf_scoresdef test(self, test_sents_tensor, lengths, tag2id):"""使用維特比算法進(jìn)行解碼"""start_id = tag2id['<start>']end_id = tag2id['<end>']pad = tag2id['<pad>']tagset_size = len(tag2id)crf_scores = self.forward(test_sents_tensor, lengths)device = crf_scores.device# B:batch_size, L:max_len, T:target set sizeB, L, T, _ = crf_scores.size()# viterbi[i, j, k]表示第i個(gè)句子,第j個(gè)字對(duì)應(yīng)第k個(gè)標(biāo)記的最大分?jǐn)?shù)viterbi = torch.zeros(B, L, T).to(device)# backpointer[i, j, k]表示第i個(gè)句子,第j個(gè)字對(duì)應(yīng)第k個(gè)標(biāo)記時(shí)前一個(gè)標(biāo)記的id,用于回溯backpointer = (torch.zeros(B, L, T).long() * end_id).to(device)lengths = torch.LongTensor(lengths).to(device)# 向前遞推for step in range(L):batch_size_t = (lengths > step).sum().item()if step == 0:# 第一個(gè)字它的前一個(gè)標(biāo)記只能是start_idviterbi[:batch_size_t, step,:] = crf_scores[: batch_size_t, step, start_id, :]backpointer[: batch_size_t, step, :] = start_idelse:max_scores, prev_tags = torch.max(viterbi[:batch_size_t, step-1, :].unsqueeze(2) +crf_scores[:batch_size_t, step, :, :], # [B, T, T]dim=1)viterbi[:batch_size_t, step, :] = max_scoresbackpointer[:batch_size_t, step, :] = prev_tags# 在回溯的時(shí)候我們只需要用到backpointer矩陣backpointer = backpointer.view(B, -1) # [B, L * T]tagids = [] # 存放結(jié)果tags_t = Nonefor step in range(L-1, 0, -1):batch_size_t = (lengths > step).sum().item()if step == L-1:index = torch.ones(batch_size_t).long() * (step * tagset_size)index = index.to(device)index += end_idelse:prev_batch_size_t = len(tags_t)new_in_batch = torch.LongTensor([end_id] * (batch_size_t - prev_batch_size_t)).to(device)offset = torch.cat([tags_t, new_in_batch],dim=0) # 這個(gè)offset實(shí)際上就是前一時(shí)刻的index = torch.ones(batch_size_t).long() * (step * tagset_size)index = index.to(device)index += offset.long()try:tags_t = backpointer[:batch_size_t].gather(dim=1, index=index.unsqueeze(1).long())except RuntimeError:import pdbpdb.set_trace()tags_t = tags_t.squeeze(1)tagids.append(tags_t.tolist())# tagids:[L-1](L-1是因?yàn)榭廴チ薳nd_token),大小的liebiao# 其中列表內(nèi)的元素是該batch在該時(shí)刻的標(biāo)記# 下面修正其順序,并將維度轉(zhuǎn)換為 [B, L]tagids = list(zip_longest(*reversed(tagids), fillvalue=pad))tagids = torch.Tensor(tagids).long()# 返回解碼的結(jié)果return tagids

注:關(guān)于維特比算法推薦看鏈接,講解的通俗易懂如何通俗講解維特比算法

其他學(xué)習(xí)連接:

Advanced: Making Dynamic Decisions and the Bi-LSTM CRF — PyTorch Tutorials 1.11.0+cu102 documentation

Bi-LSTM-CRF for Sequence Labeling - 知乎

https://github.com/jiesutd/LatticeLSTM

總結(jié)

以上是生活随笔為你收集整理的中文命名实体识别NER的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

国产视频精品免费播放 | 日韩网站在线 | 国产一二区精品 | 国产尤物在线观看 | 亚洲作爱视频 | 亚洲欧美日韩国产精品一区午夜 | av超碰在线观看 | 日韩精品久久久免费观看夜色 | 免费视频网 | 免费在线观看成人小视频 | 在线中文字幕电影 | 成年人免费av | 日韩免费在线观看网站 | 美女视频免费一区二区 | 亚洲精品乱码久久久久久久久久 | 麻豆免费精品视频 | 狂野欧美激情性xxxx欧美 | 91网站在线视频 | 五月天婷婷视频 | 六月激情久久 | 深爱激情久久 | 久久久久久久久久久网站 | 91桃色国产在线播放 | 99riav1国产精品视频 | 特级西西www44高清大胆图片 | 国产一级黄大片 | 欧美一区二区三区在线 | 亚洲精品乱码久久 | 免费国产视频 | 欧美日韩一区二区久久 | 久福利| 中文字幕乱码在线播放 | 久久99热国产 | 欧美激情综合五月色丁香 | 国产精品久久久久久超碰 | 亚洲精品美女久久久久网站 | 欧美韩日精品 | 五月天激情在线 | 人人干人人干人人干 | 91av蜜桃 | 久久久久久久久久久久久久电影 | 久久国产精品一二三区 | 国产日本亚洲高清 | 波多野结衣视频一区二区三区 | 亚洲黄色区 | www178ccom视频在线 | 国产一区在线视频观看 | 国产一级免费播放 | 亚洲一区二区麻豆 | 999国内精品永久免费视频 | 国产手机av | 久久精品视频在线观看 | 亚洲国产资源 | 久久不卡电影 | 99精品在线免费视频 | 色婷婷欧美 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 亚洲激精日韩激精欧美精品 | 国产专区在线播放 | 亚洲区视频在线观看 | 99爱在线 | 亚洲女欲精品久久久久久久18 | 在线观看精品黄av片免费 | 免费精品国产va自在自线 | 成人黄色在线视频 | 二区三区精品 | 国产成人av网址 | 亚洲在线视频免费观看 | 色爽网站 | 国产 欧美 日本 | 日韩av电影中文字幕在线观看 | 五月综合在线观看 | 国产视频在线免费观看 | 久久国产欧美日韩精品 | 在线播放一区二区三区 | 国产高清永久免费 | 日韩系列在线 | 成人免费ⅴa | 久久亚洲婷婷 | 美女一区网站 | 欧美日韩国产精品一区 | 97超碰国产在线 | 亚洲自拍自偷 | 能在线观看的日韩av | www麻豆视频 | 国产成人99av超碰超爽 | 亚洲天堂网站视频 | 久久国产精品免费视频 | 亚洲国产福利视频 | 网址你懂的在线观看 | 日韩av免费一区 | 黄色动态图xx | 在线播放精品一区二区三区 | 国产午夜精品一区二区三区 | 狠狠狠色丁香婷婷综合久久五月 | 久久久久免费 | 亚洲干视频在线观看 | 成人免费在线播放 | 久久人人爽视频 | 色老板在线视频 | 色在线视频| 日日爱av | 九九99视频 | 久久久久久国产精品999 | 免费看十八岁美女 | 日本mv大片欧洲mv大片 | 精品国精品自拍自在线 | 91成版人在线观看入口 | 黄色av免费在线 | 99精品久久久久久久 | 亚洲精品乱码久久久久久蜜桃动漫 | 国产午夜精品理论片在线 | 国产香蕉97碰碰碰视频在线观看 | 国产一级视频在线观看 | 91资源在线视频 | 国产精品一区二区av影院萌芽 | 国产精品一区二区在线观看免费 | 五月开心六月伊人色婷婷 | 亚洲春色奇米影视 | 一区二区精品在线视频 | 五月天中文字幕 | 99 国产精品| 久久人人做 | 热久久免费视频精品 | 国产精品 9999 | 亚洲国产高清在线观看视频 | 欧美日韩一区二区在线观看 | 国产一区免费在线观看 | 最近高清中文在线字幕在线观看 | 天天爱天天操 | 成人午夜影视 | 天天拍夜夜拍 | 国产日韩欧美在线影视 | 天天操天天射天天舔 | 18pao国产成视频永久免费 | 天天色官网 | av福利网址导航 | 亚洲免费av网站 | 91av在线视频免费观看 | 91高清不卡 | 88av网站 | 粉嫩av一区二区三区四区五区 | 国产美女永久免费 | 人人干人人模 | 欧美精品一区二区蜜臀亚洲 | 日韩成人免费在线电影 | 久久久鲁 | 国产精品免费一区二区三区 | 久久视频精品在线观看 | 国产精品久久人 | 精品国产一区二区久久 | 日韩av网页 | 国产精品福利在线观看 | 日日干天天操 | 人人射人人爱 | av在线免费观看黄 | 182午夜在线观看 | 国产精品免费看 | a v在线视频| 99视频一区 | 91精品中文字幕 | 亚洲国产中文字幕 | 天天舔天天射天天操 | 99在线观看视频 | 亚洲精品午夜一区人人爽 | av再线观看| 亚洲高清在线观看视频 | 欧美日韩视频免费 | 日韩三级视频在线看 | 在线视频观看国产 | 国产一区二区日本 | 国产一区二区三区黄 | 97夜夜澡人人双人人人喊 | 婷婷网在线 | 亚州精品视频 | 超碰电影在线观看 | 中文字幕一区二区三区四区在线视频 | 亚洲电影影音先锋 | 日本久久久精品视频 | 激情导航 | 久久久久久黄 | 俺要去色综合狠狠 | 精品国自产在线观看 | 国产在线精品区 | 国产精品一区在线观看 | 69久久夜色精品国产69 | 成人免费一级 | 91视频 - 88av | 美女av免费看| 四虎国产精品永久在线国在线 | 久久久久国产精品免费 | 中文字幕在线观看视频一区二区三区 | 中文不卡视频 | 国产日韩欧美视频 | 国产一级特黄毛片在线毛片 | 中文字幕 在线 一 二 | 国产精品黑丝在线观看 | 天堂av在线网 | 国产精品中文字幕在线播放 | 九九电影在线 | 免费久久久 | 91人网站 | 色免费在线 | 国产亚洲精品久久 | 日韩午夜视频在线观看 | 91久久国产露脸精品国产闺蜜 | 亚洲精品女人 | 成人久久亚洲 | 91热视频在线观看 | av免费在线网站 | 在线播放 一区 | 日韩在线视频一区 | 精品久久电影 | 91私密视频 | 日韩高清av在线 | 亚洲精品婷婷 | 色免费在线 | 国产精品一区二区果冻传媒 | 蜜臀久久99精品久久久无需会员 | 在线观看av黄色 | 丁香六月综合网 | 精品一区二区在线免费观看 | 色综合人人 | 日韩精品三区四区 | 欧美激情va永久在线播放 | 久久电影色| 婷婷国产精品 | 亚洲女同ⅹxx女同tv | www.亚洲视频.com | 2019中文字幕第一页 | 99精品国产视频 | 中文字幕中文字幕在线一区 | 特级毛片网站 | 国产一级淫片免费看 | 国产美女无遮挡永久免费 | 国产免费a| 狠狠色丁香久久婷婷综合丁香 | 久久免费视频这里只有精品 | 欧美精品乱码99久久影院 | 久久精品一区二区三 | 岛国av在线免费 | 国产破处精品 | 狠狠干我 | 成人精品一区二区三区电影免费 | 国产不卡一 | 久久亚洲免费 | 天天五月天色 | 国产色视频123区 | 黄色毛片视频 | av成人资源 | 亚洲精品久久久久999中文字幕 | 亚洲激情久久 | 最近中文字幕国语免费高清6 | 高清久久久久久 | 四虎影视久久久 | 久久深爱网 | 成人h电影 | 黄色大片网 | 五月婷婷在线观看 | 色综合久久久网 | 免费亚洲精品 | 久久久久久久久久国产精品 | 九九久久影院 | 国内免费久久久久久久久久久 | 波多野结衣久久精品 | 亚洲小视频在线 | 日韩色一区二区三区 | 五月天婷婷综合 | 国产亚洲精品成人av久久影院 | www.人人干| 四虎影视成人精品 | 黄www在线观看| 亚洲四虎影院 | 色的网站在线观看 | 日本精品在线 | 国产一级免费观看 | 66av99精品福利视频在线 | 亚洲综合最新在线 | 国产一区在线不卡 | 久久av免费电影 | 午夜123 | 欧美日韩免费观看一区二区三区 | 国产精品久久久久一区二区三区共 | 亚洲国产成人久久综合 | 欧美韩国在线 | 亚洲欧洲精品视频 | 18久久久久久 | 国产一级片久久 | 99国产一区二区三精品乱码 | 久久免费视频网站 | av一区二区三区在线播放 | 免费黄a| 五月婷婷丁香 | 免费成人在线观看视频 | 一区二区在线不卡 | 亚洲国产经典视频 | 欧美孕妇与黑人孕交 | 91在线看黄 | 99精品欧美一区二区 | 国产精品免费高清 | 国产91免费在线 | 亚洲综合精品视频 | 久久久久久久久国产 | 91精品在线免费观看视频 | 天天玩天天操天天射 | 91在线视频免费观看 | 日av免费 | 中文字幕免费在线 | 国内精品久久久久影院日本资源 | 久青草影院 | 在线观看资源 | 97碰碰精品嫩模在线播放 | 国产免费观看视频 | 日韩国产在线观看 | 精品国产99 | 亚洲视频在线免费看 | www.夜色321.com | 久久久精品国产一区二区电影四季 | 欧美激情视频免费看 | 欧美一级大片在线观看 | 国产91精品久久久久 | 91在线视频免费播放 | 亚洲精品白浆高清久久久久久 | 免费av高清| 在线观看免费视频 | 黄色软件在线观看 | 色综合a| 精品国产一区二区三区久久久久久 | 一区在线电影 | 国产精品久久精品 | 天天夜操 | 国产精品久久久久影院 | 成人午夜电影在线 | aⅴ精品av导航 | 美女视频黄在线 | 日韩高清在线看 | 99精品视频免费在线观看 | 日韩电影一区二区在线 | 在线观看视频免费播放 | 久久综合网色—综合色88 | 最新av中文字幕 | 色综合天天做天天爱 | 国产不卡视频在线 | 成人一区二区三区中文字幕 | 欧洲一区二区三区精品 | 久久精品站 | 91精品一区在线观看 | 一区二区三区精品在线 | 日韩av成人在线观看 | 亚洲在线a| 一区二区三区精品在线 | 亚洲综合色视频在线观看 | 亚洲区色 | 久久国产a | 爱爱av网| 超碰99在线 | 黄色中文字幕在线 | 婷五月激情 | 六月丁香色婷婷 | 国产一区国产精品 | 国产精品18久久久久久久 | 99一区二区三区 | 成人欧美亚洲 | 欧美小视频在线观看 | 久久婷婷一区二区三区 | 在线观av| 天天草网站 | 嫩模bbw搡bbbb搡bbbb | 波多野结衣网址 | 精品国产自在精品国产精野外直播 | 最近能播放的中文字幕 | 免费日韩 精品中文字幕视频在线 | 国产精品成人av电影 | 国产精品欧美日韩 | 久久精品视频网站 | 91在线视频免费播放 | 国产1区2 | 色视频在线免费观看 | 国产又粗又长又硬免费视频 | av在线电影网站 | 久久免费精彩视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 激情网色 | 日韩电影中文字幕在线观看 | 欧美在线日韩在线 | 欧美a√大片 | 国产黄在线免费观看 | 国产中文在线观看 | 97av色| 国产黄色大全 | 亚洲精品国精品久久99热一 | 国产精品久久久久久久久久免费看 | 亚洲一级久久 | 99久久精品久久久久久清纯 | 97碰碰碰 | 91超碰在线播放 | 久草在线免费在线观看 | 日韩av在线免费播放 | 黄色免费观看 | 涩涩伊人 | 国产永久免费高清在线观看视频 | www色网站 | 日本天天色 | 国产精品久久网 | 免费在线观看视频a | 久久综合网色—综合色88 | 丁香婷婷久久 | 国产视频亚洲 | 青青网视频 | 国产在线看 | 丁香激情综合 | 久久伊人色综合 | 少妇bbbb搡bbbb桶 | 国产精品久久久久久久久免费看 | 狠狠躁日日躁夜夜躁av | 丁香六月在线 | 久久99久久99精品中文字幕 | 欧美一级片免费观看 | av在线一二三区 | 色婷婷啪啪免费在线电影观看 | 国产成人精品日本亚洲999 | 可以免费看av | 亚洲一二视频 | 日日干夜夜干 | 久草av在线播放 | 日韩高清在线一区二区 | 99精品免费观看 | 正在播放国产91 | 白丝av在线 | 伊人资源站| 一本之道乱码区 | 亚洲精品短视频 | 成年人在线视频观看 | 久久久久久久av | 日韩欧美精品在线观看 | 亚洲欧美国产视频 | 久久国产精品视频观看 | 亚洲精品久久在线 | 一区二区欧美日韩 | 国产精品大尺度 | 精品国产一二三四区 | 中文字幕日韩国产 | 久久久精品欧美一区二区免费 | 日韩在线一区二区免费 | 日韩视频在线观看视频 | 最近中文字幕大全 | 国产乱视频 | 成人一级影视 | 欧美午夜久久久 | 福利一区二区 | 丁香六月国产 | 91九色在线视频观看 | 亚洲综合在线一区二区三区 | 久草在线电影网 | 久久综合在线 | 亚洲一级二级 | 91免费观看视频在线 | 国内精品中文字幕 | 免费在线观看国产黄 | 免费黄a大片 | 色香蕉视频 | 国产伦精品一区二区三区… | 亚洲一级免费观看 | 91在线网址 | 亚洲精品免费在线 | 国产精品成人久久久久久久 | 国产精品四虎 | 亚洲日韩中文字幕在线播放 | 久久精品国产成人 | 国产精品免费小视频 | 国产黄色精品视频 | 91精品网站| 中文字幕在线视频一区二区 | 欧美日韩一级视频 | 国产精品一区二区三区视频免费 | 日韩av高清在线观看 | 国产精品久久久久久影院 | 日韩91av| 亚洲精品久久久久久久不卡四虎 | 狠狠的干狠狠的操 | 欧美激情视频久久 | 九九视频网| 亚洲 av网站| 亚洲国产精品成人女人久久 | 免费三级a| 丁香六月天婷婷 | 免费看的黄色小视频 | 超碰在线最新网址 | 97狠狠干 | 国产手机av在线 | 黄色在线观看免费网站 | 波多野结衣视频一区二区 | 国产一级免费视频 | 成年人视频在线免费观看 | 久久久精品午夜 | 国产精品 欧美 日韩 | 在线免费观看黄色小说 | 最新三级在线 | 成人免费视频观看 | 91麻豆精品国产91久久久更新时间 | 精品久久久久久久久久 | 日韩视频在线观看视频 | 久久免费片 | 天天透天天插 | 最近中文字幕mv免费高清在线 | 欧美日韩综合在线观看 | 国产高清不卡av | 麻豆精品传媒视频 | 久久久这里有精品 | 99精品久久久久久久 | 免费亚洲片 | 中文伊人| 国产一级视屏 | 中文字幕电影高清在线观看 | 高清在线观看av | 成年人免费电影在线观看 | 337p西西人体大胆瓣开下部 | 亚洲视频在线看 | 国产在线视频一区二区 | 中文字幕在线久一本久 | 国产在线久久久 | 日韩精品 在线视频 | 永久免费在线 | 美女免费视频观看网站 | 午夜的福利 | 99精彩视频在线观看免费 | 成年人免费看的视频 | 激情综合网五月婷婷 | 91精品国产99久久久久久红楼 | 国产精品成人品 | 亚洲精品免费在线 | 久久国产乱 | 亚洲精品视频一 | 日韩精品久久久久久 | 精品久久久久久久久久 | 国产又粗又猛又爽又黄的视频免费 | 91热精品 | 欧美色图东方 | 99久久精品国产观看 | 精品国产一区二区三区男人吃奶 | 五月天综合婷婷 | 麻豆91在线观看 | 九九热av| 97超碰中文字幕 | 超碰精品在线观看 | 丝袜少妇在线 | 精品久久1| 精品免费视频. | 男女男视频 | 成人av影视观看 | 人人草人人草 | 国产精品永久免费在线 | 欧美国产高清 | 成人黄色短片 | 在线国产日韩 | 免费在线国产 | 一区二区中文字幕在线观看 | 免费色婷婷| 国产不卡精品 | 美女国产| av高清一区二区三区 | 久久精品视频在线看 | 亚洲九九精品 | 婷婷中文字幕在线观看 | 麻花豆传媒mv在线观看网站 | 精品久久久久久久久中文字幕 | 精品人人爽 | 免费在线观看一区二区三区 | 久草精品视频在线看网站免费 | 久久精品视频中文字幕 | 久久人人爽人人片av | 国产中文视 | 亚洲国产精品免费 | 成人免费视频视频在线观看 免费 | 日韩免费精品 | 91爱在线| 91九色网站| 伊人午夜 | 欧美日韩精品在线观看 | 91av官网 | 国产精品一区二区你懂的 | 国产黄色片在线免费观看 | 婷婷99| 婷婷免费在线视频 | 五月激情五月激情 | 亚洲久草在线 | 国产精品porn | 99精品免费久久久久久久久 | 成人丁香花 | 91资源在线免费观看 | 丰满少妇在线观看网站 | 国产视频一| 91网址在线看| 九九三级毛片 | 成人cosplay福利网站 | 日韩欧美黄色网址 | 伊人永久 | 精品国产乱码久久久久久1区二区 | 国产精品亚洲视频 | 伊人在线视频 | 九九热在线精品视频 | 亚洲精品在线免费观看视频 | 在线观看中文字幕2021 | 精品美女久久久久 | 免费人成网ww44kk44 | 在线国产视频观看 | 麻豆精品在线 | 亚洲精品中文字幕在线 | 91入口在线观看 | 探花视频免费观看高清视频 | 午夜体验区 | 狠狠色丁香久久婷婷综 | 91亚色视频| 国产在线小视频 | 一区二区视频电影在线观看 | 字幕网av| 91大神在线观看视频 | 91高清免费在线观看 | 久草网在线视频 | 久久99精品久久久久久久久久久久 | 亚洲伊人天堂 | 国产伦精品一区二区三区免费 | 日韩欧美高清不卡 | 91免费高清观看 | 91人人澡人人爽人人精品 | 免费在线观看一级片 | 亚欧日韩av | 亚洲国产影院 | 久久线视频 | 日韩av中文在线观看 | 久久av影视 | 精品国产一区二区三区四区vr | 久久理论视频 | 九色最新网址 | 国产一卡二卡四卡国 | 久久黄色网址 | 夜夜夜夜猛噜噜噜噜噜初音未来 | av免费福利 | 日韩大片免费观看 | 四虎国产精| 免费中午字幕无吗 | 99这里只有久久精品视频 | 97成人超碰 | 欧美日韩亚洲在线观看 | 亚洲欧美在线观看视频 | 亚洲成人免费在线观看 | 国产群p视频 | 91大片网站 | 99亚洲国产 | 国产91精品一区二区 | 有码中文在线 | 国产在线观看污片 | 99热九九这里只有精品10 | 国产精品mv在线观看 | 制服丝袜亚洲 | 91在线一区 | 欧美电影黄色 | 中文字幕在线播放一区 | 久久夜色精品国产欧美一区麻豆 | 国产精品国产毛片 | 九九热免费视频在线观看 | 91在线免费看片 | 伊人亚洲综合 | 天天操天天干天天插 | 毛片区| 天天玩天天操天天射 | 国产成在线观看免费视频 | 日韩一级理论片 | 福利视频一区二区 | 久久久久久久久久久网站 | 成人欧美亚洲 | 中文字幕在线观看一区 | bbw av| 久草免费新视频 | 久久久国产精品免费 | 久久夜色精品国产欧美乱 | 狠狠网站| 久久精品久久综合 | 国产精品永久免费观看 | 国产精品成人久久久 | 999成人网 | 婷婷电影在线观看 | 久久理伦片 | 日韩精品久久久久久 | 久久爱资源网 | 美女黄频在线观看 | 91麻豆精品国产午夜天堂 | 婷婷网站天天婷婷网站 | 俺要去色综合狠狠 | www..com毛片 | 久久精品79国产精品 | 国产精品永久免费观看 | 亚洲理论电影网 | 亚洲成a人片77777kkkk1在线观看 | 亚洲精品乱码白浆高清久久久久久 | 国产色视频123区 | 天天插伊人 | 99久久精品无码一区二区毛片 | 中文字幕资源在线观看 | 亚州av成人| 亚洲一区美女视频在线观看免费 | 国产精品视频区 | 亚洲国产精品人久久电影 | 日韩资源在线播放 | 波多野结衣网址 | 91精品免费 | 少妇搡bbbb搡bbb搡aa | 青青五月天 | 久草精品电影 | 奇人奇案qvod | 免费在线观看一级片 | 成人免费观看电影 | 午夜影院日本 | 色中射 | 成人高清在线观看 | 人人爽人人爽人人爽学生一级 | 狠狠天天 | 黄污在线看 | 国产精品麻豆视频 | www.com.日本一级 | 91精品久久久久久久久久久久久 | 婷婷激情av | 最近中文字幕在线 | 91超在线| 亚洲人人爱| 国产精品一区二区在线播放 | 欧美在线久久 | 精品9999 | 亚洲热视频 | 色婷婷成人网 | 久久久久久久久久久高潮一区二区 | 最近中文字幕大全 | 天天射综合网站 | 91豆花在线观看 | 亚洲人久久 | 免费黄色在线 | 91传媒免费在线观看 | 日日爽天天| 午夜神马福利 | 99在线高清视频在线播放 | 国产一区欧美二区 | 国产成人亚洲在线观看 | 日本精品中文字幕在线观看 | 国产精品一区二区三区在线播放 | 日本午夜免费福利视频 | 成人在线观看免费视频 | 免费国产一区二区 | 国产精品久久久久久久久免费看 | 999精品网 | 521色香蕉网站在线观看 | 亚洲黄色小说网 | 国产免费片 | 国产欧美综合在线观看 | 日日夜夜天天射 | 日韩精品免费一区 | 国产精品久久一区二区三区, | 黄色av影院| www.久久免费视频 | 97超碰在线久草超碰在线观看 | 在线欧美日韩 | 国产精品免费一区二区三区 | 午夜性福利 | 国产精品美女久久久久久网站 | 欧美午夜剧场 | 一级片免费观看视频 | 久久精品国亚洲 | av在线com | 日本中文字幕电影在线免费观看 | 91九色在线视频 | 婷久久 | 欧美网站黄色 | 亚洲黄色在线观看 | 免费亚洲视频在线观看 | 国产一级电影网 | 久久深爱网 | 四虎5151久久欧美毛片 | 干天天 | 黄污污网站 | 久操视频在线免费看 | 特黄色大片 | 中国一级特黄毛片大片久久 | 久久av高清 | 高清久久久久久 | 欧美国产日韩在线观看 | 一区二区三区四区免费视频 | 黄污网 | 天海冀一区二区三区 | 爱av在线网| 三级av中文字幕 | 97超碰色偷偷 | 精品免费一区 | 欧洲亚洲女同hd | 一区二区丝袜 | 超碰999 | 香蕉视频久久 | 日韩精品一区二区免费 | av丝袜制服 | www.久草.com | 婷婷精品在线 | 成人黄色片在线播放 | 亚洲精品午夜久久久久久久久久久 | 毛片.com| 国产裸体无遮挡 | 国产精品av免费在线观看 | 韩日av在线 | 久久久久久美女 | 国产精品视频全国免费观看 | 成人在线观看资源 | 四虎在线观看网址 | 婷婷播播网 | 91成年人在线观看 | 欧美二区视频 | 久久综合久久综合这里只有精品 | 香蕉视频国产在线观看 | 国产精品一区二区免费视频 | 成人免费色 | 国产精品久久久久久久久久白浆 | 超碰在线人人97 | 成人手机在线视频 | 久久国产精品久久久 | 最近中文国产在线视频 | 天天操天天干天天玩 | 久久精品三级 | 伊人国产女| 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 青青河边草观看完整版高清 | 精品在线免费观看 | 99热99热| 久久九九免费视频 | 久久综合五月天 | 国产精品精品国产色婷婷 | 免费看片成年人 | 天天操综合 | 国产精品短视频 | 久久久久久不卡 | 天天干婷婷| 看v片| 99精品在线 | 超碰97人人射妻 | 91成年视频 | 久热电影| wwwwwww黄 | 高清中文字幕av | 国产一区二区精品久久 | 国产一区影院 | 日韩欧美视频在线观看免费 | 六月丁香激情综合 | 日韩三区在线 | 日本三级不卡 | 黄色aa久久 | 51久久成人国产精品麻豆 | 亚洲国产中文在线观看 | 91精品一区二区三区久久久久久 | 99视屏| 免费在线一区二区三区 | 91免费网址| 亚洲经典中文字幕 | 久久的色| 99视 | 中文字幕免费高清在线 | 精品在线免费视频 | 精品国产亚洲日本 | av电影一区 | 黄色免费大全 | 98超碰人人 | 精品久久久久亚洲 | 久久久精品二区 | 激情一区二区三区欧美 | 成片免费观看视频大全 | 免费久久99精品国产婷婷六月 | 国产精品成人一区 | 久久伦理 | av中文在线影视 | 色妞久久福利网 | 91人人插| 在线观看资源 | 亚洲黄色app| 国产精品美乳一区二区免费 | 少妇高潮流白浆在线观看 | 欧美aaa级片 | 日韩久久久久久久久久久久 | 亚洲一级二级 | 国产精品va最新国产精品视频 | 国产丝袜| 久久国产精品视频观看 | 精品不卡视频 | 亚洲最新av在线网址 | 久久视频这里只有精品 | 免费亚洲视频 | 国产精品美女视频网站 | 欧美日一级片 | 亚洲国产电影在线观看 | 天天射天天干天天插 | 中文在线√天堂 | 欧美a在线看 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 国产精品va| 欧美日韩精品在线观看 | 美女久久视频 | 韩国中文三级 | 成人黄色毛片视频 | 亚洲视频分类 | 国产精品福利小视频 | 免费视频久久久久久久 | 国产韩国精品一区二区三区 | 高清不卡一区二区三区 | 国精产品999国精产品岳 | 超碰97中文 | 香蕉视频最新网址 | 亚洲午夜久久久久久久久久久 | 中文字幕日本特黄aa毛片 | 一区二区观看 | 中文字幕日韩高清 | 又紧又大又爽精品一区二区 | 一区二区丝袜 | 中国一级片在线观看 | 欧美一区二区三区激情视频 | 国产原创av片 | 久久婷婷一区二区三区 | 精品国产精品国产偷麻豆 | 国产亚洲精品久久久久久电影 | 日韩伦理片一区二区三区 | 黄色精品国产 | 亚洲视频一区二区三区在线观看 | 久久免费a| 不卡视频国产 | 欧美日韩亚洲在线观看 | 在线观看色视频 | 国产一级做a爱片久久毛片a | 在线视频第一页 | 国产99视频在线观看 | 久久精品国产一区二区电影 | 国产精品久久久久久久av电影 | 色偷偷av男人天堂 | 欧美日韩aa | 色播亚洲婷婷 | 免费观看国产精品 | 麻豆91精品视频 | 美女视频黄的免费的 | 欧美日韩亚洲第一页 | 亚洲经典精品 | 国产午夜精品免费一区二区三区视频 | 国产视频2区 | 久久久亚洲电影 | av永久网址| 国产中文字幕三区 | 一级a性色生活片久久毛片波多野 | 日韩精品视频免费专区在线播放 | 成人黄色电影视频 | 色婷在线 | 成人av电影在线 | 亚洲午夜久久久久 | 亚洲午夜精品久久久久久久久久久久 | 黄网站大全 | 国产黄视频在线观看 | 欧美亚洲国产一卡 | 婷婷色婷婷 | 成人日韩av | 国产精品久久久久久久久久直播 | 日韩羞羞 | 日韩电影黄色 | 天天干天天色2020 | 99精品免费视频 | 成人一级 | 亚洲午夜精 | 91精品国产成人www | 久久国产亚洲精品 | 天天综合视频在线观看 | 人交video另类hd | 欧美精品你懂的 | 激情网第四色 | 免费高清在线观看成人 | 99久高清在线观看视频99精品热在线观看视频 | 狠狠的日日 | 国产主播99 | 久久久免费高清视频 | 欧美最猛性xxxxx(亚洲精品) | 国产精品自在线拍国产 | 久草av在线播放 | 国产精品理论片在线播放 | 久久国产精品视频 | 91日韩在线| 97国产超碰在线 | 亚洲va在线va天堂va偷拍 | 欧美成人影音 | 国产久视频 | 91免费日韩 | 精品影院一区二区久久久 | 高清免费在线视频 | 日本久久免费电影 | 国产精品99久久久久的智能播放 | 国产自产在线视频 | 久久理论片 | 精品一区二区免费在线观看 | 五月婷婷开心 | 亚洲少妇天堂 | 99爱精品视频 | 国产福利一区二区在线 |