999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

自然語言生成多表SQL查詢語句技術研究*

2020-07-10 12:29:10曹金超吳曉凡
計算機與生活 2020年7期
關鍵詞:數據庫實驗模型

曹金超,黃 滔,陳 剛,3,吳曉凡,陳 珂,3+

1.浙江大學 計算機科學與技術學院,杭州310027

2.浙江邦盛科技有限公司,杭州310012

3.浙江大學 浙江省大數據智能計算重點實驗室,杭州310027

4.網易(杭州)網絡有限公司,杭州310051

1 引言

隨著信息技術的快速變革,如何通過自然語言直接與傳統關系數據庫交互,也就是如何將人的自然問句轉化成數據庫可以執行的SQL(structured query language)語句已經成為人工智能領域的研究熱點之一。為方便管理,可以利用關系型數據庫來存儲數據,然而通過關系型數據庫來查詢數據需要預先學習數據庫系統以及數據庫查詢語句SQL上的專業知識,這對一個普通用戶來說顯然很難實現。為了解決這個問題,許多研究工作都采用了相似的解決思路,通過實現一個自然語言查詢接口(natural language interface,NLI)來完成用戶通過日常使用的自然語言與數據庫進行交互從而獲取想要查詢的數據[1]。

如今,自然語言查詢接口也產生了很多商業上的應用,例如智能語音助手、智能搜索引擎和對話系統等。同時,該問題亦是新型供電軌道交通系統混合時態大數據個性化運維的最棘手的難點之一。

NLI 最重要的一個部分就是將自然語言查詢描述轉化為標準的SQL 查詢語句(NL2SQL)。針對這個問題,目前有兩個不同的解決思路:(1)流水線方法,將自然語言查詢轉化為一種中間表達,再將其映射為SQL 語句;(2)深度學習方法,使用端到端的神經網絡來完成轉化[1]。

流水線方法將自然語言轉化為中間表達的過程依賴于自然語言查詢的規則化描述,因此無法處理一些復雜多變的自然語言描述。而近年來,隨著深度學習技術的不斷發展,使用神經網絡模型來處理NL2SQL 的工作也越發普遍。其優勢較前者在于不受自然語言描述多樣性的限制,也能從復雜的表達中提取出關注的語義信息。但現有NL2SQL 的深度學習方法存在著一定的局限性,需指定當前自然語言查詢對應數據庫中的哪一張表,也就忽略了自然語言查詢到對應查詢表的映射,同時也無法支持如圖1中所示例的多表查詢。

從這個局限性出發,本文針對自然語言生成多表SQL查詢的問題提出了一種解決方法。本文主要的工作和貢獻如下:

(1)相比于現有工作基于模板的深度學習模型,本文的深度學習模型能處理更復雜的自然語言查詢,因此能生成更為復雜的SQL 語句,包括GROUP BY、ORDER BY等關鍵詞;

(2)利用深度學習模型生成的部分SQL 子句提及的表和數據庫模式圖,采用了一種全局最優的算法來生成FROM子句中多表的JOIN路徑;

(3)通過在一個開放的復雜自然語言生成SQL的數據集Spider上與其他多種模型的對比,本文方法具有更高的準確率。

2 相關工作

盡管自然語言查詢接口已經發展了很長一段時間,但要準確地理解自然語言查詢中的語義依舊是一個具有挑戰性的問題。早期的NL2SQL 需要針對不同的數據庫來人工制定相應的語法和語義規則,但此方法缺乏遷移性和擴展性[2]。更傾向于構建與數據庫結構和內容無關,能夠自適應的NL2SQL接口。

其中一種就是流水線的方法,這種方法通常利用一些中間表達來把自然語言查詢轉化為SQL。Unger等人[3]在2012年提出了將自然語言查詢轉化為一種名為SPARQL的查詢模板,通過WordNet來填充這個查詢模板中的槽。Jagadish 等人[4]在2014 年提出了NaLIR 系統,該系統利用一種“解析樹”的中間表達,將其反饋給用戶后讓用戶選擇與自己理想查詢最匹配的“解析樹”,最終通過譯碼器將用戶選擇的“解析樹”轉化為SQL。整個過程需要用戶與系統交互才能確定最終的結果,自動化程度不高。上述基于流水線的方法[3-4]需要提前清晰地定義它們語義的覆蓋范圍,以及對自然語言查詢描述也存在一些規則限制,因此不能靈活地處理用戶不同方式的提問,具有一定的局限性。

而隨著深度學習技術的不斷發展,通過應用神經網絡模型就能較好地解決自然語言描述復雜多變的問題。早期的研究把NL2SQL 處理成一個序列生成的問題,利用Seq2Seq 模型[5]來完成這個任務。Li等人使用Seq2Seq+Attention模型[6],通過注意力增強的方法來提升SQL 生成的準確率。Wang 等人使用Seq2Seq+Copying 模型[7],通過復制機制定位到輸入自然語言描述的其中一部分,將其直接作為輸出SQL 語句的對應的部分,復制的部分主要包括自然語言描述中數據表的列名和一些字符串或數值。然而,一般的Seq2Seq模型沒有考慮到SQL語句的格式和語法上還存在一定的規則,因此生成的SQL 可能會產生語法上的錯誤。因此,Xu 等人[8]在2017 年提出了一個SQLNet模型,利用預先定義好SQL查詢的模板,如圖2 所示,然后對其各個部分進行預測和填充。這種方式相對于Seq2Seq 模型來說能大幅度減少輸出SQL查詢的語法錯誤,從而提高準確率。

Fig.2 SQL sketch in SQLNet圖2 SQLNet中的SQL模板

然而針對深度學習模型,需要大量的自然語言查詢與SQL 查詢的配對標注來作為訓練數據,而標注數據的獲取通常代價昂貴。針對這個問題,一些最新的自然語言處理研究工作提出了使用大規模語料來產生預訓練模型的方法,預訓練模型在許多自然語言處理(NLP)相關的下游任務中取得了不錯的效果,例如BERT[9](bidirectional encoder representation from transformers)、MT-DNN(multi-task deep neural network)[10]。He等人[11]提出了X-SQL模型,該模型利用MT-DNN預訓練模型對自然語言查詢和數據庫模式進行特征提取來提升效果。

現有的深度學習模型[5,8,11]都局限于在數據庫的單表中查詢,生成結果不包含多表的JOIN路徑,適用的范圍較窄,無法進行多表SQL 查詢生成。本文提出的模型架構能夠解決這個問題,從而實現包含JOIN路徑的多表SQL查詢的生成。

3 問題定義

自然語言查詢轉化為標準SQL 查詢語句,其形式化定義為:

輸入:

由n個詞語組成的自然語言祈使句或疑問句:

數據庫模式集合:

其中,k表示該數據庫中表的個數。

其中,Ti表示當前表的表名,m表示表i列名的個數,Aj表示表i的第j個列名。

數據庫模式圖(schema graph):

其中,V表示節點,對應于數據庫中的表;E表示邊,對應表之間的主外鍵關聯關系;w表示邊的權重值,默認為1。

輸出:

與自然語言查詢Q對應的SQL 查詢語句R,格式如圖3所示。

Fig.3 Generated SQL sketch in proposed model圖3 本文生成SQL的模板

其中$VAL來自于自然語言查詢Q中,本文模型暫不進行預測。$TAB和$COL分別來自數據庫模式S的表名和列名。$AGG 的取值集合為{‘NONE’,‘MAX’,‘MIN’,‘COUNT’,‘SUM’,‘AVG’},$OP 的取值集合為{‘=’,‘>’,‘<’,‘>=’,‘<=’,‘!=’},$ORD 的取值集合為{‘DESC’,‘ASC’}。(…)*代表是零個或者多個,若為零個,則括號前對應的SQL 關鍵詞也需省略,[…]*代表至少有一個。

4 方法和模型

為解決自然語言查詢生成多表SQL查詢語句的問題,本文將分為兩個階段,分別為SQL子句生成和JOIN路徑生成。通過充分利用SQL查詢語句特定的語法,將SQL 生成結果定義為圖3 的格式模板,將序列生成轉化為多個分類問題,只需要對帶“$”的部分進行填充即可獲得標準的SQL查詢語句。本文的整體模型架構如圖4所示。

4.1 輸入編碼

輸入的編碼包括兩部分,自然語言查詢和數據庫模式。本文通過使用處理文本序列常用的雙向長短時記憶(bidirectional long short term memory,Bi-LSTM)網絡模型[12]來對自然語言查詢和數據庫模式中的列名進行編碼,產生對應的特征向量。

Fig.4 Overall architecture of proposed model圖4 本文模型的整體架構

4.1.1 帶表名信息的列名特征向量

SQL 子句的構成包含許多數據表中的列名信息,因此通過模型來獲取數據庫模式信息也是很有必要的。針對相關工作中提到的單表查詢,在SQL生成前已經給定當前自然語言查詢對應的表,因此不必再將表的信息嵌入到列名的特征向量中。但多表查詢沒有指定對應的表,查詢范圍為對應的整個數據庫。為了解決這個問題,在做列名信息的特征表達時,同時利用表名和列名的配對來獲取列名的特征向量。

具體說來,就是給定一個數據庫模式S,首先列出表名和列名的配對作為Bi-LSTM 編碼模型的輸入。接下來,通過Bi-LSTM模型的編碼,選擇它最后的隱藏狀態來代表當前列名的特征向量Ecol。通過這樣編碼的方式,獲取的列名特征向量Ecol既包含了全局的表名信息,也包含了局部的列名信息,充分地利用了數據庫模式的信息,更有利于后續的模型理解自然語言查詢中的語義信息。

4.1.2 基于列名的注意力機制

在獲取自然語言查詢Q的特征表達時,如果只使用Q經過Bi-LSTM 模型編碼的最后隱藏狀態EQ作為特征向量,那么在預測各個子句所包含的列名信息時,就不能突出不同列名在自然語言查詢Q中的重要程度。因此,為凸顯不同列名在自然語言查詢Q中信息側重的不同,本文采用了一種基于列名的注意力機制[13],意在提醒之后的模型,在當前的列名Ecol下,應該更加注意自然語言查詢Q中的哪些部分,從而獲得當前列名對應Q的特征向量EQ|col。

首先,計算針對自然語言查詢Q中每個詞的權重值ω,從而獲得一個長度為句長n的向量:

其中,vi表示向量v的第i維,表示自然語言查詢Q的第i個詞的編碼隱藏狀態,取值范圍從1到n,n是自然語言查詢的長度,W是可訓練的參數矩陣,其維度為d×d,d表示編碼模型隱藏狀態輸出的維度。

計算了權重值ω之后,就能將自然語言查詢Q中通過Bi-LSTM模型編碼的每個詞的隱藏狀態進行加權乘積后再求和,來獲得當前列名對應Q的特征向量:

其中,HQ表示自然語言查詢Q中所有詞的編碼隱藏狀態矩陣,其矩陣維度為d×n。

4.2 SQL子句生成

本文將SQL 子句的生成分為4 個子任務,包括SELECT、WHERE、GROUP BY 和ORDER BY 子句的預測,每個子任務都是SQL語句的一個部分,各子句中預測填充部分之間相互依賴關系如圖4所示。

4.2.1 模型細節

將模板中各子句中的填充內容處理成多個多分類問題,采用softmax 函數為每個類別計算概率來進行分類。為后續公式表達簡潔清晰,先對矩陣M定義概率分布Pc,計算公式為:

其中,V是可訓練參數。

在接下來各子句預測模塊的公式中,Ecol和EQ|col分別代表了所有列名編碼和其做注意力機制后對應自然語言查詢Q的矩陣集合,其矩陣維度均為m×d,m表示數據庫列名的數量,d為編碼隱藏狀態輸出維度。還有其中所有的W都表示為可訓練的模型參數,且各子句預測不共享參數。

(1)SELECT子句

首先預測子句中列名COL 的數量,再預測使用哪些列名,取值范圍為對應數據庫中所有表名列名配對的集合,公式如下:

在選定使用的列名之后,接下來需要對列名預測其AGG 的數量和具體是集合{‘NONE’,‘MAX’,‘MIN’,‘COUNT’,‘SUM’,‘AVG’}中的哪些聚合操作,假設當前列名的編號為i,那么公式如下:

(2)WHERE子句

同樣,首先預測子句中列名COL的數量,再預測使用哪些列名,公式如下:

在選定列名之后,需要對列名預測其OP 操作,取值集合為{‘=’,‘>’,‘<’,‘>=’,‘<=’,‘!=’},假設當前列名的編號為i,公式如下:

(3)GROUP BY子句

該子句的預測模型相對來說更簡單一些,只需預測出子句中列名COL 的數量和對應哪些列名即可,公式如下:

(4)ORDER BY子句

與SELECT子句預測模型結構類似,首先預測子句中列名COL的數量,再預測對應使用的列名,公式如下:

在確定使用的列名之后,就需要對列名的升降序操作ORD進行預測,取值集合為{‘DESC’,‘ASC’},假設當前列名的編號為i,公式如下:

4.2.2 訓練和推理

在訓練的過程中,其目標函數是所有子任務損失函數的總和,通過最小化目標函數值的方式來進行參數更新。針對各子句中對列名COL 的預測,一個數據庫中往往有很多列名,而只有少數幾個列名是選中的正例,其他未出現在SQL 語句中的列名即為負例。為解決樣本不均衡這個問題,針對各子句列名預測部分Pcol,本文使用帶權值的對數似然損失函數來表示其損失(loss),公式如下:

其中,α是用來平衡正負樣例的超參數,在本文的實驗中根據經驗取值為3,N表示樣本的數量,x表示訓練數據,y表示真值。

其他非列名預測子任務的損失采用傳統標準的交叉熵損失函數。在模型的訓練過程中,由于已知子句中各部分預測的真實結果,因此各子任務之間互不影響,可并行訓練。

但在預測推理階段,根據圖4 所示,以SELECT子句為例,在預測列名COL 對應的操作AGG 之前,需要先預測COL的數量和取值。因此在預測階段模型是不可并行的,并且在預測推理的過程中,一旦某個部分預測出錯,那這個錯誤一直傳遞下去,對后續的預測造成影響。

4.3 JOIN路徑生成

在4.2節的深度學習模型中,已經完成了SQL語句中除FROM 子句部分的預測。接下來,需要根據之前各子句中生成結果中列名所包含的表,通過選擇表與表之間的關系和產生JOIN路徑的條件來生成SQL查詢語句中的FROM子句。

生成FROM 子句中的JOIN 路徑,首先需要獲得已生成的SQL其他子句中列名所包含的表集合St和對應數據庫的數據庫模式圖G,數據庫模式圖描述了數據庫中各個表之間的主外鍵關聯關系,圖5所示為一個數據庫的數據庫模式圖[1]。

Fig.5 Example of database schema graph圖5 一個數據庫模式圖的例子

目前已有的做法[14]是將St中所有的表,選定其中一個節點為基準點,通過在G上使用廣度優先遍歷(breadth first search,BFS)算法來獲取到其他節點的JOIN 路徑。這個算法依賴于基準點的選擇,是一種局部最優化的算法,基準點不同會導致最終生成JOIN路徑結果的不同。

本文將通過表集合St={tab1,tab2,…,tabm}和數據庫模式圖G=(V,E,w)來獲取最優的JOIN路徑的問題建模成斯坦納樹(Steiner tree)問題[15],目標是從圖G中尋找一棵包括集合St中所有節點且開銷最小的樹,同時是JOIN路徑的最優解。其中St表示表名集合,m為表的數量。本文采用如下的算法[15]來獲取最優的JOIN路徑:

算法1斯坦納樹生成算法

輸入:表集合St={tab1,tab2,…,tabm}和數據庫模式圖G=(V,E,w)。

輸出:JOIN路徑,即斯坦納樹Th。

步驟1由G和St構建一個完全圖G1=(V1,E1,w1),其中V1=St;

步驟2由G1獲得其最小生成樹T1(若有多棵最小生成樹,隨機選擇一棵);

步驟3將T1中的邊替換為G中對應的最短路徑(若有多條最短路徑,隨機選擇一條),得到G的子圖Gs;

步驟4由Gs獲得其最小生成樹Ts(若有多棵最小生成樹,隨機選擇一棵);

步驟5刪除Ts中不必要的節點,得到斯坦納樹Th,其中Th的葉子節點全部來自St。

通過算法1,得到JOIN 路徑之后,再根據其路徑上的表之間的主外鍵關聯關系產生JOIN 條件,最終生成FROM 子句。相比于BFS 算法,此算法求解的路徑是全局最優解,因此理論上生成FROM 子句的準確率會更高。

5 實驗

本文的實驗環境為一臺小型服務器,其操作系統為Ubuntu 16.04.6 LTS,處理器型號為Intel?Xeon?Silver 4110 CPU@2.10 GHz,內存為192 GB,GPU 型號為NVIDIA Quadro P5000,16 GB。本文實驗使用的編程語言為Python,所有的模型訓練都在深度學習框架PyTorch下進行。

本文使用的數據集是2018年發表的Spider數據集[16],是一個包含復雜SQL查詢和跨領域數據庫的大規模人工標注英文文本生成SQL數據集。該數據集中包含206 個數據庫,在去除一些嵌套的SQL 查詢后,獲得的訓練集3 917條配對數據,測試集數據993條配對數據。

本文對實驗結果采用的評價方式是文獻[8]的匹配準確率(query-match accuracy),通過將生成的SQL查詢和真值轉化成一種標準化的表達,再來比較兩者之間是否匹配,這種衡量標準能減少因子句中多列名出現順序不同而導致不匹配的錯誤。

根據圖3 中SQL 語句模板,還有針對單獨一個SQL 子句生成結果的評價指標——子句匹配分值(keyword match score),包括了精確率p、召回率r和F1值。以FROM子句為例,FROM$TAB JOIN($TAB)*,其中的TAB 對應的表就是一個需要預測的值單元,若預測結果為表集合pred={pt1,pt2,…,ptm},子句中表的真值為集合gold={gt1,gt2,…,gtn},那么精確率p、召回率r和F1值定義如下:

5.1 SQL子句生成實驗結果

在實驗過程中,本文采用了固定的預訓練好的詞向量GloVe[17]來對自然語言查詢和數據庫模式進行特征表達,使用Bi-LSTM模型進行文本特征提取,隱藏層維度設置為100維,使用Adam優化器[18],學習率設置為1E-3,訓練迭代次數300 次,批量大小(batch size)為64,每次迭代都隨機打亂訓練數據的順序。

表1 中給出了不同模型在測試集上對SQL 中4個子句預測的效果,可以觀察到本文模型相較于Seq2Seq 模型以及其改進方法在各個子句上都有明顯提升,且Seq2Seq 模型預測WHERE 子句的效果極差。而針對SQLNet模型來說,其定義SQL語句的模板如圖2 所示,只能對SELECT 和WHERE 子句進行預測。本文對WHERE子句的預測模型和SQLNet中的相同,因此在實驗效果上能保持一致。在SELECT子句預測時,本文模型能預測多個列名,以及一個列名對應的多個聚合操作,SQLNet 模型只支持預測一個列名和其對應的聚合操作,而實驗數據中有的SELECT 子句中不止一個列名,因此本文方法在SELECT子句上的預測效果提升較大。

Table 1 F1 of matching 4 clauses in SQL queries on test set表1 測試集上SQL查詢中4個子句匹配的F1 值 %

5.2 JOIN路徑生成實驗結果

為更準確地測試算法1與BFS算法在JOIN路徑生成結果的對比,不受SQL 子句生成實驗效果的影響,實驗將訓練集和測試集中除去FROM 子句的SQL 查詢中的表名構建出真實的表集合S,以及通過數據庫主外鍵關聯關系構建數據庫模式圖G,兩者同時構成JOIN路徑生成算法的輸入。

通過表2實驗結果分析,可以看出算法1在JOIN路徑的生成上相比于BFS算法在精確率p和召回率r上都有所提升。因此,利用算法1在5.1節實驗結果的基礎上生成FROM子句以構成完整的SQL語句更為可靠。

Table 2 Experiment result comparison of FROM clause generation表2 FROM子句生成的實驗結果對比 %

5.3 完整流程實驗結果及分析

為生成結構如圖3所示的SQL查詢語句,實驗過程分為兩個階段,第一階段使用5.1節中的SQL子句生成結果,第二階段需要將SQL 子句中除FROM 子句的表名構成JOIN路徑生成的表名集合輸入St,然后將算法的輸出轉化為FROM 子句,最終生成SQL查詢的結果。本文的實驗中第二階段的JOIN路徑生成均采用算法1。

從表3 中的實驗結果可以得出,Seq2Seq 模型在表1 中WHERE 子句結果不理想的情況下,在完整SQL 語句的查詢匹配準確率還能達到19%~23%之間,說明數據中一部分的SQL 查詢語句中不包含WHERE 子句。SQLNet 模型由于其局限性,不能用于生成多表查詢SQL,因此無法統計其實驗效果。結果表明使用本文兩個階段的模型和算法在多表SQL查詢語句生成上能有效地提升準確率。

Table 3 Query-match accuracy comparison of full pipeline表3 完整流程的查詢匹配準確率對比

6 結束語

本文針對自然語言生成多表SQL 查詢問題,提出了SQL 子句生成和JOIN 路徑生成兩個階段的改進模型和方法。在SQL子句生成階段使用深度學習模型對SQL 語句模板進行填充,將序列生成處理為多個多分類問題,在JOIN 路徑生成階段將其建模為斯坦納樹問題求解。實驗結果表明,本文方法的實驗效果相比于之前的模型和方法上都有明顯的提升,但查詢匹配的準確率仍然不高。由于本文實驗數據集Spider的特性,WHERE子句中的VAL不一定出現在自然語言中,對其預測帶來困難,因此本文對VAL暫未進行預測。接下來的工作可以考慮完成對VAL的預測來生成完整的SQL 語句。除此之外,由于缺乏中文自然語言生成SQL 查詢語句相關的數據集,因此無法驗證本文模型在中文語料上的實驗效果。

猜你喜歡
數據庫實驗模型
一半模型
記一次有趣的實驗
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
做個怪怪長實驗
數據庫
財經(2017年2期)2017-03-10 14:35:35
3D打印中的模型分割與打包
NO與NO2相互轉化實驗的改進
實踐十號上的19項實驗
太空探索(2016年5期)2016-07-12 15:17:55
數據庫
財經(2016年15期)2016-06-03 07:38:02
主站蜘蛛池模板: 亚洲小视频网站| 亚洲一级毛片在线播放| 香蕉视频在线观看www| 毛片在线播放网址| 欧美午夜在线观看| 久久精品无码一区二区日韩免费| 亚洲欧美成人综合| 国产精品亚洲天堂| 亚洲av无码牛牛影视在线二区| 白浆视频在线观看| 久久精品无码国产一区二区三区| 欧美日韩另类在线| 亚洲最大福利网站| 成人久久精品一区二区三区| 久久亚洲高清国产| 欧美色综合久久| 99在线免费播放| 精品日韩亚洲欧美高清a | 拍国产真实乱人偷精品| 国产福利2021最新在线观看| v天堂中文在线| 日韩视频免费| 伊在人亚洲香蕉精品播放 | 一本视频精品中文字幕| 亚洲无码37.| 精品無碼一區在線觀看 | 国产精品永久久久久| 精品无码视频在线观看| 国产成人AV男人的天堂| 久久精品aⅴ无码中文字幕| 国产精品天干天干在线观看| 456亚洲人成高清在线| 伊人无码视屏| 亚洲欧美在线综合一区二区三区| 成人在线观看一区| 国产91精品最新在线播放| 丁香综合在线| 日韩精品无码一级毛片免费| 亚洲精品国产精品乱码不卞 | 日韩一区二区在线电影| 99精品热视频这里只有精品7| 国产尤物在线播放| 久996视频精品免费观看| 欧美日韩国产高清一区二区三区| 亚洲天堂首页| 精品福利视频网| 亚洲无码91视频| 亚洲成A人V欧美综合| 午夜毛片福利| 国产91线观看| 91精品免费久久久| 97青青青国产在线播放| 在线观看国产网址你懂的| 国产又色又爽又黄| 亚洲av中文无码乱人伦在线r| 国产95在线 | 91在线播放免费不卡无毒| 成人国产一区二区三区| 日韩小视频在线播放| 国产高清毛片| 国产欧美日韩在线在线不卡视频| 久久青青草原亚洲av无码| 国产成人一区| 美女国内精品自产拍在线播放| 日本成人福利视频| 九九热在线视频| 国产99在线| 亚洲成网站| 国产在线观看人成激情视频| 超清无码熟妇人妻AV在线绿巨人| 欧美日韩一区二区在线播放| 67194亚洲无码| 五月婷婷欧美| 99在线小视频| 久久伊伊香蕉综合精品| 国产美女叼嘿视频免费看| 18禁不卡免费网站| 久久综合色视频| 成年女人18毛片毛片免费| 国产成人综合久久| 57pao国产成视频免费播放| 国产精品久久精品|