3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

nlp-with-transformers系列-04_多语言命名实体识别

發(fā)布時間:2023/12/4 综合教程 29 生活家
生活随笔 收集整理的這篇文章主要介紹了 nlp-with-transformers系列-04_多语言命名实体识别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

到本章為止,我們已經(jīng)使用Transformers模型來解決英文語料的NLP任務,但如果我們語料是用Greek, Swahili或者Klingon等語言組成,現(xiàn)在怎么辦? 一種方法是在Hugging Face Hub上搜索合適的預訓練語言模型,并在手頭的任務上對其進行微調。 然而,這些預訓練的模型往往只存在于像德語、俄語或普通話這樣的 "豐富資源 "的語言,這些語言有大量的網(wǎng)絡文本可供預訓練。 當語料庫是多語言的時候,另一個常見的挑戰(zhàn)出現(xiàn)了,在產(chǎn)品化環(huán)境中維護多個單語模型對我們以及工程團隊來說是沒有樂趣的。

幸運的是,有一類多語言Transformers前來救場。 與BERT一樣,這些模型使用遮蔽語言模型作為預訓練目標,在一百多種語言的語料上聯(lián)合訓練的。 通過對多種語言的巨大語料庫進行預訓練,這些多語言Transformers能夠實現(xiàn)零距離的跨語言遷移。 這意味著,在一種語言上經(jīng)過微調的模型可以應用于其他語言,而不需要任何進一步的訓練! 這也使得這些模型非常適合于 “code-switching”,即說話者在一次對話中交替使用兩種或更多的語言或方言。

在本章中,我們將探討如何對一個名為XLM-RoBERTa的單一Transformers模型(在第三章中介紹)進行微調,以便在幾種語言中進行命名實體識別(NER)。 正如我們在第一章中所看到的,NER是一項常見的NLP任務,用于識別文本中的實體,如人物、組織或地點。 這些實體可用于各種應用,如從公司文件中獲得關鍵信息,提高搜索引擎的質量,或只是從語料庫中建立一個結構化數(shù)據(jù)庫。

XLM-RoBERTa 是 RoBERTa 的多語言版本,它在包含 100 種語言的 2.5TB 過濾后的 CommonCrawl 數(shù)據(jù)上進行了預訓練。

在本章中假設我們要為一個位于瑞士的客戶進行NER,有四種國家語言(英語通常作為它們之間的橋梁), 我們首先要為這個問題獲得一個合適的多語言語料庫。

溫馨提示

零樣本遷移或零樣本學習通常是指在一組標簽上訓練一個模型,然后在另一組標簽上對其進行評估的任務。 在Transformers的背景下,零樣本學習也可以指像GPT-3這樣的語言模型在下游任務上被評估,而它甚至沒有被微調過的情況。

數(shù)據(jù)集

在本章中,我們將使用多語言編碼器的跨語言TRansfer評估(XTREME)基準的一個子集,稱為WikiANN或PAN-X。 該數(shù)據(jù)集由多種語言的維基百科文章組成,包括瑞士最常用的四種語言。 德語(62.9%)、法語(22.9%)、意大利語(8.4%)和英語(5.9%)。 每篇文章都用LOC(地點)、PER(人物)和ORG(組織)標簽以 " inside-outside-beginning"(IOB2)的格式進行了注釋。 在這種格式中,B-前綴表示一個實體的開始,而屬于同一實體的連續(xù)標記被賦予I-前綴。 一個O標記表示該標記不屬于任何實體。 例如,下面這句話:

Jeff Dean is a computer scientist at Google in California would be labeled in IOB2 format as shown in Table 4-1.

要在XTREME中加載PAN-X子集之一,我們需要知道哪種數(shù)據(jù)集配置要傳遞給load_dataset()函數(shù)。 每當你處理一個有多個域的數(shù)據(jù)集時,你可以使用get_dataset_config_names()函數(shù)來找出哪些子集可用:

from datasets import get_dataset_config_names 
xtreme_subsets = get_dataset_config_names("xtreme") 
print(f"XTREME has {len(xtreme_subsets)} configurations") 
XTREME has 183 configurations

我們可以看到,那是一個很全的配置! 我們縮小搜索范圍,只尋找以 "PAN "開頭的配置:

panx_subsets = [s for s in xtreme_subsets if s.startswith("PAN")]
panx_subsets[:3] 
['PAN-X.af', 'PAN-X.ar', 'PAN-X.bg']

到此為止,我們已經(jīng)確定了PAN-X子集的語法, 每個語言都有一個兩個字母的后綴,似乎是一個ISO 639-1語言代碼。 這意味著,為了加載德語語料庫,我們將de代碼傳遞給load_dataset()的name參數(shù),如下所示:

from datasets import load_dataset 
load_dataset("xtreme", name="PAN-X.de")

為了制作一個真實的瑞士語料庫,我們將根據(jù)口語比例對PAN-X的德語(de)、法語(fr)、意大利語(it)和英語(en)語料庫進行采樣。 這將造成語言的不平衡,這在現(xiàn)實世界的數(shù)據(jù)集中是非常常見的,由于缺乏精通該語言的領域專家,獲取少數(shù)語言的標注實例可能會很昂貴。 這個不平衡的數(shù)據(jù)集將模擬多語言應用工作中的常見情況,我們將看到我們如何建立一個對所有語言都有效的模型。

為了跟蹤每一種語言,讓我們創(chuàng)建一個Python defaultdict,將語言代碼作為鍵,將DatasetDict類型的PAN-X語料庫作為值:

from collections import defaultdict 
from datasets import DatasetDict 
langs = ["de", "fr", "it", "en"] 
fracs = [0.629, 0.229, 0.084, 0.059] 
# Return a DatasetDict if a key doesn't exist 
panx_ch = defaultdict(DatasetDict) 
for lang, frac in zip(langs, fracs): # Load monolingual corpus ds = load_dataset("xtreme", name=f"PAN-X.{lang}") # Shuffle and downsample each split according to spoken proportion for split in ds: panx_ch[lang][split] = ( ds[split] .shuffle(seed=0) .select(range(int(frac * ds[split].num_rows))))

在這里,我們使用shuffle()方法來確保我們不會意外地偏離我們的數(shù)據(jù)集拆分,而select()允許我們根據(jù)fracs中的值對每個語料庫進行欠采樣。 讓我們通過訪問Dataset.num_rows屬性來看看我們在訓練集中每個語言有多少個例子:

import pandas as pd 
pd.DataFrame({lang: [panx_ch[lang]["train"].num_rows] for lang in langs}, index=["Number of training examples"])

根據(jù)設計,我們在德語中的例子比其他所有語言的總和還要多,所以我們將以德語為起點,對法語、意大利語和英語進行Zeroshot跨語言轉移。 讓我們檢查一下德語語料庫中的一個例子:

element = panx_ch["de"]["train"][0] 
for key, value in element.items(): print(f"{key}: {value}") 
langs: ['de', 'de', 'de', 'de', 'de', 'de', 'de', 'de', 'de', 'de', 'de', 'de'] 
ner_tags: [0, 0, 0, 0, 5, 6, 0, 0, 5, 5, 6, 0] 
tokens: ['2.000', 'Einwohnern', 'an', 'der', 'Danziger', 'Bucht', 'in', 'der', 'polnischen', 'Woiwodschaft', 'Pommern', '.']

與我們之前遇到的數(shù)據(jù)集對象一樣,我們的例子中的鍵對應于Arrow表中的列名,而值則表示每一列中的條目。 特別是,我們看到ner_tags列對應于每個實體與一個類ID的映射。 這樣看起來有點麻煩,接下來我們用熟悉的LOC、PER和ORG標簽創(chuàng)建一個新列。 要做到這一點,首先要注意的是,我們的數(shù)據(jù)集對象有一個特征屬性,指定與每一列相關的基礎數(shù)據(jù)類型:

for key, value in panx_ch["de"]["train"].features.items(): print(f"{key}: {value}") 
tokens: Sequence(feature=Value(dtype='string', id=None), length=-1, id=None)
ner_tags: Sequence(feature=ClassLabel(num_classes=7, names=['O', 'B-PER', 'I-PER', 'B-ORG', 'I-ORG', 'B-LOC', 'I-LOC'], names_file=None, id=None), length=-1, id=None) 
langs: Sequence(feature=Value(dtype='string', id=None), length=-1, id=None)

序列類指定該字段包含一個特征列表,在ner_tags的情況下,它對應于ClassLabel特征列表。 讓我們從訓練集中挑出這個特征,如下:

tags = panx_ch["de"]["train"].features["ner_tags"].feature 
print(tags) 
ClassLabel(num_classes=7, names=['O', 'B-PER', 'I-PER', 'B-ORG', 'I-ORG', 'B-LOC', 'I-LOC'], names_file=None, id=None)

我們可以使用第二章中遇到的ClassLabel.int2str()方法,在我們的訓練集中為每個標簽創(chuàng)建一個帶有類名的新列。 我們將使用map()方法返回一個dict,其鍵對應于新的列名,其值是一個類名的列表:

def create_tag_names(batch): return {"ner_tags_str": [tags.int2str(idx) for idx in batch["ner_tags"]]} 
panx_de = panx_ch["de"].map(create_tag_names)

現(xiàn)在我們有了人類可讀格式的標簽,讓我們看看訓練集中第一個例子的標記和標簽是如何對齊的:

de_example = panx_de["train"][0] 
pd.DataFrame([de_example["tokens"], de_example["ner_tags_str"]], ['Tokens', 'Tags'])

LOC標簽的存在是有意義的,因為句子 "2,000 Einwohnern an der Danziger Bucht in der polnischen Woiwodschaft Pommern "在英語中是指 “波蘭波美拉尼亞省格但斯克灣的2,000名居民”,而格但斯克灣是波羅的海的一個海灣,而 "voivodeship "對應的是波蘭的一個州。

作為快速檢查,我們沒有考慮在標簽中出現(xiàn)任何不尋常的不平衡,讓我們計算每個實體在每個子集中的頻率:

from collections import Counter 
split2freqs = defaultdict(Counter) 
for split, dataset in panx_de.items(): for row in dataset["ner_tags_str"]: for tag in row: if tag.startswith("B"): tag_type = tag.split("-")[1] split2freqs[split][tag_type] += 1 pd.DataFrame.from_dict(split2freqs, orient="index")

這看起來不錯–PER、LOC和ORG頻率的分布在每個分組中大致相同,因此驗證集和測試集應該能夠很好地衡量我們的NER抽取器的識別能力。 接下來,讓我們看看幾個流行的多語言Transformers,以及如何調整它們來處理我們的NER任務。

多語言Transformers

多語言Transformers涉及類似于單語言Transformers的架構和訓練程序,只是用于預訓練的語料庫由多種語言的文件組成。 這種方法的一個顯著特點是,盡管沒有收到區(qū)分語言的明確信息,但所產(chǎn)生的語言表征能夠在各種下游任務中很好地跨語言進行概括。 在某些情況下,這種進行跨語言轉移的能力可以產(chǎn)生與單語言模型相競爭的結果,這就規(guī)避了為每一種語言訓練一個模型的需要。

為了衡量NER的跨語言轉移的進展,CoNLL2002和CoNLL-2003數(shù)據(jù)集通常被用作英語、荷蘭語、西班牙語和德語的基準。 這個基準由新聞文章組成,其標注的LOC、PER和ORG類別與PAN-X相同,但它包含一個額外的MISC標簽,用于標注不屬于前三組的雜項實體。 多語言Transformers模型通常以三種不同的方式進行評估:

en
在英語訓練數(shù)據(jù)上進行微調,然后在每種語言的測試集中進行評估。

every
在單語測試數(shù)據(jù)上進行微調和評估,以衡量perlanguage的性能。

all

在所有的訓練數(shù)據(jù)上進行微調,在每種語言的測試集上進行評估。

我們將對我們的NER任務采取類似的評估策略,但首先我們需要選擇一個模型來評估。 最早的多語言Transformers之一是mBERT,它使用與BERT相同的架構和預訓練目標,但在預訓練語料庫中加入了許多語言的維基百科文章。 從那時起,mBERT已經(jīng)被XLM-RoBERTa(簡稱XLM-R)所取代,所以這就是我們在本章要考慮的模型。

正如我們在第3章中所看到的,XLM-R只使用MLM作為100種語言的預訓練目標,但與它的前輩相比,它的預訓練語料庫的規(guī)模巨大,因此而與眾不同。 每種語言的維基百科轉儲和2.5TB的網(wǎng)絡通用抓取數(shù)據(jù)。 這個語料庫比早期模型所使用的語料庫要大幾個數(shù)量級,并為像緬甸語和斯瓦希里語這樣只有少量維基百科文章的低資源語言提供了顯著的信號提升。

該模型名稱中的RoBERTa部分是指預訓練方法與單語RoBERTa模型相同。

RoBERTa的開發(fā)者對BERT的幾個方面進行了改進,特別是完全取消了下一句話的預測任務。 XLM-R還放棄了XLM中使用的語言嵌入,使用SentencePiece直接對原始文本進行標記。 除了多語言性質,XLM-R和RoBERTa之間的一個顯著區(qū)別是各自詞匯表的規(guī)模。 250,000個標記對55,000個!

XLM-R是多語言NLU任務的最佳選擇。 在下一節(jié)中,我們將探討它如何在多種語言中有效地進行標記化。

進一步了解Tokenization

XLM-R沒有使用WordPiece標記器,而是使用一個名為SentencePiece的標記器,該標記器是在所有一百種語言的原始文本上訓練出來的。 為了感受一下SentencePiece與WordPiece的比較,讓我們以通常的方式用Transformers加載BERT和XLM-R標記器:

from transformers import AutoTokenizer 
bert_model_name = "bert-base-cased" 
xlmr_model_name = "xlm-roberta-base" 
bert_tokenizer = AutoTokenizer.from_pretrained(bert_model_name) 
xlmr_tokenizer = AutoTokenizer.from_pretrained(xlmr_model_name)

通過對一小段文字的編碼,我們也可以檢索到每個模型在預訓練時使用的特殊標記:

text = "Jack Sparrow loves New York!" 
bert_tokens = bert_tokenizer(text).tokens() 
xlmr_tokens = xlmr_tokenizer(text).tokens()


這里我們看到,XLM-R使用< s>和< /s>來表示一個序列的開始和結束,而不是BERT用于句子分類任務的[CLS]和[SEP]標記。 這些令牌是在標記化的最后階段添加的,我們接下來會看到。

Tokenizer流水線

到目前為止,我們已經(jīng)將標記化作為一個單一的操作,將字符串轉換為我們可以通過模型傳遞的整數(shù)。 這并不完全準確,如果我們仔細觀察,可以發(fā)現(xiàn)它實際上是一個完整的處理流水線,通常由四個步驟組成,如圖4-1所示。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-IFKDItpU-1647525716286)(images/chapter4/image-20220213161546813.png)]

讓我們仔細看看每個處理步驟,并通過 "杰克-斯派洛愛紐約!"這個例子說明它們的效果:

Normalization

這一步對應于你對原始字符串進行的一系列操作,以使其 “更干凈”。 Unicode規(guī)范化是另一種常見的規(guī)范化操作,由許多標記器應用,以處理同一字符經(jīng)常存在各種寫法的事實。 這可以使 "相同 "字符串的兩個版本(即具有相同的抽象字符序列)看起來不同。 像NFC、NFD、NFKC和NFKD這樣的Unicode規(guī)范化方案用標準形式取代了書寫同一字符的各種方式。 規(guī)范化的另一個例子是小寫字母。 如果預期模型只接受和使用小寫字母,那么可以用這種技術來減少它所需要的詞匯量的大小。 經(jīng)過規(guī)范化處理后,我們的例子字符串將看起來像 “Jack Sparrow loves new york!”。

Pretokenization

這一步將文本分割成更小的對象,為訓練結束時的標記提供一個上限。 一個好的方法是,預編碼器將把你的文本分成 “詞”,而你的最終標記將是這些詞的一部分。 對于允許這樣做的語言(英語、德語和許多印歐語系語言),字符串通常可以在空白處和標點符號上被分割成單詞。 例如,這一步可能會改變我們的[“jack”, “sparrow”, “l(fā)oves”, “new”, “york”, “!”]。 然后,在流水線的下一個步驟中,這些詞被更簡單地用字節(jié)對編碼(BPE)或單字算法分割成子字。 然而,分割成 "字 "并不總是一個微不足道的確定操作,甚至不是一個有意義的操作。 例如,在中文、日文或韓文等語言中,在語義單位(如印歐語詞)中對符號進行分組可以是一種非確定性的操作,有幾個同樣有效的分組。 在這種情況下,最好不要對文本進行預編碼,而是使用特定的語言庫進行預編碼。

Tokenizer model

一旦輸入文本被規(guī)范化和預標記化,標記化器就會在單詞上應用一個子詞分割模型。這是流水線的一部分,需要在你的語料庫上進行訓練(如果你使用的是預訓練的標記器,則是已經(jīng)訓練過的)。該模型的作用是將詞分成子詞,以減少詞匯量的大小,并試圖減少詞匯外標記的數(shù)量。存在幾種子詞標記化算法,包括BPE、Unigram和WordPiece。例如,我們運行的例子在應用標記化模型后可能看起來像[jack, spa, rrow, loves, new, york, !] 。請注意,此時我們不再有一個字符串的列表,而是一個整數(shù)的列表(輸入ID);為了保持這個例子的說明性,我們保留了單詞,但去掉了引號以表示轉換。

Postprocessing

這是標記化流水線的最后一步,在這一步中,可以對標記列表進行一些額外的轉換–例如,在輸入的標記索引序列的開頭或結尾添加特殊標記。例如,一個BERT風格的標記器會添加分類和分隔符。[CLS, jack, spa, rrow, loves, new, york, !, SEP]。這個序列(請記住,這將是一個整數(shù)序列,而不是你在這里看到的標記)然后可以被送入模型。

回到我們對XLM-R和BERT的比較,我們現(xiàn)在明白SentencePiece在后處理步驟中添加了< s>和< /s>,而不是[CLS]和[SEP](作為慣例,我們將在圖形說明中繼續(xù)使用[CLS]和[SEP])。讓我們回到SentencePiece標記器,看看它的特殊之處。

SentencePiece Tokenizer

SentencePiece標記器是基于一種稱為Unigram的子詞分割,并將每個輸入文本編碼為Unicode字符序列。這最后一個特點對多語言語料庫特別有用,因為它允許SentencePiece對口音、標點符號以及許多語言(如日語)沒有空白字符的事實不加考慮。SentencePiece的另一個特點是空白字符被分配到Unicode符號U+2581,即▁字符,也叫下四分之一塊字符。這使得SentencePiece能夠在沒有歧義的情況下對一個序列進行去標記,而不需要依賴特定語言的預標記器。例如,在我們上一節(jié)的例子中,我們可以看到WordPiece丟失了 "York “和”!"之間沒有空白的信息。相比之下,SentencePiece保留了標記化文本中的空白,因此我們可以毫無歧義地轉換回原始文本:

"".join(xlmr_tokens).replace(u"\u2581", " ")
'<s> Jack Sparrow loves New York!</s>'

現(xiàn)在我們了解了SentencePiece的工作原理,讓我們看看如何將我們的簡單例子編碼成適合NER的形式。首先要做的是給預訓練的模型加載一個標記分類頭。但我們不是直接從Transformers中加載這個頭,而是自己建立它! 通過深入研究Transformers API,我們只需幾個步驟就可以做到這一點。

命名實體識別的Transformers

在第2章中,我們看到,對于文本分類,BERT使用特殊的[CLS]標記來表示整個文本序列。然后,該表示法通過一個全連接或dense層來輸出所有離散標簽值的分布,如圖4-2所示。

BERT和其他僅有編碼器的變換器對NER采取了類似的方法,只是每個單獨的輸入標記的表示被送入同一個全連接層以輸出標記的實體。由于這個原因,NER經(jīng)常被看作是一個標記分類任務。這個過程看起來像圖4-3中的圖表。

到目前為止,情況還不錯,但是在標記分類任務中,我們應該如何處理子詞呢?例如,圖4-3中的名字 "Christa "被標記為子詞 "Chr "和 “##ista”,那么哪一個子詞應該被賦予B-PER標簽呢?

在BERT的論文中,作者將這個標簽分配給了第一個子詞(在我們的例子中是 “Chr”),而忽略了后面的子詞("##ista")。這就是我們在這里采用的慣例,我們將用IGN來表示被忽略的子詞。我們以后可以在后處理步驟中輕松地將第一個子詞的預測標簽傳播到后面的子詞。我們可以 也可以選擇通過給它分配一個B-LOC標簽的副本來包括 "##ista "子詞的表示,但這違反了IOB2的格式。

幸運的是,我們在BERT中看到的所有架構方面都延續(xù)到了XLM-R,因為它的架構是基于RoBERTa的,與BERT完全相同。接下來我們將看到Transformers是如何通過微小的修改來支持許多其他任務的。

Transformers 模型類的剖析

Transformers 是圍繞每個架構和任務的專用類來組織的。與不同任務相關的模型類是根據(jù)For慣例命名的,當使用AutoModel類時,則是AutoModelFor。

然而,這種方法有其局限性,為了激勵深入了解Transformer API,請考慮以下情況。假設你有一個很好的想法,用一個Transformers 模型來解決一個你想了很久的NLP問題。因此,你安排了一次與老板的會議,并通過一個藝術性的PowerPoint演示文稿,推銷說如果你能最終解決這個問題,就能增加你部門的收入。你豐富多彩的演示和對利潤的談論給你留下了深刻印象,你的老板慷慨地同意給你一個星期的時間來建立一個概念驗證。對結果感到滿意,你馬上開始工作。你啟動了你的GPU并打開了一個筆記本。你執(zhí)行從transformers導入BertForTaskXY(注意,TaskXY是你想解決的假想任務),當可怕的紅色充滿你的屏幕時,你的臉色一下子變了。ImportError: cannot import name BertForTaskXY. 哦,不,沒有適合你的用例的BERT模型! 如果你必須自己實現(xiàn)整個模型,你怎么能在一周內完成這個項目呢!?你甚至應該從哪里開始?

不要驚慌! Transformers 的設計是為了使你能夠為你的特定使用情況輕松地擴展現(xiàn)有的模型。你可以從預訓練的模型中加載權重,并且你可以訪問特定任務的輔助函數(shù)。這讓你可以用很少的開銷為特定目標建立自定義模型。在本節(jié)中,我們將看到我們如何實現(xiàn)我們自己的自定義模型。

主體和頭部

使得Transformers 如此多才多藝的主要概念是將架構分成主體和頭部(正如我們在第一章中看到的)。我們已經(jīng)看到,當我們從預訓練任務切換到下游任務時,我們需要將模型的最后一層替換成適合該任務的一層。這最后一層被稱為模型頭;它是特定任務的部分。模型的其余部分被稱為主體;它包括與任務無關的標記嵌入和Transformers層。這種結構也反映在Transformers代碼中:模型的主體由BertModel或GPT2Model這樣的類來實現(xiàn),它返回最后一層的隱藏狀態(tài)。特定任務的模型,如BertForMaskedLM或BertForSequenceClassification使用基礎模型,并在隱藏狀態(tài)的基礎上添加必要的頭,如圖4-4所示。

正如我們接下來要看到的,這種主體和頭部的分離使我們能夠為任何任務建立一個定制的頭,并將其安裝在一個預訓練的模型之上即可。

為標記分類創(chuàng)建一個自定義模型

讓我們經(jīng)歷一下為XLM-R建立一個自定義的標記分類頭的練習。由于XLM-R使用與RoBERTa相同的模型架構,我們將使用RoBERTa作為基礎模型,但用XLM-R的特定設置進行增強。請注意,這是一個教育性練習,向你展示如何為你自己的任務建立一個自定義模型。對于標記分類,XLMRobertaForTokenClassification類已經(jīng)存在,你可以從Transformers導入。如果你愿意,你可以跳到下一節(jié),直接使用那個。

為了開始工作,我們需要一個數(shù)據(jù)結構來表示我們的XLM-R NER標記器。首先,我們需要一個配置對象來初始化模型,以及一個forward()函數(shù)來生成輸出。讓我們繼續(xù)建立我們的XLM-R類,用于標記分類:

import torch.nn as nn from transformers
import XLMRobertaConfig from transformers.modeling_outputs
import TokenClassifierOutput from transformers.models.roberta.modeling_roberta
import RobertaModel from transformers.models.roberta.modeling_roberta
import RobertaPreTrainedModel 
class XLMRobertaForTokenClassification( RobertaPreTrainedModel): config_class = XLMRobertaConfig def __init__(self, config): super().__init__(config) self.num_labels = config.num_labels# Load model body self.roberta = RobertaModel( config, add_pooling_layer = False)# Set up token classification head self.dropout = nn.Dropout(config.hidden_dropout_prob) self.classifier = nn.Linear(config.hidden_size, config.num_labels)# Load and initialize weights self.init_weights() def forward(self, input_ids = None, attention_mask = None, token_type_ids = None, labels = None, ** kwargs): #Use model body to get encoder representations outputs = self.roberta(input_ids, attention_mask = attention_mask,token_type_ids = token_type_ids, * * kwargs)# Apply classifier to encoder representation sequence_output =  self.dropout(outputs[0]) logits = self.classifier( sequence_output)# Calculate losses loss = Noneif labels is not None: loss_fct = nn.CrossEntropyLoss() loss =loss_fct(logits.view(-1, self.num_labels), labels.view(-1))# Return model output objectreturn TokenClassifierOutput(loss = loss, logits = logits, hidden_states = outputs.hidden_states, attentions =  outputs.attentions)

config_class確保我們在初始化一個新模型時使用標準的XLM-R設置。如果你想改變默認參數(shù),你可以通過覆蓋配置中的默認設置來實現(xiàn)。通過super()方法,我們調用RobertaPreTrainedModel類的初始化函數(shù)。這個抽象類處理初始化或加載預訓練的權重。然后我們加載我們的模型主體,也就是RobertaModel,并用我們自己的分類頭來擴展它,包括一個dropout和一個標準前饋層。注意,我們設置add_pooling_layer=False,以確保所有的隱藏狀態(tài)都被返回,而不僅僅是與[CLS]標記相關的一個。最后,我們通過調用從RobertaPreTrainedModel繼承的init_weights()方法來初始化所有權重,該方法將加載模型主體的預訓練權重,并隨機初始化我們標記分類頭的權重。

唯一要做的就是用forward()方法定義模型在前向傳遞中應該做什么。在前向傳遞過程中,數(shù)據(jù)首先通過模型主體被輸入。有許多輸入變量,但我們現(xiàn)在唯一需要的是input_ids 和 attention_mask。隱藏狀態(tài)是模型主體輸出的一部分,然后通過dropout和分類層進行反饋。如果我們在前向傳遞中也提供標簽,我們可以直接計算損失。如果有一個注意力掩碼,我們需要多做一點工作,以確保我們只計算未掩碼的標記的損失。最后,我們將所有的輸出包在一個TokenClassifierOutput對象中,允許我們訪問前幾章中熟悉的命名元組中的元素。

通過實現(xiàn)一個簡單類的兩個函數(shù),我們就可以建立我們自己的自定義Transformers模型。由于我們繼承了PreTrainedModel,我們可以立即獲得所有有用的Transformer工具,比如from_pretrained()! 讓我們來看看我們如何將預訓練的權重加載到我們的自定義模型中。

加載一個自定義模型

現(xiàn)在我們準備加載我們的標記分類模型。我們需要在模型名稱之外提供一些額外的信息,包括我們將用于標記每個實體的標簽,以及每個標簽與ID的映射,反之亦然。所有這些信息都可以從我們的tags變量中得到,作為一個ClassLabel對象,它有一個names屬性,我們可以用它來導出映射。

index2tag = {idx: tag for idx, tag in enumerate(tags.names)} 
tag2index = {tag: idx for idx, tag in enumerate(tags.names)}

我們將把這些映射和tags.num_classes屬性存儲在我們在第三章遇到的AutoConfig對象中。向from_pretrained()方法傳遞關鍵字參數(shù)會覆蓋默認值:

from transformers import AutoConfig 
xlmr_config = AutoConfig.from_pretrained(xlmr_model_name, num_labels=tags.num_classes, id2label=index2tag, label2id=tag2index)

AutoConfig類包含了一個模型的架構藍圖。當我們用AutoModel.from_pretrained(model_ckpt)加載一個模型時,與該模型相關的配置文件會自動下載。然而,如果我們想修改諸如 類或標簽名稱,那么我們可以先用我們想定制的參數(shù)加載配置。

現(xiàn)在,我們可以像往常一樣用帶有額外配置參數(shù)的from_pretrained()函數(shù)加載模型權重。注意,我們沒有在我們的自定義模型類中實現(xiàn)加載預訓練的權重;我們通過繼承RobertaPreTrainedModel免費獲得這個功能:

import torch device = torch.device("cuda" if torch.cuda.is_available() else "cpu") 
xlmr_model = (XLMRobertaForTokenClassification .from_pretrained(xlmr_model_name, config=xlmr_config) .to(device))

作為一個快速檢查,我們已經(jīng)正確地初始化了標記器和模型,讓我們在已知實體的小序列上測試預測:

input_ids = xlmr_tokenizer.encode(text, return_tensors="pt") 
pd.DataFrame([xlmr_tokens, input_ids[0].numpy()], index=["Tokens", "Input IDs"])

正如你在這里看到的,開始和結束標記分別被賦予0和2的ID。

最后,我們需要將輸入傳遞給模型,并通過獲取argmax來提取預測,以獲得每個標記最可能的類別:

outputs = xlmr_model(input_ids.to(device)).logits 
predictions = torch.argmax(outputs, dim=-1) 
print(f"Number of tokens in sequence: {len(xlmr_tokens)}") 
print(f"Shape of outputs: {outputs.shape}") Number of tokens in sequence: 10 
Shape of outputs: torch.Size([1, 10, 7])

這里我們看到對數(shù)的形狀是[batch_size, num_tokens, num_tags],每個標記在七個可能的NER標記中都有一個對數(shù)。通過對序列的枚舉,我們可以很快看到預訓練模型的預測:

preds = [tags.names[p] for p in predictions[0].cpu().numpy()] 
pd.DataFrame([xlmr_tokens, preds], index=["Tokens", "Tags"])

不出所料,我們的隨機權重的標記分類層還有很多不足之處;讓我們在一些標記的數(shù)據(jù)上進行微調,使其變得更好!在這之前,讓我們把前面的步驟封裝在以后使用的輔助函數(shù)中。在這樣做之前,讓我們把前面的步驟打包成一個輔助函數(shù),供以后使用:

def tag_text(text, tags, model, tokenizer):# Get tokens with special characters tokens = tokenizer(text).tokens() # Encode the sequence into IDs input_ids = xlmr_tokenizer(text, return_tensors="pt").input_ids.to(device) # Get predictions as distribution over 7 possible classes outputs = model(inputs)[0] # Take argmax to get most likely class per token predictions = torch.argmax(outputs, dim=2) # Convert to DataFrame preds = [tags.names[p] for p in predictions[0].cpu().numpy()] return pd.DataFrame([tokens, preds], index=["Tokens", "Tags"])

在我們訓練模型之前,我們還需要對輸入進行標記化,并準備好標簽。我們接下來會做這個。

將文本標記化以用于NER

現(xiàn)在我們已經(jīng)確定標記器和模型可以對單個例子進行編碼,我們的下一步是對整個數(shù)據(jù)集進行標記,以便我們可以將其傳遞給XLM-R模型進行微調。正如我們在第二章中所看到的,Datasets提供了一種快速的方法,用map()操作對數(shù)據(jù)集對象進行標記化。要實現(xiàn)這一點,請回憶一下,我們首先需要定義一個具有最小簽名的函數(shù):

function(examples: Dict[str, List]) -> Dict[str, List]

其中examples相當于數(shù)據(jù)集的一個片斷,例如panx_de[‘train’][:10]。由于XLM-R標記器為模型的輸入返回了輸入ID,我們只需要用注意力掩碼和標簽ID來增加這些信息,這些標簽編碼了與每個NER標記相關的標記信息。

按照Transformers文檔中的方法,讓我們看看這在我們的單一德語例子中是如何工作的,首先收集單詞和標簽作為普通列表:

words, labels = de_example["tokens"], de_example["ner_tags"]

接下來,我們對每個詞進行標記,并使用is_split_into_words參數(shù)來告訴標記器,我們的輸入序列已經(jīng)被分割成單詞:

tokenized_input = xlmr_tokenizer(de_example["tokens"], is_split_into_words=True) 
tokens = xlmr_tokenizer.convert_ids_to_tokens(tokenized_input["input_ids"]) 
pd.DataFrame([tokens], index=["Tokens"])

在這個例子中,我們可以看到標記器將 "Einwohnern "分成兩個子詞,"▁Einwohner "和 “n”。由于我們遵循的慣例是只有"▁Einwohner "應該與B-LOC標簽相關聯(lián),我們需要一種方法來掩蓋第一個子詞之后的子詞表示。幸運的是,tokenized_input是一個包含word_ids()函數(shù)的類,可以幫助我們實現(xiàn)這個目標:

word_ids = tokenized_input.word_ids() 
pd.DataFrame([tokens, word_ids], index=["Tokens", "Word IDs"])

在這里我們可以看到,word_ids已經(jīng)將每個子詞映射到單詞序列中的相應索引,所以第一個子詞"▁2.000 "被分配到索引0,而"▁Einwohner "和 "n "被分配到索引1(因為 "Einwohnern "是單詞中的第二個單詞)。我們還可以看到,像< s>和< /s>這樣的特殊標記被映射為無。讓我們把-100設為這些特殊標記和我們希望在訓練中屏蔽的子詞的標簽:

previous_word_idx = None 
label_ids = [] 
for word_idx in word_ids: if word_idx is None or word_idx == previous_word_idx: label_ids.append(-100) elif word_idx != previous_word_idx: label_ids.append(labels[word_idx]) previous_word_idx = word_idx 
labels = [index2tag[l] if l != -100 else "IGN" for l in label_ids] 
index = ["Tokens", "Word IDs", "Label IDs", "Labels"] 
pd.DataFrame([tokens, word_ids, label_ids, labels], index=index)

注意事項

為什么我們選擇-100作為屏蔽子詞表示的ID?原因是在PyTorch中,交叉熵損失類torch.nn.CrossEntropyLoss有一個名為ignore_index的屬性,其值為-100。這個指數(shù)在訓練過程中會被忽略,所以我們可以用它來忽略與連續(xù)子詞相關的標記。

就這樣了 我們可以清楚地看到標簽ID是如何與標記對齊的,所以讓我們通過定義一個包含所有邏輯的單一函數(shù),將其擴展到整個數(shù)據(jù)集:

def tokenize_and_align_labels(examples): tokenized_inputs = xlmr_tokenizer(examples["tokens"], truncation=True, is_split_into_words=True) labels = [] for idx, label in enumerate(examples["ner_tags"]): word_ids = tokenized_inputs.word_ids(batch_index=idx) previous_word_idx = None label_ids = [] for word_idx in word_ids: if word_idx is None or word_idx == previous_word_idx: label_ids.append(-100) else: label_ids.append(label[word_idx]) previous_word_idx = word_idx labels.append(label_ids) tokenized_inputs["labels"] = labels return tokenized_inputs

我們現(xiàn)在有了對每個分裂進行編碼所需的所有成分,所以讓我們寫一個我們可以迭代的函數(shù):

def encode_panx_dataset(corpus): return corpus.map(tokenize_and_align_labels, batched=True, remove_columns=['langs', 'ner_tags', 'tokens'])

將這個函數(shù)應用于DatasetDict對象,我們就可以得到每個分割的編碼數(shù)據(jù)集對象。讓我們用它來對我們的德語語料庫進行編碼:

panx_de_encoded = encode_panx_dataset(panx_ch["de"])

現(xiàn)在我們有一個模型和一個數(shù)據(jù)集,我們需要定義一個性能指標。

性能評估

評估NER模型與評估文本分類模型類似,通常報告精度、召回率和F-score的結果。唯一的微妙之處在于,一個實體的所有單詞都需要被正確預測,這樣才能算作正確的預測。幸運的是,有一個叫seqeval的漂亮庫,是為這類任務設計的。例如,給定一些占位的NER標簽和模型預測,我們可以通過seqeval的classification_report()函數(shù)來計算度量:

from seqeval.metrics import classification_report 
y_true = [["O", "O", "O", "B-MISC", "I-MISC", "I-MISC", "O"], ["B-PER", "I-PER", "O"]] 
y_pred = [["O", "O", "B-MISC", "I-MISC", "I-MISC", "I-MISC", "O"], ["B-PER", "I-PER", "O"]] 
print(classification_report(y_true, y_pred))

正如我們所看到的,seqeval期望預測和標簽為列表,每個列表對應于我們驗證集或測試集中的一個例子。為了在訓練過程中整合這些指標,我們需要一個函數(shù)來獲取模型的輸出并將其轉換為seqeval所期望的列表。下面的函數(shù)通過確保我們忽略與后續(xù)子詞相關的標簽ID來完成這個任務:

import numpy as np 
def align_predictions(predictions, label_ids): preds = np.argmax(predictions, axis=2) batch_size, seq_len = preds.shape labels_list, preds_list = [], [] for batch_idx in range(batch_size): example_labels, example_preds = [], [] for seq_idx in range(seq_len): # Ignore label IDs = -100 if label_ids[batch_idx, seq_idx] != -100: example_labels.append(index2tag[label_ids[batch_idx] [seq_idx]]) example_preds.append(index2tag[preds[batch_idx][seq_idx]]) labels_list.append(example_labels) preds_list.append(example_preds) return preds_list, labels_list

有了性能指標,我們就可以開始實際訓練模型了。

微調 XLM-RoBERTa

我們現(xiàn)在有了對我們的模型進行微調的所有材料!我們的第一個策略是在PAN-X的德語子集上對我們的基本模型進行微調,然后評估它在法語和意大利語上的零散跨語言表現(xiàn)。我們的第一個策略是在PAN-X的德語子集上微調我們的基礎模型,然后評估它在法語、意大利語和英語上的零起點跨語言性能。像往常一樣,我們將使用變形金剛訓練器來處理我們的訓練循環(huán),所以首先我們需要使用TrainingArguments類來定義訓練屬性:

from transformers import TrainingArguments 
num_epochs = 3 
batch_size = 24 
logging_steps = len(panx_de_encoded["train"]) // batch_size 
model_name = f"{xlmr_model_name}-finetuned-panx-de" 
training_args = TrainingArguments( output_dir=model_name, log_level="error", num_train_epochs=num_epochs, per_device_train_batch_size=batch_size, per_device_eval_batch_size=batch_size, evaluation_strategy="epoch", save_steps=1e6, weight_decay=0.01, disable_tqdm=False, logging_steps=logging_steps, push_to_hub=True)

在這里,我們在每個歷時結束時評估模型在驗證集上的預測,調整權重衰減,并將save_steps設置為一個大數(shù)字,以禁用檢查點,從而加快訓練速度。

這也是確保我們登錄到Hugging Face Hub的一個好時機(如果你在終端工作,你可以執(zhí)行huggingface-cli login命令)。

from huggingface_hub 
import notebook_login notebook_login()

我們還需要告訴Trainer如何在驗證集上計算指標,所以在這里我們可以使用之前定義的align_predictions()函數(shù),以seqeval需要的格式提取預測和標簽,以計算F-score:

from seqeval.metrics import f1_score 
def compute_metrics(eval_pred): y_pred, y_true = align_predictions(eval_pred.predictions, eval_pred.label_ids)return {"f1": f1_score(y_true, y_pred)}

最后一步是定義一個數(shù)據(jù)整理器,這樣我們就可以把每個輸入序列填充到一個批次的最大序列長度。Transformers提供了一個 專用于標記分類的數(shù)據(jù)整理器,它將與輸入一起填充標簽。

from transformers import DataCollatorForTokenClassification 
data_collator = DataCollatorForTokenClassification(xlmr_tokenizer)

填充標簽是必要的,因為與文本分類任務不同,標簽也是序列。這里的一個重要細節(jié)是,標簽序列被填充了-100的值,正如我們所看到的,PyTorch損失函數(shù)會忽略這個值。

我們將在本章中訓練幾個模型,所以我們將通過創(chuàng)建model_init()方法來避免為每個訓練者初始化一個新的模型。這個方法會加載一個未訓練過的模型,并在調用train()的開始階段被調用:

def model_init(): return (XLMRobertaForTokenClassification .from_pretrained(xlmr_model_name, config=xlmr_config) .to(device))

現(xiàn)在我們可以將所有這些信息連同編碼的數(shù)據(jù)集一起傳遞給Trainer:

from transformers import Trainer 
trainer = Trainer(model_init=model_init, args=training_args, data_collator=data_collator, compute_metrics=compute_metrics, train_dataset=panx_de_encoded["train"], eval_dataset=panx_de_encoded["validation"], tokenizer=xlmr_tokenizer)

然后按如下方式運行訓練循環(huán),并將最終模型推送給Hub:

trainer.train() trainer.push_to_hub(commit_message="Training completed!")

這些F1分數(shù)對于一個NER模型來說是相當不錯的。為了確認我們的模型按預期工作,讓我們在我們的簡單例子的德語翻譯上測試它:

text_de = "Jeff Dean ist ein Informatiker bei Google in Kalifornien" 
tag_text(text_de, tags, trainer.model, xlmr_tokenizer)

上圖可以看出模型是有效的! 但是,我們永遠不應該根據(jù)一個單一的例子而對性能過于自信。相反,我們應該對模型的錯誤進行適當和細致的驗證。在下一節(jié)中,我們將探討如何在NER任務中做到這一點。

錯誤分析

在我們深入研究XLM-R的多語言方面之前,讓我們花點時間調查一下我們模型的錯誤。正如我們在第二章中所看到的,在訓練和調試變換器(以及一般的機器學習模型)時,對你的模型進行徹底的錯誤分析是最重要的方面之一。有幾種失敗模式,在這些模式下,可能看起來模型表現(xiàn)良好,而實際上它有一些嚴重的缺陷。訓練可能失敗的例子包括:

  • 我們可能不小心掩蓋了太多的標記,也掩蓋了一些我們的標簽,從而得到一個真正有希望的損失下降。

  • compute_metrics()函數(shù)可能有一個錯誤,高估了真實的性能。

  • 我們可能會把NER中的零類或O類實體作為一個正常的類,這將嚴重歪曲準確率和F-score,因為它是大多數(shù)人的類,差距很大。

當模型的表現(xiàn)比預期的要差得多時,查看錯誤可以產(chǎn)生有用的見解,并揭示出僅通過查看代碼很難發(fā)現(xiàn)的錯誤。而且,即使模型表現(xiàn)良好,代碼中沒有錯誤,錯誤分析仍然是了解模型的優(yōu)點和缺點的有用工具。當我們在生產(chǎn)環(huán)境中部署模型時,這些方面我們始終需要牢記。

對于我們的分析,我們將再次使用我們所掌握的最強大的工具之一,那就是查看損失最大的驗證例子。我們可以重新使用我們在第二章中為分析序列分類模型而建立的大部分函數(shù),但是我們現(xiàn)在要計算樣本序列中每個標記的損失。

讓我們定義一個我們可以應用于驗證集的方法:

from torch.nn.functional import cross_entropy 
def forward_pass_with_label(batch): # Convert dict of lists to list of dicts suitable for data collator features = [dict(zip(batch, t)) for t in zip(*batch.values())] # Pad inputs and labels and put all tensors on device batch = data_collator(features) input_ids = batch["input_ids"].to(device) attention_mask = batch["attention_mask"].to(device) labels = batch["labels"].to(device) with torch.no_grad(): # Pass data through model output = trainer.model(input_ids, attention_mask) # logit.size: [batch_size, sequence_length, classes] # Predict class with largest logit value on classes axis predicted_label = torch.argmax(output.logits, axis=-1).cpu().numpy() # Calculate loss per token after flattening batch dimension with view loss = cross_entropy(output.logits.view(-1, 7), labels.view(-1), reduction="none")# Unflatten batch dimension and convert to numpy arrayloss = loss.view(len(input_ids), -1).cpu().numpy() return {"loss":loss, "predicted_label": predicted_label}

現(xiàn)在我們可以使用map()將這個函數(shù)應用于整個驗證集,并將所有的數(shù)據(jù)加載到一個DataFrame中進行進一步分析:

valid_set = panx_de_encoded["validation"] 
valid_set = valid_set.map(forward_pass_with_label, batched=True, batch_size=32) 
df = valid_set.to_pandas()

代幣和標簽仍然是用它們的ID編碼的,所以讓我們把代幣和標簽映射回字符串,以便更容易閱讀結果。對于標簽為-100的填充代幣,我們分配一個特殊的標簽,即IGN,這樣我們就可以在以后過濾它們。我們還通過將損失和預測標簽字段截斷到輸入的長度來擺脫所有的填充物:

index2tag[-100] = "IGN" 
df["input_tokens"] = df["input_ids"].apply( lambda x: xlmr_tokenizer.convert_ids_to_tokens(x)) 
df["predicted_label"] = df["predicted_label"].apply( lambda x: [index2tag[i] for i in x]) 
df["labels"] = df["labels"].apply( lambda x: [index2tag[i] for i in x]) 
df['loss'] = df.apply( lambda x: x['loss'][:len(x['input_ids'])], axis=1) 
df['predicted_label'] = df.apply( lambda x: x['predicted_label'][:len(x['input_ids'])], axis=1) 
df.head(1)

每一列包含每個樣本的標記、標簽、預測標簽等的列表。讓我們通過拆開這些列表來逐一看看這些標記。這些列表。pandas.Series.explode()函數(shù)允許我們在一行中完全做到這一點,它為原始行列表中的每個元素創(chuàng)建一個行。由于一行中的所有列表都有相同的長度,我們可以對所有列進行并行處理。我們還放棄了我們命名為IGN的填充代幣,因為它們的損失反正是零。最后,我們將損失(仍然是numpy.Array對象)轉換成標準的浮點數(shù):

df_tokens = df.apply(pd.Series.explode) 
df_tokens = df_tokens.query("labels != 'IGN'") 
df_tokens["loss"] = df_tokens["loss"].astype(float).round(2) 
df_tokens.head(7)

有了這種形式的數(shù)據(jù),我們現(xiàn)在可以按輸入標記進行分組,并用計數(shù)、平均值和總和對每個標記的損失進行匯總。最后,我們根據(jù)損失的總和對匯總的數(shù)據(jù)進行排序,看看哪些標記在驗證集中積累了最多的損失:

( 
df_tokens.groupby("input_tokens")[["loss"]] 
.agg(["count", "mean", "sum"]) 
.droplevel(level=0, axis=1) 
# Get rid of multi-level columns 
.sort_values(by="sum", ascending=False) 
.reset_index() 
.round(2) 
.head(10) 
.T 
)

我們可以在這個列表中觀察到幾種模式。

  • 空白符號的總損失最高,這并不令人驚訝,因為它也是列表中最常見的符號。然而,它的平均損失要比列表中的其他標記低得多。這意味著模型對它的分類并不費力。

  • 像 “in”、“von”、"der "和 "und "這樣的詞出現(xiàn)得相對頻繁。它們經(jīng)常與命名的實體一起出現(xiàn),有時是它們的一部分,這解釋了為什么模型可能會把它們混在一起。

  • 括號、斜線和單詞開頭的大寫字母比較少見,但其平均損失相對較高。我們將進一步調查它們。

    我們還可以對標簽ID進行分組,看看每一類的損失:

( 
df_tokens.groupby("labels")[["loss"]] 
.agg(["count", "mean", "sum"]) 
.droplevel(level=0, axis=1) 
.sort_values(by="mean", ascending=False) 
.reset_index() 
.round(2) 
.T 
)

我們看到,B-ORG的平均損失最高,這意味著確定一個組織的開始對我們的模型構成了挑戰(zhàn)。

我們可以通過繪制標記分類的混淆矩陣來進一步分解,我們看到一個組織的開始經(jīng)常與隨后的I-ORG標記相混淆:

from sklearn.metrics import ConfusionMatrixDisplay, confusion_matrix 
def plot_confusion_matrix(y_preds, y_true, labels): cm = confusion_matrix(y_true, y_preds, normalize="true") fig, ax = plt.subplots(figsize=(6, 6)) disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=labels) disp.plot(cmap="Blues", values_format=".2f", ax=ax, colorbar=False) plt.title("Normalized confusion matrix") plt.show() 
plot_confusion_matrix(df_tokens["labels"], df_tokens["predicted_label"], tags.names

從圖中我們可以看出,我們的模型傾向于混淆B-ORG和IORG實體最多。除此之外,它在對其余實體進行分類時表現(xiàn)得相當好,這一點從混淆矩陣的近對角線性質可以看出。

現(xiàn)在我們已經(jīng)檢查了標記水平上的錯誤,讓我們繼續(xù)看一下具有高損失的序列。在這個計算中,我們將重新審視我們的 "未爆炸 "數(shù)據(jù)框架,通過對每個標記的損失進行加總來計算總損失。要做到這一點,首先讓我們寫一個函數(shù),幫助我們顯示帶有標簽和損失的標記序列。


很明顯,這些樣本的標簽有問題;例如,聯(lián)合國和中非共和國分別被標為一個人!這是不對的。同時,第一個例子中的 "8.Juli "被標記為一個組織。事實證明,PAN-X數(shù)據(jù)集的注釋是通過一個自動過程產(chǎn)生的。這樣的注釋通常被稱為 “銀質標準”(與人類生成的注釋的 "黃金標準 "形成對比),而且毫不奇怪,有些情況下,自動方法未能產(chǎn)生合理的標簽。事實上,這樣的失敗模式并不是自動方法所獨有的;即使人類仔細地注釋數(shù)據(jù),當注釋者的注意力減退或者他們只是誤解了句子,也會發(fā)生錯誤。

我們先前注意到的另一件事是,括號和斜線的損失相對較高。讓我們來看看幾個帶有開頭小括號的序列的例子:

df_tmp = df.loc[df["input_tokens"].apply(lambda x: u"\u2581(" in x)].head(2) 
for sample in get_samples(df_tmp): display(sample)

一般來說,我們不會把括號及其內容作為命名實體的一部分,但這似乎是自動提取注釋文件的方式。在其他的例子中,括號里包含了一個地理規(guī)范。雖然這確實也是一個位置,但我們可能希望在注釋中把它與原始位置斷開。這個數(shù)據(jù)集由不同語言的維基百科文章組成,文章標題經(jīng)常在括號中包含某種解釋。例如,在第一個例子中,括號里的文字表明Hama是一個 “Unternehmen”,即英文中的公司。當我們推出這個模型時,這些細節(jié)是很重要的,因為它們可能對模型所在的整個管道的下游性能產(chǎn)生影響。

通過一個相對簡單的分析,我們已經(jīng)發(fā)現(xiàn)了我們的模型和數(shù)據(jù)集的一些弱點。在一個真實的用例中,我們會反復進行這個步驟,清理數(shù)據(jù)集,重新訓練模型,分析新的錯誤,直到我們對性能感到滿意。

在這里,我們分析了單一語言的錯誤,但我們也對跨語言的性能感興趣。在下一節(jié)中,我們將進行一些實驗,看看XLM-R的跨語言轉移的效果如何。

跨語言遷移

現(xiàn)在我們已經(jīng)在德語上對XLM-R進行了微調,我們可以通過Trainer的predict()方法來評估它轉移到其他語言的能力。由于我們計劃評估多種語言,讓我們創(chuàng)建一個簡單的函數(shù),為我們做這件事:

def get_f1_score(trainer, dataset): return trainer.predict(dataset).metrics["test_f1"]

我們可以用這個函數(shù)來檢查測試集的性能,并在一個dict中記錄我們的分數(shù):

f1_scores = defaultdict(dict) 
f1_scores["de"]["de"] = get_f1_score(trainer, panx_de_encoded["test"]) 
print(f"F1-score of [de] model on [de] dataset: {f1_scores['de']['de']:.3f}")F1-score of [de] model on [de] dataset: 0.868

對于一個NER任務來說,這些結果相當不錯。我們的指標在85%左右,我們可以看到該模型在ORG實體上似乎最吃力,可能是因為這些實體在訓練數(shù)據(jù)中最不常見,而且許多組織名稱在XLM-R的詞匯中很罕見。其他語言的情況如何?為了熱身,讓我們看看我們在德語上微調的模型在法語上的表現(xiàn)如何:

text_fr = "Jeff Dean est informaticien chez Google en Californie" 
tag_text(text_fr, tags, trainer.model, xlmr_tokenizer)

還不錯! 雖然這兩種語言的名稱和組織都是一樣的,但該模型確實能夠正確標記 "Kalifornien "的法語翻譯。接下來,讓我們通過編寫一個簡單的函數(shù)來量化我們的德語模型在整個法語測試集上的表現(xiàn),該函數(shù)對數(shù)據(jù)集進行編碼并生成分類報告:

def evaluate_lang_performance(lang, trainer):panx_ds = encode_panx_dataset(panx_ch[lang]) return get_f1_score(trainer, panx_ds["test"]) 
f1_scores["de"]["fr"] = evaluate_lang_performance("fr", trainer) 
print(f"F1-score of [de] model on [fr] dataset: {f1_scores['de']['fr']:.3f}") F1-score of [de] model on [fr] dataset: 0.714

雖然我們看到微觀平均指標下降了約15分,但請記住,我們的模型還沒有看到一個貼有標簽的法語例子!一般來說,性能的下降與語言之間的 "距離 "有關。一般來說,性能下降的大小與語言之間的 "距離 "有關。雖然德語和法語被歸類為印歐語系,但從技術上講,它們屬于不同的語系。分別是日耳曼語和羅曼語。

接下來,讓我們評估一下在意大利語上的表現(xiàn)。由于意大利語也是一種羅曼語,我們期望得到一個與法語類似的結果:

f1_scores["de"]["it"] = evaluate_lang_performance("it", trainer) 
print(f"F1-score of [de] model on [it] dataset: {f1_scores['de']['it']:.3f}") F1-score of [de] model on [it] dataset: 0.692

事實上,我們的期望得到了F-scores的證實。最后,讓我們來看看英語的表現(xiàn),它屬于日耳曼語系的語言:

f1_scores["de"]["en"] = evaluate_lang_performance("en", trainer) 
print(f"F1-score of [de] model on [en] dataset: {f1_scores['de']['en']:.3f}") F1-score of [de] model on [en] dataset: 0.589

令人驚訝的是,我們的模型在英語上的表現(xiàn)最差,盡管我們可能直觀地期望德語比法語更類似于英語。在對德語進行了微調并對法語和英語進行了零點轉移之后,接下來讓我們看看什么時候直接對目標語言進行微調是有意義的。

零樣本遷移何時才能生效?

到目前為止,我們已經(jīng)看到,在德語語料庫上對XLM-R進行微調,可以得到85%左右的F-score,而且不需要任何額外的訓練,該模型就能夠在我們的語料庫中的其他語言上取得適度的表現(xiàn)。問題是,這些結果有多好,它們與在單語語料庫上微調的XLM-R模型相比如何?

在本節(jié)中,我們將通過在越來越大的訓練集上對XLM-R進行微調,來探索法語語料庫的這個問題。通過這種方式跟蹤性能,我們可以確定在哪一點上零點跨語言轉移更有優(yōu)勢,這在實踐中對指導關于是否收集更多標記數(shù)據(jù)的決定很有用。

為了簡單起見,我們將保持對德語語料庫進行微調時的超參數(shù),只是我們將調整TrainingArguments的logging_steps參數(shù),以考慮到訓練集規(guī)模的變化。我們可以用一個簡單的函數(shù)把這一切包起來,該函數(shù)接收一個對應于單語語料庫的DatasetDict對象,通過num_samples對其進行降樣,并對XLM-R進行微調,以返回最佳歷時的度量:

def train_on_subset(dataset, num_samples): train_ds = dataset["train"].shuffle(seed=42).select(range(num_samples)) valid_ds = dataset["validation"] test_ds = dataset["test"] training_args.logging_steps = len(train_ds) // batch_size trainer = Trainer(model_init=model_init, args=training_args, data_collator=data_collator, compute_metrics=compute_metrics, train_dataset=train_ds, eval_dataset=valid_ds, tokenizer=xlmr_tokenizer) trainer.train() if training_args.push_to_hub: trainer.push_to_hub(commit_message="Training completed!") f1_score = get_f1_score(trainer, test_ds) return pd.DataFrame.from_dict( {"num_samples": [len(train_ds)], "f1_score": [f1_score]})

正如我們對德語語料庫的微調一樣,我們也需要將法語語料庫編碼為輸入ID、注意力掩碼和標簽ID:

panx_fr_encoded = encode_panx_dataset(panx_ch["fr"])

接下來,讓我們通過在250個例子的小型訓練集上運行來檢查我們的函數(shù)是否有效:

training_args.push_to_hub = False 
metrics_df = train_on_subset(panx_fr_encoded, 250) metrics_df

我們可以看到,在只有250個例子的情況下,法語的微調在很大程度上低于德語的零槍轉移。現(xiàn)在讓我們把訓練集的大小增加到500、1000、2000和4000個例子,以了解性能的提高:

for num_samples in [500, 1000, 2000, 4000]: metrics_df = metrics_df.append( train_on_subset(panx_fr_encoded, num_samples), ignore_index=True)

我們可以通過繪制測試集上的F-scores作為增加訓練集大小的函數(shù),來比較法語樣本的微調與德語的零點跨語言轉移之間的比較:

fig, ax = plt.subplots() 
ax.axhline(f1_scores["de"]["fr"], ls="--", color="r") 
metrics_df.set_index("num_samples").plot(ax=ax) 
plt.legend(["Zero-shot from de", "Fine-tuned on fr"], loc="lower right") plt.ylim((0, 1)) 
plt.xlabel("Number of Training Samples") 
plt.ylabel("F1 Score") 
plt.show()

從圖中我們可以看到,在大約750個訓練實例之前,零點轉移一直是有競爭力的,在這之后,對法語的微調達到了與我們對德語微調時類似的性能水平。然而,這個結果是不容忽視的。根據(jù)我們的經(jīng)驗,讓領域專家給幾百個文檔貼上標簽的成本很高,特別是對NER來說,貼標簽的過程很細而且很耗時。

我們可以嘗試最后一種技術來評估多語言學習:同時對多種語言進行微調!讓我們來看看如何進行微調。讓我們來看看我們如何做到這一點。

一次性對多種語言進行微調

到目前為止,我們已經(jīng)看到,從德語到法語或意大利語的零拍跨語言轉移產(chǎn)生了約15點的性能下降。緩解這種情況的一個方法是同時對多種語言進行微調。為了看看我們能得到什么類型的收益,讓我們首先使用 concatenate_datasets()函數(shù),將德語和法語語料庫連接起來:

from datasets import concatenate_datasets 
def concatenate_splits(corpora): multi_corpus = DatasetDict() for split in corpora[0].keys(): multi_corpus[split] = concatenate_datasets( [corpus[split] for corpus in corpora]).shuffle(seed=42) return multi_corpus 
panx_de_fr_encoded = concatenate_splits([panx_de_encoded, panx_fr_encoded])

對于訓練,我們將再次使用前幾節(jié)的超參數(shù),因此我們可以簡單地更新訓練器中的記錄步驟、模型和數(shù)據(jù)集:

training_args.logging_steps = len(panx_de_fr_encoded["train"]) // batch_size 
training_args.push_to_hub = True 
training_args.output_dir = "xlm-roberta-base-finetuned-panx-de-fr" 
trainer = Trainer(model_init=model_init, args=training_args, data_collator=data_collator, compute_metrics=compute_metrics, tokenizer=xlmr_tokenizer, train_dataset=panx_de_fr_encoded["train"], eval_dataset=panx_de_fr_encoded["validation"])
trainer.train() 
trainer.push_to_hub(commit_message="Training completed!")

讓我們來看看該模型在每種語言的測試集上的表現(xiàn):

for lang in langs: f1 = evaluate_lang_performance(lang, trainer) print(f"F1-score of [de-fr] model on [{lang}] dataset: {f1:.3f}") 
 F1-score of [de-fr] model on [de] dataset: 0.866 F1-score of [de-fr] model on [fr] dataset: 0.868 F1-score of [de-fr] model on [it] dataset: 0.815 F1-score of [de-fr] model on [en] dataset: 0.677

它在法語分詞上的表現(xiàn)比以前好得多,與德語測試集上的表現(xiàn)相當。有趣的是,它在意大利語和英語部分的表現(xiàn)也提高了大約10個百分點。因此,即使增加另一種語言的訓練數(shù)據(jù),也能提高該模型在未見過的語言上的表現(xiàn)。

讓我們通過比較在每種語言上的微調和在所有語料庫上的多語言學習的性能來完成我們的分析。由于我們已經(jīng)對德語語料庫進行了微調,我們可以用train_on_subset()函數(shù)對其余語言進行微調,num_samples等于訓練集的例子數(shù)量。

corpora = [panx_de_encoded] 
# Exclude German from iteration 
for lang in langs[1:]: training_args.output_dir = f"xlm-roberta-base-finetuned-panx-{lang}" # Fine-tune on monolingual corpus ds_encoded = encode_panx_dataset(panx_ch[lang]) metrics = train_on_subset(ds_encoded, ds_encoded["train"].num_rows) # Collect F1-scores in common dict f1_scores[lang][lang] = metrics["f1_score"][0]# Add monolingual corpus to list of corpora to concatenate corpora.append(ds_encoded)

現(xiàn)在我們已經(jīng)對每種語言的語料庫進行了微調,下一步是將所有的分片串聯(lián)起來,創(chuàng)建一個所有四種語言的多語言語料庫。與之前的德語和法語分析一樣,我們可以使用concatenate_splits()函數(shù)來為我們在上一步生成的語料庫列表上完成這一步驟:

corpora_encoded = concatenate_splits(corpora)

現(xiàn)在我們有了我們的多語言語料庫,我們用訓練器運行熟悉的步驟:

training_args.logging_steps = len(corpora_encoded["train"]) // batch_size 
training_args.output_dir = "xlm-roberta-base-finetuned-panx-all"
trainer = Trainer(model_init=model_init, args=training_args, data_collator=data_collator, compute_metrics=compute_metrics, tokenizer=xlmr_tokenizer, train_dataset=corpora_encoded["train"], eval_dataset=corpora_encoded["validation"]) 
trainer.train() 
trainer.push_to_hub(commit_message="Training completed!")

最后一步是在每種語言的測試集上生成訓練器的預測結果。這將使我們深入了解多語言學習的真正效果。我們將在f1_scores字典中收集F-scores,然后創(chuàng)建一個DataFrame,總結我們多語言實驗的主要結果:

for idx, lang in enumerate(langs): f1_scores["all"][lang] = get_f1_score(trainer, corpora[idx]["test"]) 
scores_data = {"de": f1_scores["de"], "each": {lang: f1_scores[lang][lang] for lang in langs}, "all": f1_scores["all"]} 
f1_scores_df = pd.DataFrame(scores_data).T.round(4) 
f1_scores_df.rename_axis(index="Fine-tune on", columns="Evaluated on", inplace=True)f1_scores_df

從這些結果中,我們可以得出一些一般性的結論。

  • 多語言學習可以帶來顯著的性能提升,尤其是當跨語言轉移的低資源語言屬于類似的語言家族時。在我們的實驗中,我們可以看到德語、法語和意大利語在所有類別中都取得了相似的表現(xiàn),這表明這些語言之間的相似度要高于英語。
  • 作為一個一般的策略,把注意力集中在語言家族內的跨語言轉移是一個好主意,特別是在處理像日語這樣的不同文字時。

發(fā)布模型部件

在這一章中,我們已經(jīng)推送了很多微調過的模型到 Hub 上。盡管我們可以使用 pipeline() 函數(shù)在我們的本地機器上與它們進行交互,但 Hub 提供了非常適合這種工作流程的部件。圖4-5是我們的transformersbook/xlm-roberta-base-finetuned-panx-all檢查點的一個例子,你可以看到它在識別一個德語文本的所有實體方面做得很好。

小結

在本章中,我們看到了如何使用一個在100種語言上預訓練過的單一Transformers來處理一個多語言語料庫的NLP任務: XLM-R。盡管我們能夠證明,當只有少量的標記例子可供微調時,從德語到法語的跨語言轉換是有效的的,但如果目標語言與基礎模型被微調的語言有很大不同,或者不是預訓練時使用的100種語言之一,這種良好的性能通常就不會出現(xiàn)。最近的建議,如MAD-X,正是為這些低資源的情況而設計的,由于MAD-X是建立在Transformers之上的,你可以很容易地調整本章的代碼來使用它。

到目前為止,我們看了兩個任務:序列分類和標記分類。這兩個任務都屬于自然語言理解的范疇,即把文本合成為預測。在下一章中,我們將首次看到文本生成,在這里,不僅輸入內容是文本,模型的輸出也是文本。

總結

以上是生活随笔為你收集整理的nlp-with-transformers系列-04_多语言命名实体识别的全部內容,希望文章能夠幫你解決所遇到的問題。

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

国产真实夫妇视频 | 久久精品国产大片免费观看 | 性生交片免费无码看人 | 福利一区二区三区视频在线观看 | 亚洲欧美日韩综合久久久 | aa片在线观看视频在线播放 | √8天堂资源地址中文在线 | 国产内射爽爽大片视频社区在线 | 国产成人无码a区在线观看视频app | 最新国产乱人伦偷精品免费网站 | 欧美熟妇另类久久久久久多毛 | 一本色道婷婷久久欧美 | 无码精品人妻一区二区三区av | 国产精品美女久久久久av爽李琼 | 亚洲va欧美va天堂v国产综合 | 色一情一乱一伦一视频免费看 | 国产精品理论片在线观看 | 中文字幕乱码亚洲无线三区 | 亚洲精品久久久久久一区二区 | 国产精品久久久久久亚洲毛片 | 久久 国产 尿 小便 嘘嘘 | 成人欧美一区二区三区黑人免费 | 国产乱码精品一品二品 | 国产午夜精品一区二区三区嫩草 | 亚洲一区av无码专区在线观看 | 永久免费观看国产裸体美女 | 成熟妇人a片免费看网站 | 在线播放免费人成毛片乱码 | 小泽玛莉亚一区二区视频在线 | 亚洲自偷精品视频自拍 | 亚洲の无码国产の无码步美 | 曰韩无码二三区中文字幕 | 女人被男人爽到呻吟的视频 | 樱花草在线播放免费中文 | 日本熟妇大屁股人妻 | 亚洲精品无码人妻无码 | 精品无码国产自产拍在线观看蜜 | 3d动漫精品啪啪一区二区中 | 国产电影无码午夜在线播放 | 精品国产乱码久久久久乱码 | 无码av岛国片在线播放 | 啦啦啦www在线观看免费视频 | 日本饥渴人妻欲求不满 | 国产在线aaa片一区二区99 | 国内揄拍国内精品少妇国语 | 日本va欧美va欧美va精品 | 久久国产自偷自偷免费一区调 | 久久人人爽人人爽人人片ⅴ | 精品夜夜澡人妻无码av蜜桃 | 奇米影视7777久久精品人人爽 | 亚洲精品美女久久久久久久 | 国内精品人妻无码久久久影院蜜桃 | 樱花草在线播放免费中文 | 欧美怡红院免费全部视频 | 国产口爆吞精在线视频 | 性色欲情网站iwww九文堂 | 成人免费无码大片a毛片 | 成人免费无码大片a毛片 | 免费网站看v片在线18禁无码 | 又大又紧又粉嫩18p少妇 | 无码国产乱人伦偷精品视频 | 亚洲欧洲无卡二区视頻 | 欧美三级不卡在线观看 | 久久综合九色综合97网 | 大肉大捧一进一出好爽视频 | 亚洲国产精品毛片av不卡在线 | 国产麻豆精品一区二区三区v视界 | 成人一区二区免费视频 | 中文字幕乱码人妻二区三区 | 欧美freesex黑人又粗又大 | 中文字幕久久久久人妻 | 日本在线高清不卡免费播放 | 天天综合网天天综合色 | 久久zyz资源站无码中文动漫 | 精品无人国产偷自产在线 | 在线播放无码字幕亚洲 | 日本丰满熟妇videos | 人人妻人人澡人人爽人人精品浪潮 | 丝袜美腿亚洲一区二区 | 色综合久久网 | 欧美xxxx黑人又粗又长 | 亚洲午夜久久久影院 | 亚洲国产精品美女久久久久 | 97久久国产亚洲精品超碰热 | 俺去俺来也在线www色官网 | 人妻夜夜爽天天爽三区 | 久久久久久av无码免费看大片 | 国产精品久久久一区二区三区 | 性欧美牲交在线视频 | 俺去俺来也www色官网 | 国产精品无码成人午夜电影 | 欧美怡红院免费全部视频 | aⅴ亚洲 日韩 色 图网站 播放 | 久久精品99久久香蕉国产色戒 | 曰本女人与公拘交酡免费视频 | 成年美女黄网站色大免费视频 | 亚洲 另类 在线 欧美 制服 | 国产精品亚洲а∨无码播放麻豆 | 亚欧洲精品在线视频免费观看 | 一本大道久久东京热无码av | 初尝人妻少妇中文字幕 | 中文字幕中文有码在线 | 久久久久亚洲精品中文字幕 | 亚洲精品中文字幕久久久久 | 无码成人精品区在线观看 | 99久久无码一区人妻 | 色 综合 欧美 亚洲 国产 | 国产精品无码mv在线观看 | 亚欧洲精品在线视频免费观看 | 麻豆果冻传媒2021精品传媒一区下载 | 成人动漫在线观看 | 亚洲第一无码av无码专区 | 日本护士xxxxhd少妇 | 亚洲色在线无码国产精品不卡 | 国产va免费精品观看 | 日产精品高潮呻吟av久久 | 无码福利日韩神码福利片 | 免费国产成人高清在线观看网站 | 国产亚洲精品久久久ai换 | 中文久久乱码一区二区 | 一个人看的www免费视频在线观看 | 精品无码一区二区三区的天堂 | 免费无码午夜福利片69 | 久久久久人妻一区精品色欧美 | 久久综合狠狠综合久久综合88 | 欧美日韩一区二区综合 | 精品久久久无码中文字幕 | 亚洲国产精华液网站w | 成人试看120秒体验区 | √天堂资源地址中文在线 | 成人片黄网站色大片免费观看 | 狂野欧美性猛交免费视频 | 精品夜夜澡人妻无码av蜜桃 | 国内精品人妻无码久久久影院蜜桃 | 亚洲 欧美 激情 小说 另类 | 国产激情艳情在线看视频 | 亚洲午夜久久久影院 | аⅴ资源天堂资源库在线 | 国产无遮挡又黄又爽免费视频 | 女人被爽到呻吟gif动态图视看 | 一本一道久久综合久久 | 国产人妻久久精品二区三区老狼 | 成人片黄网站色大片免费观看 | 精品国产一区二区三区四区在线看 | 久久亚洲国产成人精品性色 | 在线欧美精品一区二区三区 | 丰满少妇熟乱xxxxx视频 | 久久精品国产亚洲精品 | 性欧美熟妇videofreesex | 亚洲人成网站免费播放 | 欧美日韩一区二区三区自拍 | 国产三级久久久精品麻豆三级 | 成人亚洲精品久久久久软件 | 日韩成人一区二区三区在线观看 | 成熟妇人a片免费看网站 | 又色又爽又黄的美女裸体网站 | 亚洲一区二区三区含羞草 | 亚洲成av人综合在线观看 | 国产xxx69麻豆国语对白 | 麻豆精品国产精华精华液好用吗 | 色狠狠av一区二区三区 | 欧美成人午夜精品久久久 | 久久精品无码一区二区三区 | 无码毛片视频一区二区本码 | 十八禁视频网站在线观看 | 久久无码中文字幕免费影院蜜桃 | 伊人久久大香线焦av综合影院 | 99久久精品午夜一区二区 | 成在人线av无码免观看麻豆 | 四十如虎的丰满熟妇啪啪 | 永久免费观看美女裸体的网站 | 97久久超碰中文字幕 | 欧美一区二区三区视频在线观看 | 精品午夜福利在线观看 | 又粗又大又硬又长又爽 | 国产人成高清在线视频99最全资源 | 麻豆国产97在线 | 欧洲 | 成年女人永久免费看片 | 亚洲小说春色综合另类 | √天堂资源地址中文在线 | 国产欧美亚洲精品a | 影音先锋中文字幕无码 | 久久人人爽人人爽人人片ⅴ | 夜先锋av资源网站 | 日本va欧美va欧美va精品 | 性色欲情网站iwww九文堂 | 中文字幕无码免费久久9一区9 | 亚洲精品欧美二区三区中文字幕 | 乌克兰少妇性做爰 | 丰满少妇熟乱xxxxx视频 | 亚洲色www成人永久网址 | 久久亚洲a片com人成 | 亚洲理论电影在线观看 | 成人精品视频一区二区 | 老子影院午夜伦不卡 | 亚洲精品午夜无码电影网 | 女人被爽到呻吟gif动态图视看 | 亚洲高清偷拍一区二区三区 | av无码不卡在线观看免费 | 亚洲精品国产a久久久久久 | 四虎影视成人永久免费观看视频 | 久久国语露脸国产精品电影 | 少妇被黑人到高潮喷出白浆 | 久久亚洲国产成人精品性色 | 97人妻精品一区二区三区 | 久久www免费人成人片 | 人妻无码αv中文字幕久久琪琪布 | 国产人妻精品午夜福利免费 | 久久婷婷五月综合色国产香蕉 | 国产麻豆精品一区二区三区v视界 | 亚洲欧美日韩成人高清在线一区 | 欧美老人巨大xxxx做受 | 人人超人人超碰超国产 | 欧美 日韩 人妻 高清 中文 | 装睡被陌生人摸出水好爽 | 国产婷婷色一区二区三区在线 | 国产精品久久久久9999小说 | 欧美日韩一区二区综合 | 中文字幕无线码免费人妻 | 人人妻人人澡人人爽人人精品 | 精品人妻中文字幕有码在线 | 国产午夜亚洲精品不卡下载 | 欧美35页视频在线观看 | 久久 国产 尿 小便 嘘嘘 | 狠狠亚洲超碰狼人久久 | 青青青爽视频在线观看 | 欧美zoozzooz性欧美 | 国产口爆吞精在线视频 | 99国产精品白浆在线观看免费 | 黑人粗大猛烈进出高潮视频 | 亚洲の无码国产の无码影院 | 欧美国产日韩久久mv | 亚洲国产精品久久久天堂 | 国产真人无遮挡作爱免费视频 | 久久伊人色av天堂九九小黄鸭 | 精品无码一区二区三区的天堂 | 国产精品igao视频网 | 黑人粗大猛烈进出高潮视频 | 综合网日日天干夜夜久久 | 亚洲乱码日产精品bd | 亚洲中文字幕无码中字 | 精品人妻人人做人人爽 | 亚洲日韩一区二区三区 | 麻豆av传媒蜜桃天美传媒 | 中文字幕人妻丝袜二区 | 久久精品成人欧美大片 | 国产又爽又猛又粗的视频a片 | 娇妻被黑人粗大高潮白浆 | 国产真实伦对白全集 | 99久久人妻精品免费一区 | 无码人妻丰满熟妇区毛片18 | 国产精品对白交换视频 | 日韩av无码一区二区三区不卡 | 国产深夜福利视频在线 | 亚洲 另类 在线 欧美 制服 | 天天拍夜夜添久久精品大 | 正在播放老肥熟妇露脸 | 中文字幕日产无线码一区 | 国产精品久久久久7777 | 无码精品国产va在线观看dvd | 久久国产36精品色熟妇 | 精品夜夜澡人妻无码av蜜桃 | 久久久久久九九精品久 | 一本久久a久久精品vr综合 | 一二三四社区在线中文视频 | 欧美丰满熟妇xxxx性ppx人交 | 偷窥日本少妇撒尿chinese | 国产9 9在线 | 中文 | av香港经典三级级 在线 | 亚洲小说春色综合另类 | 日韩少妇白浆无码系列 | 国产偷抇久久精品a片69 | 东京一本一道一二三区 | 色窝窝无码一区二区三区色欲 | 乌克兰少妇xxxx做受 | 日韩欧美群交p片內射中文 | 日韩欧美中文字幕公布 | 国产亚洲欧美日韩亚洲中文色 | 久久精品中文字幕大胸 | 一本久道高清无码视频 | 青春草在线视频免费观看 | 国产一区二区三区日韩精品 | 午夜理论片yy44880影院 | 欧美放荡的少妇 | 无码国内精品人妻少妇 | 少妇性荡欲午夜性开放视频剧场 | 亚洲 日韩 欧美 成人 在线观看 | 精品 日韩 国产 欧美 视频 | 无码人妻丰满熟妇区毛片18 | 精品国产一区av天美传媒 | 成年美女黄网站色大免费全看 | 色婷婷综合激情综在线播放 | 无码福利日韩神码福利片 | 人人妻人人澡人人爽精品欧美 | 日韩精品a片一区二区三区妖精 | 国产艳妇av在线观看果冻传媒 | 国产香蕉尹人综合在线观看 | 国产精品久久久久9999小说 | 成人综合网亚洲伊人 | 一本久道高清无码视频 | 丰满少妇弄高潮了www | 亚洲日韩精品欧美一区二区 | 丝袜美腿亚洲一区二区 | 人人妻人人澡人人爽欧美一区 | 麻豆果冻传媒2021精品传媒一区下载 | 成人亚洲精品久久久久 | 大肉大捧一进一出好爽视频 | 久久99精品国产.久久久久 | 未满小14洗澡无码视频网站 | www一区二区www免费 | 久久婷婷五月综合色国产香蕉 | 久久精品女人的天堂av | 99riav国产精品视频 | 少妇激情av一区二区 | 中文字幕无码免费久久99 | 国产va免费精品观看 | 久久久无码中文字幕久... | 99久久精品日本一区二区免费 | 亚洲日韩精品欧美一区二区 | 久久精品国产日本波多野结衣 | 日日碰狠狠丁香久燥 | 国产农村妇女高潮大叫 | 久久久国产一区二区三区 | 九九久久精品国产免费看小说 | 成人综合网亚洲伊人 | 麻豆成人精品国产免费 | 国产亚洲欧美日韩亚洲中文色 | 国产免费观看黄av片 | 免费中文字幕日韩欧美 | 国产乱人无码伦av在线a | 亚洲第一无码av无码专区 | 成 人 网 站国产免费观看 | 亚洲va中文字幕无码久久不卡 | 日韩av无码一区二区三区不卡 | 久久伊人色av天堂九九小黄鸭 | 国产精品久久久久无码av色戒 | 中文字幕日韩精品一区二区三区 | 欧美真人作爱免费视频 | 亚洲熟妇色xxxxx亚洲 | 人妻天天爽夜夜爽一区二区 | 少妇高潮喷潮久久久影院 | 国产高清av在线播放 | 精品午夜福利在线观看 | 成人免费无码大片a毛片 | 欧美freesex黑人又粗又大 | 国产无套粉嫩白浆在线 | 国产成人av免费观看 | 国产成人无码午夜视频在线观看 | 亚洲s色大片在线观看 | 疯狂三人交性欧美 | 玩弄人妻少妇500系列视频 | 国产色视频一区二区三区 | 久久精品国产一区二区三区 | 国产口爆吞精在线视频 | 中文字幕av无码一区二区三区电影 | 亚洲国产欧美日韩精品一区二区三区 | 影音先锋中文字幕无码 | 久久亚洲中文字幕精品一区 | 国产一区二区三区精品视频 | 国产性生交xxxxx无码 | 波多野结衣高清一区二区三区 | 亚洲精品一区二区三区在线 | 日韩av无码中文无码电影 | 日产精品99久久久久久 | 四虎国产精品免费久久 | 亚洲精品一区二区三区婷婷月 | 大乳丰满人妻中文字幕日本 | 动漫av网站免费观看 | www国产精品内射老师 | 在线成人www免费观看视频 | 久久精品国产一区二区三区 | 2020久久香蕉国产线看观看 | 永久黄网站色视频免费直播 | 日本饥渴人妻欲求不满 | 国产乡下妇女做爰 | 精品国产一区二区三区四区 | 玩弄少妇高潮ⅹxxxyw | 内射巨臀欧美在线视频 | 丁香啪啪综合成人亚洲 | 欧美怡红院免费全部视频 | 国产成人精品视频ⅴa片软件竹菊 | 日本精品少妇一区二区三区 | 国产精品久久久久久亚洲毛片 | 人妻插b视频一区二区三区 | 久久国内精品自在自线 | 少妇无码一区二区二三区 | 国产又爽又猛又粗的视频a片 | 人人妻人人澡人人爽欧美一区九九 | 人妻熟女一区 | 九九在线中文字幕无码 | 最近的中文字幕在线看视频 | 欧美zoozzooz性欧美 | 乱中年女人伦av三区 | 天堂а√在线地址中文在线 | 亚洲国产av美女网站 | 国产成人无码一二三区视频 | 国产麻豆精品一区二区三区v视界 | 一本大道久久东京热无码av | 国产小呦泬泬99精品 | 国产精品99爱免费视频 | 性啪啪chinese东北女人 | 少妇高潮喷潮久久久影院 | 午夜无码区在线观看 | 人妻夜夜爽天天爽三区 | 亚洲一区二区三区在线观看网站 | 波多野结衣 黑人 | 日本丰满熟妇videos | 人妻少妇被猛烈进入中文字幕 | 国产精品无码成人午夜电影 | 国内精品久久久久久中文字幕 | 国产精品igao视频网 | 国产乱码精品一品二品 | 99久久精品午夜一区二区 | 又大又黄又粗又爽的免费视频 | 亚洲国产综合无码一区 | 国产精品内射视频免费 | 麻豆精品国产精华精华液好用吗 | 狠狠色丁香久久婷婷综合五月 | 永久免费观看国产裸体美女 | 国产麻豆精品一区二区三区v视界 | 高清无码午夜福利视频 | 男人的天堂av网站 | 自拍偷自拍亚洲精品10p | 少女韩国电视剧在线观看完整 | 四虎影视成人永久免费观看视频 | 亚洲成在人网站无码天堂 | 夫妻免费无码v看片 | 人人澡人摸人人添 | 国产成人一区二区三区在线观看 | 亚洲人交乣女bbw | 亚洲人交乣女bbw | 亚洲区小说区激情区图片区 | aⅴ亚洲 日韩 色 图网站 播放 | 色 综合 欧美 亚洲 国产 | 中文字幕人妻无码一区二区三区 | 无套内射视频囯产 | 人人爽人人澡人人高潮 | 高中生自慰www网站 | 欧美日韩在线亚洲综合国产人 | 亚洲第一网站男人都懂 | 少妇无码一区二区二三区 | 无人区乱码一区二区三区 | 日日碰狠狠丁香久燥 | 国产99久久精品一区二区 | 在线天堂新版最新版在线8 | 亚洲欧美精品aaaaaa片 | 野外少妇愉情中文字幕 | 国产黄在线观看免费观看不卡 | 亚洲国产欧美日韩精品一区二区三区 | 亚洲理论电影在线观看 | 老熟妇乱子伦牲交视频 | 国产sm调教视频在线观看 | 国产精品-区区久久久狼 | 99精品国产综合久久久久五月天 | 无码国模国产在线观看 | 欧美喷潮久久久xxxxx | 丰满少妇熟乱xxxxx视频 | 国模大胆一区二区三区 | 亚洲午夜久久久影院 | 清纯唯美经典一区二区 | 老子影院午夜伦不卡 | 奇米影视7777久久精品 | 中文无码成人免费视频在线观看 | 强奷人妻日本中文字幕 | 精品国产麻豆免费人成网站 | 国内少妇偷人精品视频免费 | 色婷婷综合中文久久一本 | 亚洲精品久久久久久久久久久 | 亚洲欧美日韩成人高清在线一区 | 男人和女人高潮免费网站 | 国产成人亚洲综合无码 | 久久久久久九九精品久 | 亚洲国产精品无码久久久久高潮 | 精品无人国产偷自产在线 | 极品尤物被啪到呻吟喷水 | 7777奇米四色成人眼影 | 一本久道久久综合婷婷五月 | 国产精品久久久久久无码 | 欧美猛少妇色xxxxx | 大地资源中文第3页 | 久久久久se色偷偷亚洲精品av | 亚洲熟悉妇女xxx妇女av | 精品欧美一区二区三区久久久 | 中文精品无码中文字幕无码专区 | 18禁黄网站男男禁片免费观看 | 亚洲一区二区三区在线观看网站 | 一区二区三区高清视频一 | 午夜福利一区二区三区在线观看 | 欧美xxxxx精品 | 性欧美牲交在线视频 | 国产又爽又黄又刺激的视频 | 国产亚洲tv在线观看 | 国产精品久久国产三级国 | 夜精品a片一区二区三区无码白浆 | 亚洲精品www久久久 | 亚洲熟妇色xxxxx欧美老妇y | 久久综合给久久狠狠97色 | 亚洲春色在线视频 | 国产黄在线观看免费观看不卡 | 国产人妻大战黑人第1集 | 激情五月综合色婷婷一区二区 | 中文无码精品a∨在线观看不卡 | 图片小说视频一区二区 | 天堂а√在线地址中文在线 | 色婷婷欧美在线播放内射 | 人妻夜夜爽天天爽三区 | 十八禁真人啪啪免费网站 | 国产精品亚洲专区无码不卡 | 国精产品一区二区三区 | 欧美35页视频在线观看 | www国产亚洲精品久久久日本 | 日韩无套无码精品 | 色欲av亚洲一区无码少妇 | 在线欧美精品一区二区三区 | 麻花豆传媒剧国产免费mv在线 | 在教室伦流澡到高潮hnp视频 | 亚洲国产成人av在线观看 | 兔费看少妇性l交大片免费 | 少妇高潮喷潮久久久影院 | 精品无码av一区二区三区 | 国产精品香蕉在线观看 | 国产三级久久久精品麻豆三级 | 国产亚洲视频中文字幕97精品 | 麻豆成人精品国产免费 | 99视频精品全部免费免费观看 | 国产成人精品久久亚洲高清不卡 | 亚洲精品一区二区三区在线观看 | 狠狠躁日日躁夜夜躁2020 | 麻豆果冻传媒2021精品传媒一区下载 | 久久人人爽人人爽人人片ⅴ | 99精品无人区乱码1区2区3区 | 2019nv天堂香蕉在线观看 | 丰满人妻精品国产99aⅴ | 中文字幕日产无线码一区 | 国产无遮挡吃胸膜奶免费看 | 1000部啪啪未满十八勿入下载 | 欧美日韩久久久精品a片 | www国产亚洲精品久久网站 | 久久成人a毛片免费观看网站 | 免费无码一区二区三区蜜桃大 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产精品第一国产精品 | 日日摸夜夜摸狠狠摸婷婷 | 免费视频欧美无人区码 | 日本一区二区三区免费高清 | 狠狠色欧美亚洲狠狠色www | 国产精品久久久一区二区三区 | 高清无码午夜福利视频 | 人妻尝试又大又粗久久 | 久久成人a毛片免费观看网站 | 亚洲日本在线电影 | 99精品久久毛片a片 | 两性色午夜视频免费播放 | 国产97在线 | 亚洲 | 日本一本二本三区免费 | 亚洲男女内射在线播放 | 国产片av国语在线观看 | 久久99精品久久久久久动态图 | 中文字幕人妻无码一区二区三区 | 日本丰满护士爆乳xxxx | 久久熟妇人妻午夜寂寞影院 | 无码av岛国片在线播放 | 99精品国产综合久久久久五月天 | 国产区女主播在线观看 | 久久aⅴ免费观看 | 一本一道久久综合久久 | 黑人巨大精品欧美黑寡妇 | 国产高清av在线播放 | 国产午夜手机精彩视频 | 亚洲欧美综合区丁香五月小说 | 日日躁夜夜躁狠狠躁 | 亚洲一区二区三区含羞草 | 精品久久久无码人妻字幂 | 黑人大群体交免费视频 | 少妇人妻偷人精品无码视频 | 久激情内射婷内射蜜桃人妖 | 国产精品18久久久久久麻辣 | 国产精品理论片在线观看 | 亚洲欧美色中文字幕在线 | 秋霞特色aa大片 | 国产免费久久精品国产传媒 | 人人澡人摸人人添 | 色婷婷欧美在线播放内射 | 国内精品人妻无码久久久影院 | 欧美日韩一区二区三区自拍 | 动漫av网站免费观看 | 精品日本一区二区三区在线观看 | 欧洲精品码一区二区三区免费看 | 少妇厨房愉情理9仑片视频 | 国产精品久久久久7777 | 婷婷六月久久综合丁香 | √天堂中文官网8在线 | 妺妺窝人体色www婷婷 | 内射白嫩少妇超碰 | 麻花豆传媒剧国产免费mv在线 | 久久久久久a亚洲欧洲av冫 | а√资源新版在线天堂 | 久久无码中文字幕免费影院蜜桃 | 久久天天躁狠狠躁夜夜免费观看 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 鲁一鲁av2019在线 | 乱人伦人妻中文字幕无码 | 久久久久av无码免费网 | 久久国语露脸国产精品电影 | 国产综合色产在线精品 | 精品国产一区二区三区四区 | 少妇性l交大片欧洲热妇乱xxx | 久久精品视频在线看15 | 精品亚洲成av人在线观看 | 领导边摸边吃奶边做爽在线观看 | 窝窝午夜理论片影院 | 亚洲 高清 成人 动漫 | 亚洲色欲久久久综合网东京热 | 55夜色66夜色国产精品视频 | 国产精品久久久久久亚洲毛片 | 精品夜夜澡人妻无码av蜜桃 | 人妻天天爽夜夜爽一区二区 | 亚洲精品一区二区三区大桥未久 | 亚洲 欧美 激情 小说 另类 | 精品人妻中文字幕有码在线 | 无码精品国产va在线观看dvd | 乌克兰少妇性做爰 | 免费看男女做好爽好硬视频 | 熟女体下毛毛黑森林 | 激情内射亚州一区二区三区爱妻 | 少妇人妻av毛片在线看 | 在线观看免费人成视频 | 国产真实乱对白精彩久久 | 国产后入清纯学生妹 | 一本久久a久久精品vr综合 | 风流少妇按摩来高潮 | 亚洲а∨天堂久久精品2021 | 蜜臀aⅴ国产精品久久久国产老师 | 色欲久久久天天天综合网精品 | 免费人成在线观看网站 | 精品日本一区二区三区在线观看 | 一区二区三区高清视频一 | 亚洲精品一区二区三区在线 | 中文字幕乱码亚洲无线三区 | 国语自产偷拍精品视频偷 | 少妇人妻av毛片在线看 | 人人妻人人澡人人爽人人精品 | 玩弄少妇高潮ⅹxxxyw | 久久99精品国产.久久久久 | 无码精品人妻一区二区三区av | 久久成人a毛片免费观看网站 | 久久久久久亚洲精品a片成人 | 一本久久伊人热热精品中文字幕 | 亚洲国产欧美国产综合一区 | 人妻少妇精品视频专区 | 水蜜桃亚洲一二三四在线 | 免费无码一区二区三区蜜桃大 | 国产成人精品优优av | 久久久无码中文字幕久... | 亚洲精品一区二区三区四区五区 | 色爱情人网站 | 国产精品久久国产三级国 | 亚洲中文无码av永久不收费 | 无遮挡国产高潮视频免费观看 | 天天燥日日燥 | 亲嘴扒胸摸屁股激烈网站 | 欧美人与物videos另类 | 999久久久国产精品消防器材 | 国产亚洲欧美日韩亚洲中文色 | 在线播放免费人成毛片乱码 | 精品偷拍一区二区三区在线看 | 无码人妻丰满熟妇区五十路百度 | 久久这里只有精品视频9 | 日本又色又爽又黄的a片18禁 | 一区二区三区高清视频一 | 天海翼激烈高潮到腰振不止 | 成人免费视频在线观看 | 国产成人无码a区在线观看视频app | 国产精品久久久久9999小说 | 欧美freesex黑人又粗又大 | 少妇被黑人到高潮喷出白浆 | 国产精品内射视频免费 | 在线 国产 欧美 亚洲 天堂 | 国产精品久久久久影院嫩草 | 少妇性荡欲午夜性开放视频剧场 | 男人扒开女人内裤强吻桶进去 | 亚洲成av人综合在线观看 | 中文字幕无码日韩欧毛 | 国产乱人偷精品人妻a片 | 国产真实乱对白精彩久久 | 精品人人妻人人澡人人爽人人 | 久久综合网欧美色妞网 | 亚洲自偷自拍另类第1页 | 日本熟妇大屁股人妻 | 无码纯肉视频在线观看 | 亚洲成av人影院在线观看 | 日韩欧美成人免费观看 | 无码人妻丰满熟妇区五十路百度 | 伊人久久大香线蕉亚洲 | 国产办公室秘书无码精品99 | 国产av无码专区亚洲a∨毛片 | 久久99久久99精品中文字幕 | 欧美日韩在线亚洲综合国产人 | 国产亚洲精品久久久久久久 | 伊人久久大香线蕉午夜 | 国产成人久久精品流白浆 | 婷婷丁香五月天综合东京热 | 97无码免费人妻超级碰碰夜夜 | 最近免费中文字幕中文高清百度 | 一本精品99久久精品77 | 精品少妇爆乳无码av无码专区 | 久久久亚洲欧洲日产国码αv | av小次郎收藏 | 日日噜噜噜噜夜夜爽亚洲精品 | 蜜桃臀无码内射一区二区三区 | 综合网日日天干夜夜久久 | 国产亚洲美女精品久久久2020 | 特黄特色大片免费播放器图片 | 亚洲中文字幕无码中文字在线 | 国产成人精品一区二区在线小狼 | 中文字幕色婷婷在线视频 | 午夜熟女插插xx免费视频 | 亚洲人成网站色7799 | 久久无码人妻影院 | 成年美女黄网站色大免费全看 | 夜精品a片一区二区三区无码白浆 | 激情内射亚州一区二区三区爱妻 | 国产午夜福利亚洲第一 | 免费网站看v片在线18禁无码 | 国产sm调教视频在线观看 | 国产精品无码一区二区三区不卡 | 国产一精品一av一免费 | 人人澡人摸人人添 | 久久国产劲爆∧v内射 | 久久精品丝袜高跟鞋 | 粗大的内捧猛烈进出视频 | 啦啦啦www在线观看免费视频 | 伊人久久大香线蕉午夜 | 欧美 亚洲 国产 另类 | 国产成人人人97超碰超爽8 | 国精产品一区二区三区 | 亚洲伊人久久精品影院 | 国产区女主播在线观看 | 国产情侣作爱视频免费观看 | 国产99久久精品一区二区 | 国产区女主播在线观看 | 欧美国产日产一区二区 | 中文字幕+乱码+中文字幕一区 | 成人精品一区二区三区中文字幕 | 中文字幕久久久久人妻 | www成人国产高清内射 | www一区二区www免费 | 国产免费观看黄av片 | 在教室伦流澡到高潮hnp视频 | 国产亚洲精品久久久久久久 | 国产成人精品必看 | 中文字幕乱码人妻无码久久 | 无码一区二区三区在线观看 | 无遮挡国产高潮视频免费观看 | 欧美日韩视频无码一区二区三 | 任你躁国产自任一区二区三区 | 久久精品国产亚洲精品 | 成人免费视频一区二区 | 日韩亚洲欧美中文高清在线 | 亚洲欧洲日本综合aⅴ在线 | 精品成在人线av无码免费看 | 大乳丰满人妻中文字幕日本 | 欧美日韩一区二区免费视频 | 亚洲欧美综合区丁香五月小说 | 亚洲日韩乱码中文无码蜜桃臀网站 | 对白脏话肉麻粗话av | 国产成人精品视频ⅴa片软件竹菊 | 无码任你躁久久久久久久 | 国内精品一区二区三区不卡 | 中文字幕无码日韩专区 | 欧美兽交xxxx×视频 | 六十路熟妇乱子伦 | 国产午夜精品一区二区三区嫩草 | 成人免费视频视频在线观看 免费 | 九九综合va免费看 | 亚洲日韩av一区二区三区四区 | 两性色午夜免费视频 | 亚洲中文无码av永久不收费 | 久久精品国产日本波多野结衣 | 久久久久亚洲精品中文字幕 | 波多野结衣乳巨码无在线观看 | 人人妻人人澡人人爽欧美一区 | 亚洲国产高清在线观看视频 | av香港经典三级级 在线 | 高清不卡一区二区三区 | 日韩无码专区 | 中文字幕无码热在线视频 | 六月丁香婷婷色狠狠久久 | 鲁一鲁av2019在线 | 男女爱爱好爽视频免费看 | 国产精品久久精品三级 | 少妇性荡欲午夜性开放视频剧场 | 亚洲男人av天堂午夜在 | 老头边吃奶边弄进去呻吟 | 国产内射爽爽大片视频社区在线 | 国产精品成人av在线观看 | 永久黄网站色视频免费直播 | 成人av无码一区二区三区 | 两性色午夜免费视频 | 国精产品一品二品国精品69xx | av人摸人人人澡人人超碰下载 | 无码人妻出轨黑人中文字幕 | 亚洲人成无码网www | 久久成人a毛片免费观看网站 | 国内揄拍国内精品人妻 | 久久久精品欧美一区二区免费 | 亚洲精品中文字幕久久久久 | 日本精品人妻无码77777 天堂一区人妻无码 | 2020久久超碰国产精品最新 | 人妻少妇精品久久 | 国产在线无码精品电影网 | 亚洲人成网站在线播放942 | 免费网站看v片在线18禁无码 | 图片小说视频一区二区 | 日韩精品无码一区二区中文字幕 | 日韩人妻无码一区二区三区久久99 | 亚洲а∨天堂久久精品2021 | 沈阳熟女露脸对白视频 | 亚洲精品久久久久久久久久久 | 国产真实乱对白精彩久久 | 精品亚洲成av人在线观看 | 午夜精品久久久久久久久 | 亚洲国产欧美日韩精品一区二区三区 | 国产性生交xxxxx无码 | 真人与拘做受免费视频一 | 狠狠色噜噜狠狠狠狠7777米奇 | 久久人人爽人人爽人人片ⅴ | 日日麻批免费40分钟无码 | 水蜜桃色314在线观看 | 久久国产自偷自偷免费一区调 | 久久精品女人天堂av免费观看 | 丰满人妻精品国产99aⅴ | 欧美自拍另类欧美综合图片区 | 一本加勒比波多野结衣 | 国产日产欧产精品精品app | 久久综合香蕉国产蜜臀av | 久久精品国产一区二区三区肥胖 | 老司机亚洲精品影院无码 | 国产艳妇av在线观看果冻传媒 | 高潮毛片无遮挡高清免费视频 | 国产精品久久久午夜夜伦鲁鲁 | 最新国产乱人伦偷精品免费网站 | 色婷婷综合中文久久一本 | 国产精品沙发午睡系列 | 在线 国产 欧美 亚洲 天堂 | 亚洲日本在线电影 | 精品无人区无码乱码毛片国产 | 精品偷拍一区二区三区在线看 | 少妇被粗大的猛进出69影院 | 久久综合香蕉国产蜜臀av | 亚洲乱码中文字幕在线 | 牛和人交xxxx欧美 | 国产高清av在线播放 | 国精品人妻无码一区二区三区蜜柚 | 亚洲中文字幕av在天堂 | 性欧美熟妇videofreesex | 人妻与老人中文字幕 | 国产熟妇高潮叫床视频播放 | 欧美日韩视频无码一区二区三 | 少妇厨房愉情理9仑片视频 | 国产午夜福利亚洲第一 | 大地资源中文第3页 | 亚洲人交乣女bbw | 十八禁真人啪啪免费网站 | 国产亚洲精品久久久久久 | 亚洲国产成人a精品不卡在线 | 国产女主播喷水视频在线观看 | 内射老妇bbwx0c0ck | 色婷婷久久一区二区三区麻豆 | 夜先锋av资源网站 | 美女黄网站人色视频免费国产 | 色综合久久久无码中文字幕 | 成人aaa片一区国产精品 | 国产精品资源一区二区 | 国产又粗又硬又大爽黄老大爷视 | 精品亚洲成av人在线观看 | 国产两女互慰高潮视频在线观看 | 人人妻人人澡人人爽欧美精品 | 无码av中文字幕免费放 | 亚洲中文字幕va福利 | 国产一区二区三区日韩精品 | 人妻天天爽夜夜爽一区二区 | 图片区 小说区 区 亚洲五月 | 国产成人人人97超碰超爽8 | 久久精品中文字幕一区 | 人妻与老人中文字幕 | 激情亚洲一区国产精品 | 久久久久成人片免费观看蜜芽 | 成人无码视频在线观看网站 | 宝宝好涨水快流出来免费视频 | 久久久成人毛片无码 | 国产 浪潮av性色四虎 | 巨爆乳无码视频在线观看 | 国产精品亚洲а∨无码播放麻豆 | 男女猛烈xx00免费视频试看 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 捆绑白丝粉色jk震动捧喷白浆 | 国产成人精品必看 | 麻豆国产丝袜白领秘书在线观看 | 色综合久久88色综合天天 | 日本在线高清不卡免费播放 | 在线а√天堂中文官网 | 特黄特色大片免费播放器图片 | 亚洲成av人片在线观看无码不卡 | 国精品人妻无码一区二区三区蜜柚 | 国产精品毛片一区二区 | 中文字幕人妻无码一区二区三区 | 欧美激情一区二区三区成人 | 性欧美videos高清精品 | 内射老妇bbwx0c0ck | 少妇一晚三次一区二区三区 | 无码国产乱人伦偷精品视频 | 亚洲国产精品毛片av不卡在线 | 美女毛片一区二区三区四区 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 性欧美videos高清精品 | 狠狠色丁香久久婷婷综合五月 | 日本乱人伦片中文三区 | 无码av免费一区二区三区试看 | 国产97人人超碰caoprom | 人妻无码αv中文字幕久久琪琪布 | 亚洲国产欧美日韩精品一区二区三区 | 乱人伦人妻中文字幕无码 | 国产精品高潮呻吟av久久4虎 | 亚洲日韩av一区二区三区中文 | av无码不卡在线观看免费 | av人摸人人人澡人人超碰下载 | 成人亚洲精品久久久久软件 | 婷婷综合久久中文字幕蜜桃三电影 | 精品久久久久久亚洲精品 | 久久综合九色综合97网 | 日韩精品无码免费一区二区三区 | 国产99久久精品一区二区 | 露脸叫床粗话东北少妇 | 日本一区二区三区免费高清 | 久久国产36精品色熟妇 | 久久精品成人欧美大片 | 中文字幕亚洲情99在线 | 国产欧美精品一区二区三区 | 内射爽无广熟女亚洲 | 日韩人妻无码中文字幕视频 | 正在播放东北夫妻内射 | 亚洲一区二区三区偷拍女厕 | 欧美老妇交乱视频在线观看 | 一本一道久久综合久久 | 少妇被粗大的猛进出69影院 | 国内精品人妻无码久久久影院蜜桃 | 中文字幕久久久久人妻 | 风流少妇按摩来高潮 | 国产精品久久福利网站 | 一区二区三区高清视频一 | 暴力强奷在线播放无码 | 久热国产vs视频在线观看 | 男女猛烈xx00免费视频试看 | 大色综合色综合网站 | 亚洲中文字幕无码中文字在线 | 荫蒂添的好舒服视频囗交 | 久热国产vs视频在线观看 | 成 人 网 站国产免费观看 | 亚洲乱码中文字幕在线 | 久久www免费人成人片 | 精品成在人线av无码免费看 | 色综合久久中文娱乐网 | 欧美亚洲国产一区二区三区 | 成熟人妻av无码专区 | 精品欧洲av无码一区二区三区 | 无码任你躁久久久久久久 | 97无码免费人妻超级碰碰夜夜 | 久久久久久久久蜜桃 | 日本丰满护士爆乳xxxx | 成人无码精品1区2区3区免费看 | 曰韩少妇内射免费播放 | 日本精品人妻无码免费大全 | 中文字幕乱码人妻二区三区 | 中文字幕人妻无码一夲道 | 国产无av码在线观看 | 无码av最新清无码专区吞精 | 亚洲色偷偷偷综合网 | 无码精品国产va在线观看dvd | 最近中文2019字幕第二页 | 白嫩日本少妇做爰 | 亚洲国产精品一区二区美利坚 | 人人超人人超碰超国产 | 丁香啪啪综合成人亚洲 | 精品 日韩 国产 欧美 视频 | 欧美怡红院免费全部视频 | 国产成人精品优优av | 中文字幕亚洲情99在线 | 午夜成人1000部免费视频 | 久久人人爽人人爽人人片av高清 | 午夜福利试看120秒体验区 | 久久精品国产精品国产精品污 | √8天堂资源地址中文在线 | 初尝人妻少妇中文字幕 | 欧美激情综合亚洲一二区 | 免费观看激色视频网站 | www成人国产高清内射 | 99久久婷婷国产综合精品青草免费 | 美女极度色诱视频国产 | 日本又色又爽又黄的a片18禁 | 国产精品久久久久9999小说 | 久久人人97超碰a片精品 | 中文无码精品a∨在线观看不卡 | 波多野结衣av在线观看 | 老头边吃奶边弄进去呻吟 | 欧美精品免费观看二区 | 在教室伦流澡到高潮hnp视频 | 九一九色国产 | 国产乱人无码伦av在线a | 免费观看激色视频网站 | 青青青爽视频在线观看 | 精品欧美一区二区三区久久久 | 亚洲精品成人av在线 | 久久久国产精品无码免费专区 | 亚洲欧美国产精品专区久久 | 狂野欧美性猛xxxx乱大交 | 久久久无码中文字幕久... | 无码乱肉视频免费大全合集 | 国产特级毛片aaaaaaa高清 | 国产97人人超碰caoprom | 丁香啪啪综合成人亚洲 | 亚洲一区二区三区含羞草 | 成人欧美一区二区三区黑人 | 无码免费一区二区三区 | 中文字幕无码免费久久99 | 国产农村妇女高潮大叫 | 亚洲另类伦春色综合小说 | 亚洲人成影院在线无码按摩店 | 强开小婷嫩苞又嫩又紧视频 | 精品亚洲韩国一区二区三区 | 成人性做爰aaa片免费看不忠 | 欧洲熟妇色 欧美 | 色婷婷综合中文久久一本 | 丰满人妻精品国产99aⅴ | 狠狠色噜噜狠狠狠7777奇米 | 88国产精品欧美一区二区三区 | 欧美大屁股xxxxhd黑色 | av人摸人人人澡人人超碰下载 | 精品无码国产一区二区三区av | 国产精品无码成人午夜电影 | 对白脏话肉麻粗话av | 国产人妻精品一区二区三区 | 欧美怡红院免费全部视频 | 97精品国产97久久久久久免费 | 1000部啪啪未满十八勿入下载 | 强伦人妻一区二区三区视频18 | 成人精品视频一区二区 | 天堂а√在线地址中文在线 | 久久综合给合久久狠狠狠97色 | 久久人人爽人人人人片 | 少妇人妻av毛片在线看 | 无套内谢的新婚少妇国语播放 | 狠狠亚洲超碰狼人久久 | 国产特级毛片aaaaaaa高清 | 国产精品99爱免费视频 | 免费无码肉片在线观看 | 草草网站影院白丝内射 | 无码一区二区三区在线观看 | 国产精品-区区久久久狼 | 久久久精品欧美一区二区免费 | 玩弄人妻少妇500系列视频 | 午夜福利一区二区三区在线观看 | 九九热爱视频精品 | 欧美人与禽zoz0性伦交 | 自拍偷自拍亚洲精品被多人伦好爽 | 亚洲中文字幕无码中字 | 国产热a欧美热a在线视频 | 亚洲成av人片在线观看无码不卡 | 18禁止看的免费污网站 | 牲欲强的熟妇农村老妇女 | aa片在线观看视频在线播放 | www国产亚洲精品久久久日本 | 亚洲成熟女人毛毛耸耸多 | 欧美阿v高清资源不卡在线播放 | 人人妻人人澡人人爽人人精品 | 乱码午夜-极国产极内射 | а√天堂www在线天堂小说 | 少妇的肉体aa片免费 | 高清国产亚洲精品自在久久 | 精品无码国产自产拍在线观看蜜 | 精品国产一区二区三区av 性色 | 人人妻人人澡人人爽精品欧美 | 亚洲精品国产精品乱码视色 | 欧美日韩视频无码一区二区三 | 国产午夜无码视频在线观看 | 日韩欧美群交p片內射中文 | 亚洲日韩中文字幕在线播放 | 沈阳熟女露脸对白视频 | 亚洲一区二区三区国产精华液 | 国产真实伦对白全集 | 麻豆果冻传媒2021精品传媒一区下载 | 久久久久久久人妻无码中文字幕爆 | 久久精品国产一区二区三区 | 四十如虎的丰满熟妇啪啪 | 欧美日韩综合一区二区三区 | 国产av一区二区三区最新精品 | 丰满护士巨好爽好大乳 | 精品国产aⅴ无码一区二区 | 国产乱人伦偷精品视频 | 欧美激情一区二区三区成人 | 天天拍夜夜添久久精品大 | 国产激情无码一区二区app | 无遮挡啪啪摇乳动态图 | 国产极品视觉盛宴 | 国产欧美精品一区二区三区 | 亚洲成a人片在线观看无码 | 久久精品国产精品国产精品污 | 亚洲综合色区中文字幕 | 日本爽爽爽爽爽爽在线观看免 | 国产香蕉尹人综合在线观看 | 成人精品视频一区二区 | 国产激情无码一区二区app | 日本一卡二卡不卡视频查询 | 日本精品人妻无码免费大全 | 欧美zoozzooz性欧美 | 强辱丰满人妻hd中文字幕 | 亚洲国产精品毛片av不卡在线 | 97精品国产97久久久久久免费 | 久久综合九色综合97网 | 亚洲日韩av一区二区三区中文 | 99久久亚洲精品无码毛片 | 亚洲国产精品无码一区二区三区 | 成人女人看片免费视频放人 | 日韩精品a片一区二区三区妖精 | 国产精品a成v人在线播放 | 噜噜噜亚洲色成人网站 | 欧美精品在线观看 | 内射后入在线观看一区 | 成人av无码一区二区三区 | 亚洲中文字幕久久无码 | 日本精品少妇一区二区三区 | 亚洲精品成人福利网站 | 亚洲自偷精品视频自拍 | 精品一二三区久久aaa片 | 国产亚洲视频中文字幕97精品 | 国产乱人无码伦av在线a | 国产在线精品一区二区高清不卡 | 国产99久久精品一区二区 | 荫蒂被男人添的好舒服爽免费视频 | 中文字幕无线码 | 久久久久久久女国产乱让韩 | 国产又粗又硬又大爽黄老大爷视 | 日韩精品乱码av一区二区 | 亚洲一区二区三区四区 | 亚洲日本在线电影 | 色欲综合久久中文字幕网 | 国产又粗又硬又大爽黄老大爷视 | 国产精品久久久av久久久 | 国产一区二区不卡老阿姨 | 国产精品毛片一区二区 | 天天拍夜夜添久久精品 | 亚洲欧美国产精品专区久久 | 国产成人精品久久亚洲高清不卡 | av香港经典三级级 在线 | 四虎国产精品免费久久 | а天堂中文在线官网 | 成人免费视频视频在线观看 免费 | 少妇人妻av毛片在线看 | 又大又硬又黄的免费视频 | 亚洲中文字幕乱码av波多ji | 乱码午夜-极国产极内射 | 国产精品亚洲五月天高清 | 99久久99久久免费精品蜜桃 | 又大又硬又黄的免费视频 | 性色av无码免费一区二区三区 | 精品人人妻人人澡人人爽人人 | 亚洲国产精品久久久久久 | 亚洲一区二区三区在线观看网站 | 久久久久久久女国产乱让韩 | 麻豆人妻少妇精品无码专区 | 久久亚洲a片com人成 | 久久午夜夜伦鲁鲁片无码免费 | 国产无遮挡吃胸膜奶免费看 | 国产极品美女高潮无套在线观看 | 在线播放无码字幕亚洲 | 国产真实夫妇视频 | 亚洲精品一区二区三区在线 | 久久久中文字幕日本无吗 | 丰满人妻一区二区三区免费视频 | 中文字幕久久久久人妻 | 一本精品99久久精品77 | 99精品国产综合久久久久五月天 | 丰满人妻翻云覆雨呻吟视频 | 无码吃奶揉捏奶头高潮视频 | 人人爽人人澡人人高潮 | 日韩亚洲欧美中文高清在线 | 欧美猛少妇色xxxxx | 内射巨臀欧美在线视频 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 蜜臀av在线观看 在线欧美精品一区二区三区 | av人摸人人人澡人人超碰下载 | 日韩欧美群交p片內射中文 | 精品亚洲成av人在线观看 | 少妇无码av无码专区在线观看 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 老司机亚洲精品影院 | 大乳丰满人妻中文字幕日本 | 精品人妻人人做人人爽 | 国产农村妇女高潮大叫 | 日韩成人一区二区三区在线观看 | 久久精品国产大片免费观看 | 国产精品无码一区二区三区不卡 | 日本高清一区免费中文视频 | 在线欧美精品一区二区三区 | 免费无码一区二区三区蜜桃大 | 精品国产一区二区三区四区在线看 | 亚洲精品久久久久中文第一幕 | 欧美阿v高清资源不卡在线播放 | 亚洲小说春色综合另类 | 久久精品女人天堂av免费观看 | 丁香啪啪综合成人亚洲 | 中文字幕无码日韩欧毛 | 无套内谢老熟女 | 久久精品中文闷骚内射 | 亚洲国产欧美日韩精品一区二区三区 | 玩弄人妻少妇500系列视频 | 精品久久久无码中文字幕 | 国产黄在线观看免费观看不卡 | 亚洲色欲色欲天天天www | 国内综合精品午夜久久资源 | 国产另类ts人妖一区二区 | 亚洲自偷精品视频自拍 | 啦啦啦www在线观看免费视频 | 国精产品一品二品国精品69xx | 国产av一区二区三区最新精品 | 亚洲欧美中文字幕5发布 | 理论片87福利理论电影 | 纯爱无遮挡h肉动漫在线播放 | 日韩精品无码一本二本三本色 | 日韩精品久久久肉伦网站 | 亚洲国产欧美在线成人 | 亚洲经典千人经典日产 | 国产精品久久久一区二区三区 | 一区二区三区乱码在线 | 欧洲 | 国产熟女一区二区三区四区五区 | 99精品无人区乱码1区2区3区 | 国产av无码专区亚洲awww | 少妇高潮一区二区三区99 | 日本在线高清不卡免费播放 | 最近的中文字幕在线看视频 | 成人免费视频一区二区 | 久久精品人人做人人综合试看 | 国模大胆一区二区三区 | 国产亲子乱弄免费视频 | 全球成人中文在线 | 中文字幕色婷婷在线视频 | 狠狠综合久久久久综合网 | 理论片87福利理论电影 | 欧美激情综合亚洲一二区 | 疯狂三人交性欧美 | 国产av一区二区三区最新精品 | 亚洲男人av香蕉爽爽爽爽 | 夜夜高潮次次欢爽av女 | 免费乱码人妻系列无码专区 | 人人澡人摸人人添 | 熟妇人妻无码xxx视频 | 亚洲人成人无码网www国产 | 精品国产成人一区二区三区 | 十八禁视频网站在线观看 | 日韩欧美中文字幕公布 | 亚洲国产欧美国产综合一区 | v一区无码内射国产 | 在线a亚洲视频播放在线观看 | 成人毛片一区二区 | 人人妻人人藻人人爽欧美一区 | 国产精华av午夜在线观看 | 国产精品爱久久久久久久 | a片免费视频在线观看 | 伊人色综合久久天天小片 | 中文精品无码中文字幕无码专区 | 欧美人与善在线com | 伊在人天堂亚洲香蕉精品区 | 一本久道久久综合狠狠爱 | 国产免费无码一区二区视频 | 欧美35页视频在线观看 | 乱人伦人妻中文字幕无码久久网 | 激情人妻另类人妻伦 | 在线亚洲高清揄拍自拍一品区 | 久久人人爽人人爽人人片ⅴ | 欧美性生交活xxxxxdddd | 丰满人妻被黑人猛烈进入 | 日韩精品无码一区二区中文字幕 | 国产精品久免费的黄网站 | 亚洲精品午夜无码电影网 | 搡女人真爽免费视频大全 | 国产两女互慰高潮视频在线观看 | 国产精品久久久久影院嫩草 | 激情综合激情五月俺也去 | 亚洲色欲色欲天天天www | 国产亚洲欧美在线专区 | 亚洲日韩精品欧美一区二区 | 色婷婷av一区二区三区之红樱桃 | 成熟妇人a片免费看网站 | 久久亚洲日韩精品一区二区三区 | 欧美xxxxx精品 | 亚洲精品一区二区三区在线 | 久久精品国产亚洲精品 | 久久婷婷五月综合色国产香蕉 | 亚洲男女内射在线播放 | 久久亚洲精品成人无码 | 黑人大群体交免费视频 | 久久99国产综合精品 | 欧美日韩一区二区三区自拍 | 日本饥渴人妻欲求不满 | 2020久久香蕉国产线看观看 | 亚洲中文字幕久久无码 | 欧美阿v高清资源不卡在线播放 | 四虎影视成人永久免费观看视频 | 大肉大捧一进一出视频出来呀 | 中文字幕乱码人妻无码久久 | 日韩亚洲欧美中文高清在线 | 嫩b人妻精品一区二区三区 | 日韩精品无码免费一区二区三区 | 内射白嫩少妇超碰 | 日韩无套无码精品 | 亚洲成av人片在线观看无码不卡 | 粉嫩少妇内射浓精videos | 色一情一乱一伦一区二区三欧美 | 人人妻人人澡人人爽欧美一区九九 | 亚洲精品国产第一综合99久久 | 青青青手机频在线观看 | 夜精品a片一区二区三区无码白浆 | 国产精品无码久久av | 国产69精品久久久久app下载 | 国产尤物精品视频 | 精品国产成人一区二区三区 | 扒开双腿吃奶呻吟做受视频 | 亚洲成av人片在线观看无码不卡 | 亚洲中文字幕无码一久久区 | 波多野结衣乳巨码无在线观看 | 精品无人国产偷自产在线 | 国产精品久久精品三级 | 亚洲色大成网站www | 日日碰狠狠躁久久躁蜜桃 | 纯爱无遮挡h肉动漫在线播放 | 精品亚洲韩国一区二区三区 | 亚洲精品一区国产 | 国产人妻大战黑人第1集 | 激情人妻另类人妻伦 | 欧美人妻一区二区三区 | 亚洲欧美精品aaaaaa片 | 性生交片免费无码看人 | 中文字幕日产无线码一区 | 免费中文字幕日韩欧美 | 激情内射日本一区二区三区 | 欧美精品一区二区精品久久 | 中文字幕乱码人妻无码久久 | 国产精品-区区久久久狼 | 亚洲精品中文字幕 | 人妻aⅴ无码一区二区三区 | 性色欲网站人妻丰满中文久久不卡 | 撕开奶罩揉吮奶头视频 | 男女猛烈xx00免费视频试看 | 久久久久久久久蜜桃 | 性欧美牲交在线视频 | 十八禁真人啪啪免费网站 | 色婷婷欧美在线播放内射 | 精品人妻人人做人人爽夜夜爽 | 免费观看又污又黄的网站 | 精品人妻av区 | 国产精品久久国产三级国 | 免费观看又污又黄的网站 | 超碰97人人做人人爱少妇 | 色偷偷人人澡人人爽人人模 | 亚洲一区二区三区在线观看网站 | 无套内谢的新婚少妇国语播放 | 野狼第一精品社区 | 国产亚av手机在线观看 | 天天av天天av天天透 | 性欧美牲交在线视频 | 免费视频欧美无人区码 | 国产一区二区三区精品视频 | 国产猛烈高潮尖叫视频免费 | 国产精品手机免费 | 久久国产精品萌白酱免费 | 亚洲七七久久桃花影院 | 欧美熟妇另类久久久久久多毛 | 老头边吃奶边弄进去呻吟 | 97无码免费人妻超级碰碰夜夜 | 性欧美疯狂xxxxbbbb | 俺去俺来也在线www色官网 | 在线成人www免费观看视频 | 成人三级无码视频在线观看 | 亚洲精品国产第一综合99久久 | 国内揄拍国内精品人妻 | 狠狠色噜噜狠狠狠狠7777米奇 | 久久久久久a亚洲欧洲av冫 | 亚洲理论电影在线观看 | 精品国产一区av天美传媒 | 国产情侣作爱视频免费观看 | 欧美国产日韩久久mv | 国产精品多人p群无码 | 亚洲精品国产精品乱码视色 | 午夜男女很黄的视频 | 国产麻豆精品一区二区三区v视界 | 呦交小u女精品视频 | 国产精品美女久久久网av | 亚洲日本va中文字幕 | 欧美成人免费全部网站 | 亚洲无人区一区二区三区 | 精品无码国产自产拍在线观看蜜 | 精品 日韩 国产 欧美 视频 | 黑人巨大精品欧美黑寡妇 | 亚洲国产高清在线观看视频 | 国产精品办公室沙发 | 欧美午夜特黄aaaaaa片 | 东京热无码av男人的天堂 | 日日夜夜撸啊撸 | 免费播放一区二区三区 | 欧洲精品码一区二区三区免费看 | 鲁鲁鲁爽爽爽在线视频观看 | 88国产精品欧美一区二区三区 | 免费看少妇作爱视频 | 国产亚洲精品久久久久久久久动漫 | 国产日产欧产精品精品app | 欧美日韩色另类综合 | 日韩亚洲欧美精品综合 | 日本欧美一区二区三区乱码 | 亚洲一区二区三区无码久久 | 久久久亚洲欧洲日产国码αv | 熟女少妇人妻中文字幕 | 国产无套内射久久久国产 | ass日本丰满熟妇pics | 日韩人妻无码一区二区三区久久99 | 性欧美熟妇videofreesex | av无码不卡在线观看免费 | 日本xxxx色视频在线观看免费 | 成人毛片一区二区 | 性开放的女人aaa片 | 99麻豆久久久国产精品免费 | 国产精品久久久久久久影院 | 日产国产精品亚洲系列 | 99久久久国产精品无码免费 | 日本在线高清不卡免费播放 | 久久精品视频在线看15 | 亚洲の无码国产の无码步美 | 亚洲精品美女久久久久久久 | 国产精品对白交换视频 | 国产精品久久久久久无码 | 精品久久久久久亚洲精品 | 亚洲精品国产品国语在线观看 | 三级4级全黄60分钟 | 国产精品久久久久久无码 | 色婷婷综合中文久久一本 | 中文字幕 亚洲精品 第1页 | 午夜精品一区二区三区的区别 | 亚洲男人av香蕉爽爽爽爽 | 国产成人无码av在线影院 | 亚洲色欲久久久综合网东京热 | 亚洲精品一区二区三区在线 | 无码人妻丰满熟妇区毛片18 | 无码成人精品区在线观看 | 色综合久久久久综合一本到桃花网 | 国产精品欧美成人 | 成人精品视频一区二区 | 亚洲成色在线综合网站 | 一本久道久久综合婷婷五月 | 国产69精品久久久久app下载 | 久久久久久亚洲精品a片成人 | 欧美精品无码一区二区三区 | 扒开双腿吃奶呻吟做受视频 | 国产精品高潮呻吟av久久4虎 | 国产精品成人av在线观看 | 亚洲精品一区三区三区在线观看 | 天堂久久天堂av色综合 | 窝窝午夜理论片影院 | 久久久久99精品国产片 | 亚洲国产精品无码久久久久高潮 | 亚洲人成网站在线播放942 | 成人试看120秒体验区 | 国产性生大片免费观看性 | 日日摸日日碰夜夜爽av | 色综合久久中文娱乐网 | 少妇无码av无码专区在线观看 | 2020久久超碰国产精品最新 | 欧美人与牲动交xxxx | 久久综合香蕉国产蜜臀av | 亚洲欧美中文字幕5发布 | 国产超碰人人爽人人做人人添 | 亚洲国产成人a精品不卡在线 | 国产性生交xxxxx无码 | 国产情侣作爱视频免费观看 | 国产网红无码精品视频 | 1000部啪啪未满十八勿入下载 | 夜夜夜高潮夜夜爽夜夜爰爰 | 在线播放亚洲第一字幕 | 性欧美牲交在线视频 | 国产黄在线观看免费观看不卡 | 国产成人精品视频ⅴa片软件竹菊 | 亚洲一区二区三区四区 | 日韩人妻无码一区二区三区久久99 | 夜精品a片一区二区三区无码白浆 | 国产亚洲欧美在线专区 | 亚洲男女内射在线播放 | 欧美老妇交乱视频在线观看 | 女人高潮内射99精品 | 樱花草在线播放免费中文 | 久久人人97超碰a片精品 | 久久午夜无码鲁丝片秋霞 | 国产精品久久久久无码av色戒 | 成在人线av无码免费 | 中文字幕 亚洲精品 第1页 | 色噜噜亚洲男人的天堂 | 精品无人国产偷自产在线 | 奇米影视7777久久精品人人爽 | 无码中文字幕色专区 | 精品国产乱码久久久久乱码 | 人人超人人超碰超国产 | 日韩av无码一区二区三区 | 狠狠色欧美亚洲狠狠色www | 成人试看120秒体验区 | 中文字幕 亚洲精品 第1页 | 免费观看又污又黄的网站 | 水蜜桃av无码 | 亚无码乱人伦一区二区 | 无套内射视频囯产 | 日日摸夜夜摸狠狠摸婷婷 | 国产无遮挡又黄又爽又色 | 狂野欧美激情性xxxx | 最近免费中文字幕中文高清百度 | 久久亚洲日韩精品一区二区三区 | 无码人妻出轨黑人中文字幕 | 欧美精品国产综合久久 | 国产精品久免费的黄网站 | 午夜福利试看120秒体验区 | 久久亚洲中文字幕无码 | 亚洲精品中文字幕 | 国产精品无码mv在线观看 | 欧美日韩一区二区免费视频 | 国产乱码精品一品二品 | 亚洲中文无码av永久不收费 | 午夜无码人妻av大片色欲 | 午夜精品久久久久久久 | 无码av最新清无码专区吞精 | 亚洲精品国产第一综合99久久 | 十八禁真人啪啪免费网站 | 色欲久久久天天天综合网精品 | 精品人妻人人做人人爽夜夜爽 | 18禁黄网站男男禁片免费观看 | 麻豆国产丝袜白领秘书在线观看 | 免费无码一区二区三区蜜桃大 | 欧美亚洲日韩国产人成在线播放 | 国产午夜亚洲精品不卡 | 欧美丰满少妇xxxx性 | 无套内谢的新婚少妇国语播放 | 无码国模国产在线观看 | 麻豆果冻传媒2021精品传媒一区下载 | 国产97人人超碰caoprom | 成人精品天堂一区二区三区 | 成人免费视频在线观看 | 又色又爽又黄的美女裸体网站 | 久久精品人人做人人综合试看 | 日韩精品无码一区二区中文字幕 | 亚洲国产成人a精品不卡在线 | 97色伦图片97综合影院 | 亚洲一区二区三区香蕉 | 欧美性猛交内射兽交老熟妇 | 白嫩日本少妇做爰 | 午夜不卡av免费 一本久久a久久精品vr综合 | 国産精品久久久久久久 | 欧美freesex黑人又粗又大 | 亚洲一区二区三区播放 | 国产精品久久久久久亚洲影视内衣 | 大胆欧美熟妇xx | 亚洲国产精品无码一区二区三区 | 四虎国产精品一区二区 | 久久精品国产大片免费观看 | 无码纯肉视频在线观看 | 最近中文2019字幕第二页 | 精品国产av色一区二区深夜久久 | 亚洲日韩av一区二区三区中文 | 人人妻在人人 | 亚洲精品久久久久久久久久久 | 国产精品久久久久久久影院 | 无码人妻丰满熟妇区毛片18 | 无码国产色欲xxxxx视频 | 国产成人精品必看 | 97久久精品无码一区二区 | 久激情内射婷内射蜜桃人妖 | 亚洲精品鲁一鲁一区二区三区 | 国产乱码精品一品二品 | 日韩精品成人一区二区三区 | 亚洲精品国偷拍自产在线麻豆 | 激情五月综合色婷婷一区二区 | 久久久久亚洲精品男人的天堂 | 色噜噜亚洲男人的天堂 | 樱花草在线社区www | 国产亚洲精品久久久久久 | 国产精品久久精品三级 | 久久人人爽人人人人片 | 欧美自拍另类欧美综合图片区 | 亚洲自偷精品视频自拍 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 对白脏话肉麻粗话av | 国产香蕉尹人综合在线观看 | 内射巨臀欧美在线视频 | 成人片黄网站色大片免费观看 | 日产精品99久久久久久 | 少妇被黑人到高潮喷出白浆 | 久久无码人妻影院 | 亚洲精品一区二区三区在线观看 | 国产人妻精品一区二区三区不卡 | 亚洲日韩一区二区三区 | 一本久久伊人热热精品中文字幕 | 性史性农村dvd毛片 | 亚洲熟熟妇xxxx | 人人妻人人澡人人爽欧美精品 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 亚洲熟妇色xxxxx欧美老妇y | 亚洲乱码国产乱码精品精 | 亚洲无人区一区二区三区 | 久久久久99精品国产片 | 亚洲中文字幕成人无码 | 骚片av蜜桃精品一区 | 精品一区二区三区波多野结衣 | 香港三级日本三级妇三级 | 帮老师解开蕾丝奶罩吸乳网站 | 狂野欧美性猛xxxx乱大交 | 99久久久国产精品无码免费 | 少妇性l交大片欧洲热妇乱xxx | 久久亚洲日韩精品一区二区三区 | 大肉大捧一进一出视频出来呀 | 国产激情无码一区二区 | 日韩av无码中文无码电影 | 国产激情综合五月久久 | 最新国产乱人伦偷精品免费网站 | 夜夜高潮次次欢爽av女 | 国产精品亚洲а∨无码播放麻豆 | 无码吃奶揉捏奶头高潮视频 | 永久黄网站色视频免费直播 | 国产农村妇女高潮大叫 | 97久久精品无码一区二区 | 久久精品人妻少妇一区二区三区 | 国产一区二区三区精品视频 | 妺妺窝人体色www在线小说 | 色老头在线一区二区三区 | 亚洲精品国产第一综合99久久 | 亚洲一区二区三区播放 | 国产av人人夜夜澡人人爽麻豆 | 人人妻人人澡人人爽欧美一区 | 成人毛片一区二区 | 水蜜桃色314在线观看 | 精品国产一区二区三区av 性色 | 漂亮人妻洗澡被公强 日日躁 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 亚洲精品美女久久久久久久 | 国产手机在线αⅴ片无码观看 | 国产精品国产三级国产专播 | 精品无人国产偷自产在线 | 激情内射亚州一区二区三区爱妻 | 国产激情精品一区二区三区 | 国产高清不卡无码视频 | 丰满护士巨好爽好大乳 | 帮老师解开蕾丝奶罩吸乳网站 | 扒开双腿疯狂进出爽爽爽视频 | 色婷婷av一区二区三区之红樱桃 | 国产成人人人97超碰超爽8 | 97夜夜澡人人双人人人喊 | 少妇无码av无码专区在线观看 | 亚洲国产欧美日韩精品一区二区三区 | 亚洲国产精品一区二区美利坚 | 思思久久99热只有频精品66 | 97无码免费人妻超级碰碰夜夜 | 欧美人与禽zoz0性伦交 | 国产精品美女久久久久av爽李琼 | 内射白嫩少妇超碰 | 131美女爱做视频 | 精品国产一区二区三区四区 | av在线亚洲欧洲日产一区二区 | 在线视频网站www色 | 国产精品无码一区二区桃花视频 | 国产av无码专区亚洲awww | 国产熟妇高潮叫床视频播放 | 六月丁香婷婷色狠狠久久 | а天堂中文在线官网 | 人妻人人添人妻人人爱 |