精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

大模型在知識圖譜問答上的核心算法詳細思路及實踐 原創

發布于 2025-7-28 09:50
瀏覽
0收藏

前言

本文介紹了一個融合RAG(Retrieval-Augmented Generation)思路的KBQA(Knowledge-Based Question Answering)系統的核心算法及實現步驟。KBQA系統的目標是通過自然語言處理技術,從知識圖譜中提取和生成精確的答案。系統的實現包括多個關鍵步驟:mention識別、實體鏈接及排序、屬性選擇及排序、文本拼接以及最終的Text2SQL生成。通過這些步驟,系統能夠準確識別用戶提出的問題中的關鍵實體和屬性,并生成相應的查詢語句,從而從知識圖譜或數據庫中檢索所需的信息。本文將詳細介紹每個步驟的實現思路和技術細節,并提供核心算法具體的代碼示例和開源地址供參考。

大模型在知識圖譜問答上的核心算法詳細思路及實踐-AI.x社區

總體技術鏈路

一、mention識別

KBQA中的mention識別是指在用戶提出的問題中,識別出與知識庫中的實體或概念相對應的詞語或短語。mention識別是KBQA系統中至關重要的一步,因為準確的mention識別直接影響后續的實體鏈接、關系抽取和答案生成等步驟。KBQA中的mention識別的主要方法和技術:

  1. 規則方法
    基于規則的方法通常使用手工設計的規則和模式來識別mention。這些規則可以包括命名實體識別(NER)工具、正則表達式、詞典匹配等。
  • NER工具:使用現有的NER工具(如Stanford NER、spaCy)來識別出問題中的實體。
  • 正則表達式:設計特定的正則表達式模式來匹配特定類型的mention。
  • 詞典匹配:使用預先構建的實體詞典進行匹配,通過查找詞典中的條目來識別mention。
  1. 統計方法
    基于統計的方法利用大規模的訓練數據,通過統計特征來識別mention。這些方法通常需要預處理步驟,如詞頻統計和n-gram分析。
  • n-gram分析:將問題分割成n-gram(如單詞、雙詞、三詞短語等),并計算每個n-gram在知識庫中的匹配情況。
  • 詞頻統計:統計每個詞或短語在知識庫中的出現頻率,并根據頻率高低來判斷其是否為mention。
  1. 機器學習方法
    基于機器學習的方法利用有標簽的數據,通過訓練分類器來識別mention。這些方法通常需要特征工程和模型訓練。
  • 特征工程:提取文本的各種特征,如詞性、詞向量、上下文信息等。
  • 分類模型:使用機器學習算法(如SVM、隨機森林、邏輯回歸等)訓練分類器,判斷一個詞或短語是否為mention。
  1. 深度學習方法
    基于深度學習的方法利用神經網絡模型,通過端到端的方式來識別mention。這些方法可以避免復雜的特征工程,通過大量的數據訓練模型來自動提取特征。如:BERT-CRF、LLM等模型等。

本文結合大模型的方法進行mention識別。主要流程如下:

mention識別SFT數據構造

原始數據

q1:莫妮卡·貝魯奇的代表作?
select ?x where { <莫妮卡·貝魯奇> <代表作品> ?x. }
<西西里的美麗傳說>

通過一些規則方式,構建sft數據如下:

[
  {
    "instruction": "你是一個實體抽取的專家,請你抽取問句:“莫妮卡·貝魯奇的代表作?”中的實體。",
    "input": "",
    "output": "莫妮卡·貝魯奇"
  },
  {
    "instruction": "你是一個實體抽取的專家,請你抽取問句:“《湖上草》是誰的詩?”中的實體。",
    "input": "",
    "output": "湖上草"
  },
  ...
]

LLM微調mention識別

本文以LLaMA-Factory框架進行微調,微調腳本如下:

import json
import os

model_name_or_path = "ZhipuAI/glm-4-9b-chat"
template = "glm4"
cutoff_len = 256
num_train_epochs = 8
train_dataset = "train_ner"
predict_dataset = "test_ner"
output_dir = f"saves/{train_dataset}-{predict_dataset}-ep{num_train_epochs}-{cutoff_len}-{template}"
adapter_name_or_path = output_dir


do_train = True
do_predict = True

train_args = dict(
    stage="sft",  # 進行指令監督微調
    do_train=do_train,
    model_name_or_path=model_name_or_path,
    dataset=train_dataset,
    template=template,  
    finetuning_type="lora",  
    cutoff_len=cutoff_len,
    lora_target="all",  
    output_dir=output_dir,  
    per_device_train_batch_size=4,  
    gradient_accumulation_steps=2,  
    lr_scheduler_type="cosine", 
    logging_steps=10,  
    warmup_ratio=0.1, 
    save_steps=1000, 
    learning_rate=1e-4,  
    num_train_epochs=num_train_epochs,  
    max_samples=7625,  
    max_grad_norm=1.0, 
    fp16=True,  
    temperature=0.1,
    ddp_timeout=180000000,
    overwrite_cache=True,
    overwrite_output_dir=True
)

predict_args = dict(
    stage="sft",
    do_predict=do_predict,
    model_name_or_path=model_name_or_path,
    adapter_name_or_path=adapter_name_or_path,
    dataset=predict_dataset,
    template=template,
    finetuning_type="lora",
    cutoff_len=cutoff_len,
    per_device_eval_batch_size=2,
    overwrite_cache=True,
    preprocessing_num_workers=16,
    output_dir=f'{output_dir}/predict',
    overwrite_output_dir=True,
    ddp_timeout=180000000,
    temperature=0.1,
    max_samples=1292,
    predict_with_generate=True
)

train_args_file = f"config/{train_dataset}-{predict_dataset}-ep{num_train_epochs}-{cutoff_len}-{template}-train.json"
predict_args_file = f"config/{train_dataset}-{predict_dataset}-ep{num_train_epochs}-{cutoff_len}-{template}-pred.json"

json.dump(train_args, open(train_args_file, "w", encoding="utf-8"), indent=2)
json.dump(predict_args, open(predict_args_file, "w", encoding="utf-8"), indent=2)


if __name__ == '__main__':
    os.system(f'llamafactory-cli train {train_args_file}')
    os.system(f'llamafactory-cli train {predict_args_file}')

輸出示例如:

question:<篝火圓舞曲>的作曲家屬于什么民族?

mention:篝火圓舞曲

二、實體鏈接及實體排序

中文短文本的實體鏈指,簡稱 EL(Entity Linking),是NLP、知識圖譜領域的基礎任務之一,即對于給定的一個中文短文本(如搜索 Query、微博、對話內容、文章/視頻/圖片的標題等),EL將其中的實體與給定知識庫中對應的實體進行關聯。

針對中文短文本的實體鏈指存在很大的挑戰,主要原因如下:

  1. 口語化嚴重,導致實體歧義消解困難;
  2. 短文本上下文語境不豐富,須對上下文語境進行精準理解;
  3. 相比英文,中文由于語言自身的特點,在短文本的鏈指問題上更有挑戰。

EL實現思路-基于“粗排-精排”的兩階段方案

思路1:

主要流程描述:

  1. 候選實體召回。通過ES知識庫,召回相關實體,把知識庫實體的關系轉化為:“實體id-實體信息” 和 “實體指稱-實體id” 的映射。從原文本的mention文本出發,根據“實體指稱-實體id”匹配實體文本召回候選實體。
  2. 候選實體特征提取。首先用指稱項分類模型,來預測輸入數據的指稱項的實體類型。根據候選實體召回結果,對于有召回的實體:用“實體id-實體信息”提取處實體信息,按順序組織實體信息的文本內容后拼接原始文本豐富實體的語義信息,最后把指稱項的實體類型加入構成完整的實體候選集合。對于無召回的實體,就無需進行候選實體排序,直接與排序結果進行后處理整合即可。
  3. 候選實體排序模型。輸入標記指稱項的原始文本和候選實體信息的拼接,輸出指稱項和候選實體的匹配程度。
  4. 后處理。“候選實體排序模型”的輸出結果

大模型在知識圖譜問答上的核心算法詳細思路及實踐-AI.x社區

主要流程圖

粗排方式簡單,使用ES庫進行粗排即可,精排構建一個二分類模型

訓練數據構造形式(正負樣本比例1:5):

{"query": "莫妮卡·貝魯奇的代表作?", "query_rewrite": "#莫妮卡·貝魯奇#的代表作?", "entity": "<莫妮卡·貝魯奇>", "desc": "母親|畢業院校|類型|主演|別名|相關人物|中文名|國籍|作者|外文名|體重|職業|代表作品|出生日期|導演|身高|朋友", "label": 1}
{"query": "莫妮卡·貝魯奇的代表作?", "query_rewrite": "#莫妮卡·貝魯奇#的代表作?", "entity": "\"莫妮卡·貝魯\" ", "desc": "中文名", "label": 0}
{"query": "莫妮卡·貝魯奇的代表作?", "query_rewrite": "#莫妮卡·貝魯奇#的代表作?", "entity": "<莫妮卡·貝魯>", "desc": "類型|游戲大小|中文名|原版名稱|游戲類型", "label": 0}
{"query": "莫妮卡·貝魯奇的代表作?", "query_rewrite": "#莫妮卡·貝魯奇#的代表作?", "entity": "\"莫妮卡貝魯齊\" ", "desc": "中文名", "label": 0}
{"query": "莫妮卡·貝魯奇的代表作?", "query_rewrite": "#莫妮卡·貝魯奇#的代表作?", "entity": "<莫妮卡貝魯齊>", "desc": "類型|操作指南|基本介紹|中文名|原版名稱", "label": 0}
{"query": "莫妮卡·貝魯奇的代表作?", "query_rewrite": "#莫妮卡·貝魯奇#的代表作?", "entity": "\"莫妮卡·安娜·瑪麗亞·貝魯奇\" ", "desc": "中文名", "label": 0}

字段解釋:

  • query:原始問句
  • query_rewrite:重寫后的問句
  • entity:鏈接的實體
  • desc:屬性的拼接
  • label:類別標簽

在訓練時,我們只選擇??query_rewrite???與??desc??進行拼接,拼接形式如下:

query_rewrite[SEP]desc
示例:#莫妮卡·貝魯奇#的代表作?[SEP]母親|畢業院校|類型|主演|別名|相關人物|中文名|國籍|作者|外文名|體重|職業|代表作品|出生日期|導演|身高|朋友

精排模型結構如下:

大模型在知識圖譜問答上的核心算法詳細思路及實踐-AI.x社區

精排模型結構

計算實體鏈接得分:

思路2:

粗排仍然使用ES進行召回,精排使用一個與思路一相同結構的模型,區別就是數據構造方式不同。訓練數據構造形式(正負樣本比例1:5):

{'query': '莫妮卡·貝魯奇的代表作?', 'mention': '莫妮卡·貝魯奇', 'label': 1}
{'query': '莫妮卡·貝魯奇的代表作?','mention': '低鈣血癥', 'label': 0}
{'query': '莫妮卡·貝魯奇的代表作?', 'mention': '同居損友', 'label': 0}
{'query': '莫妮卡·貝魯奇的代表作?','mention': '"1964-09-22"', 'label': 0}
{'query': '莫妮卡·貝魯奇的代表作?', 'mention': '夏侯瑾軒', 'label': 0}
{'query': '莫妮卡·貝魯奇的代表作?', 'mention': '"日歷"', 'label': 0}

選擇??query???與??mention??進行拼接,拼接形式如下:

query[SEP]mention
示例:莫妮卡·貝魯奇的代表作?[SEP]莫妮卡·貝魯奇

計算實體鏈接得分:

為了避免噪聲影響,最后,根據得分獲取top5的鏈接實體作為候選實體。

模型結構代碼示例

import torch
from torch import nn
from transformers import BertModel, BertPreTrainedModel

class BertForSequenceClassification(BertPreTrainedModel):
    def __init__(self, config):
        super().__init__(config)
        self.num_labels = config.num_labels

        self.bert = BertModel(config)
        self.dropout = nn.Dropout(config.hidden_dropout_prob)
        self.classifier = nn.Linear(config.hidden_size, config.num_labels)

        self.init_weights()

    def forward(self, input_ids=None, attention_mask=None, token_type_ids=None, position_ids=None, head_mask=None, inputs_embeds=None, labels=None):
        outputs = self.bert(
            input_ids,
            attention_mask=attention_mask,
            token_type_ids=token_type_ids,
            position_ids=position_ids,
            head_mask=head_mask,
            inputs_embeds=inputs_embeds,
        )
        
        pooled_output = outputs[1]
        pooled_output = self.dropout(pooled_output)
        logits = self.classifier(pooled_output)

        loss = None
        if labels is not None:
            if self.num_labels == 1:
                #  We are doing regression
                loss_fct = nn.MSELoss()
                loss = loss_fct(logits.view(-1), labels.view(-1))
            else:
                loss_fct = nn.CrossEntropyLoss()
                loss = loss_fct(logits.view(-1, self.num_labels), labels.view(-1))

        output = (logits,) + outputs[2:]
        return ((loss,) + output) if loss is not None else output

思路3:

向量模型的短文本匹配效果也不錯,不微調直接使用向量模型配合ES進行實體鏈接:

from sentence_transformers import SentenceTransformer
sentences_1 = "實體"
sentences_2 = ["es召回的實體1", "es召回的實體2",...,"es召回的實體n"]
model = SentenceTransformer('lier007/xiaobu-embedding-v2')
embeddings_1 = model.encode(sentences_1, normalize_embeddings=True)
embeddings_2 = model.encode(sentences_2, normalize_embeddings=True)
similarity = embeddings_1 @ embeddings_2.T
print(similarity)

當然,更進一步的可以根據自己場景進行微調。

三、屬性選擇及屬性排序

屬性識別及屬性排序是從用戶提出的問題中識別出與知識庫中相關的屬性,并根據某些標準對這些屬性進行排序。這兩個步驟在KBQA系統中非常重要,因為它們直接影響最終答案的準確性和相關性。

通過上一節中獲取到的top5的鏈接實體,通過ES索引或者mysql等工具建立的知識圖譜,召回出對應實體的所有的屬性集合。但召回的所有的屬性集合存在一個問題,存在著大量的不相關的屬性內容,因此,需要訓練的一個屬性的排序模型選擇TOP5的屬性保留。

屬性排序訓練數據構造形式(正負樣本比例1:5):

{"entity": "<莫妮卡·貝魯奇>", "query": "莫妮卡·貝魯奇的代表作?", "attr": "<代表作品>", "label": 1}
{"entity": "<莫妮卡·貝魯奇>", "query": "莫妮卡·貝魯奇的代表作?", "attr": "<體重>", "label": 0}
{"entity": "<莫妮卡·貝魯奇>", "query": "莫妮卡·貝魯奇的代表作?", "attr": "<出生日期>", "label": 0}
{"entity": "<莫妮卡·貝魯奇>", "query": "莫妮卡·貝魯奇的代表作?", "attr": "<導演>", "label": 0}
{"entity": "<莫妮卡·貝魯奇>", "query": "莫妮卡·貝魯奇的代表作?", "attr": "<職業>", "label": 0}
{"entity": "<莫妮卡·貝魯奇>", "query": "莫妮卡·貝魯奇的代表作?", "attr": "<類型>", "label": 0}

選擇??query???與??attr??進行拼接,拼接形式如下:

query[SEP]attr
示例:莫妮卡·貝魯奇的代表作?[SEP]<代表作品>

計算屬性得分:

為了避免噪聲影響,最后,根據得分獲取top5的屬性作為候選屬性。

屬性排序模型也是BERT+Linear一個二分類模型:

大模型在知識圖譜問答上的核心算法詳細思路及實踐-AI.x社區

屬性排序模型

四、文本拼接

因為本文介紹的是結合大模型的思想進行查詢語句的生成,本文的鏈路與RAG的思想非常相似,通過上述路徑檢索相關文本(相關實體片段相關屬性片段),進行組合,組合方式如下:

prompt+question+候選實體+屬性結合

五、LLM for Text2SQL

在KBQA系統中,使用大語言模型(LLM)生成SQL查詢是至關重要的一步。Text2SQL的任務是將自然語言問題轉換為結構化查詢語言(SQL),以便從數據庫或知識圖譜中檢索信息。

根據上節的介紹,對于訓練LLM的SFT數據構造示例如下:

[
  {
    "instruction": "你是一個Sparql生成專家,請根據給定的內容,生成Sparql語句。\n問題:“莫妮卡·貝魯奇的代表作?”,和候選實體信息:[0]名稱:<莫妮卡·貝魯奇>,屬性集:<代表作品>,<中文名>,<作者>,<外文名>,<別名>。對應查詢圖譜的Sparql的語句為:",
    "input": "",
    "output": "select ?x where { <莫妮卡·貝魯奇> <代表作品> ?x. }"
  },
  {
    "instruction": "你是一個Sparql生成專家,請根據給定的內容,生成Sparql語句。\n問題:“《湖上草》是誰的詩?”,和候選實體信息:[0]名稱:<湖上草>,屬性集:<主要作品>,<中文名>,<傳世之作>,<所著>,<其丈夫>。對應查詢圖譜的Sparql的語句為:",
    "input": "",
    "output": "select ?x where { ?x <主要作品> <湖上草>. }"
  },
  ...
]

使用預訓練的大語言模型(例如GLM-4-9B)進行微調,使其能夠生成正確的SQL查詢(本文使用的sparql查詢,配合gstore圖數據庫使用,因gstore問題太多,個人不推薦使用,可以轉成其他的查詢語句,如:neo4j等)。本文以LLaMA-Factory為例進行微調,微調腳本如下:

import json
import os

model_name_or_path = "ZhipuAI/glm-4-9b-chat"
template = "glm4"
cutoff_len = 4096
num_train_epochs = 8
train_dataset = "train_data"
predict_dataset = "test_data"
output_dir = f"saves/{train_dataset}-{predict_dataset}-ep{num_train_epochs}-{cutoff_len}-{template}"
adapter_name_or_path = output_dir


do_train = True
do_predict = True

train_args = dict(
    stage="sft",  # 進行指令監督微調
    do_train=do_train,
    model_name_or_path=model_name_or_path,
    dataset=train_dataset,
    template=template,
    finetuning_type="lora",
    cutoff_len=cutoff_len,
    lora_target="all",
    output_dir=output_dir,
    per_device_train_batch_size=2,  # 批處理大小
    gradient_accumulation_steps=4,  # 梯度累積步數
    lr_scheduler_type="cosine",  # 使用余弦學習率退火算法
    logging_steps=10,  # 每 10 步輸出一個記錄
    warmup_ratio=0.1,  # 使用預熱學習率
    save_steps=1000,  # 每 1000 步保存一個檢查點
    learning_rate=1e-4,  # 學習率大小
    num_train_epochs=num_train_epochs,  # 訓練輪數
    max_samples=7625,  # 使用每個數據集中的 300 條樣本
    max_grad_norm=1.0,  # 將梯度范數裁剪至 1.0
    fp16=True,  # 使用 float16 混合精度訓練
    temperature=0.1,
    ddp_timeout=180000000,
    overwrite_cache=True,
    overwrite_output_dir=True
)

predict_args = dict(
    stage="sft",
    do_predict=do_predict,
    model_name_or_path=model_name_or_path,
    adapter_name_or_path=adapter_name_or_path,
    dataset=predict_dataset,
    template=template,
    finetuning_type="lora",
    cutoff_len=cutoff_len,
    per_device_eval_batch_size=1,
    overwrite_cache=True,
    preprocessing_num_workers=16,
    output_dir=f'{output_dir}/predict',
    overwrite_output_dir=True,
    ddp_timeout=180000000,
    temperature=0.1,
    max_samples=1292,
    predict_with_generate=True
)


train_args_file = f"config/{train_dataset}-{predict_dataset}-ep{num_train_epochs}-{cutoff_len}-{template}-train.json"
predict_args_file = f"config/{train_dataset}-{predict_dataset}-ep{num_train_epochs}-{cutoff_len}-{template}-pred.json"

json.dump(train_args, open(train_args_file, "w", encoding="utf-8"), indent=2)

json.dump(predict_args, open(predict_args_file, "w", encoding="utf-8"), indent=2)


os.system(f'llamafactory-cli train {train_args_file}')
os.system(f'llamafactory-cli train {predict_args_file}')

小結

  • 優點:借助大模型的優勢,實現文本轉化為sparql查詢語句,實現單挑、多跳的從kg中查詢答案。
  • 缺點:在實踐過程中發現,由于大模型的幻覺因素,生成的查詢語句“看上去對,實際上錯誤”,導致查詢答案不是準確的答案。

總結

本文詳細介紹了KBQA(知識圖譜問答)系統融合了RAG的思路,分為多個步驟。首先進行mention識別,使用大模型提取文本中的關鍵實體;接著進行實體鏈接,將識別到的實體提及與知識圖譜中的具體實體匹配和鏈接;然后對所有可能的實體進行排序,找出最相關的實體;在此基礎上進行屬性選擇及排序,提取與用戶問題相關的屬性并進行排序,確保返回的結果最符合用戶需求;接下來將上述步驟得到的文本內容拼接成完整的上下文;最后,將結構化的文本內容轉化為SQL查詢,以便從知識圖譜或數據庫中檢索信息。

數據集

????https://tianchi.aliyun.com/competition/entrance/532100/information??


本文轉載自???大模型自然語言處理??   作者:余俊暉

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
收藏
回復
舉報
回復
相關推薦
久久国产精品99久久久久久丝袜| 久久精品在线视频| 国产精品少妇在线视频| 在线免费观看黄色网址| 国产中文字幕精品| 97激碰免费视频| 自拍偷拍你懂的| 91麻豆精品国产91久久久久推荐资源| 欧美日韩中文在线| 裸体裸乳免费看| 欧洲免费在线视频| 国产成人免费视频一区| 日本精品久久久久影院| 极品魔鬼身材女神啪啪精品| 蜜桃精品一区二区三区| 91高清在线观看| 久草视频这里只有精品| 色综合久久影院| 91免费视频大全| 91香蕉国产在线观看| 香蕉影院在线观看| 黄色日韩在线| 不卡av日日日| 天天操天天干天天操天天干| 激情亚洲另类图片区小说区| 欧美精品色综合| 99视频在线免费| 999av小视频在线| 亚洲激情校园春色| 中文字幕免费在线不卡| 第九色区av在线| 91丨九色丨国产丨porny| 国产成人精品福利一区二区三区 | 天堂在线中文| 国产精品一区一区三区| 国产欧美日韩丝袜精品一区| 中文字幕69页| 亚洲一区不卡| 97在线日本国产| 日本三级欧美三级| 欧美三级网页| 欧美激情2020午夜免费观看| 精品一区在线观看视频| 五月久久久综合一区二区小说| 亚洲色图50p| 一本加勒比北条麻妃| 国产成人av毛片| 亚洲精品一区二区三区影院| 永久看看免费大片| 欧美中文高清| 日韩色在线观看| 久久精品久久99| 玖玖玖电影综合影院| 欧美男生操女生| 日本黄色福利视频| 国产精品美女久久久久人| 在线电影国产精品| 91香蕉国产线在线观看| 精品一级视频| 日韩欧美高清一区| 久草视频福利在线| 欧美亚洲色图校园春色| 精品中文字幕久久久久久| 91精品小视频| 国产欧美日韩一区二区三区四区| 亚洲石原莉奈一区二区在线观看| 中国美女乱淫免费看视频| 国产一区二区三区探花| 中文字幕9999| 日韩a级片在线观看| 女人香蕉久久**毛片精品| 欧美激情精品久久久久久大尺度 | 超碰在线视屏| 色综合色综合色综合| 日韩一级片播放| 亚洲一区二区av| 欧美一区二区三区视频在线| 欧美xxxxx少妇| 亚洲婷婷影院| 日韩日本欧美亚洲| 久久久久99精品| 亚洲中午字幕| 成人h片在线播放免费网站| 精品国产va久久久久久久| 成人国产免费视频| 日本高清不卡一区二区三| 91大神xh98hx在线播放| 亚洲免费观看高清| 欧美 日韩 国产 高清| 国产成人精品一区二三区在线观看 | 国产精品无码久久av| 成人妖精视频yjsp地址| 日本午夜精品一区二区| av在线免费观看网址| 欧美日韩国产精品一区二区不卡中文 | 免费看成人午夜电影| 91啦中文在线| 亚洲国产精品欧美一二99| 欧美在线观看视频网站| 久久久久久久久成人| 亚洲女人天堂av| 日本黄色小说视频| 视频精品一区二区| 91网免费观看| av小片在线| 午夜电影网亚洲视频| jizzzz日本| 伊人精品一区| 欧美精品久久久久久久久久| 亚洲永久精品视频| 91网上在线视频| 国产在线无码精品| 欧美日韩成人影院| 亚洲加勒比久久88色综合| 青青青视频在线播放| 亚洲美女一区| 97在线中文字幕| 免费在线观看av| 色综合色狠狠综合色| www.555国产精品免费| 66国产精品| 国产精品久久二区| 欧美套图亚洲一区| 亚洲成人av在线电影| 美女被艹视频网站| 天天射成人网| 国产精品老女人视频| 午夜小视频在线播放| 一区av在线播放| av噜噜在线观看| 成人中文在线| 国产精品电影网| 你懂的在线播放| 欧美午夜xxx| 制服丝袜第二页| 亚洲国产一区二区三区a毛片| 91久久久亚洲精品| 日本三级在线视频| 欧美久久久久久久久久| 懂色av蜜桃av| 日韩电影在线一区| 日本黑人久久| 国产精品黄色片| 一区二区三区日韩在线| 亚洲不卡在线视频| 久久老女人爱爱| 久久久久人妻精品一区三寸| 日韩成人午夜| 日本精品免费观看| 国产在线中文字幕| 91国偷自产一区二区开放时间 | 免费的黄色av| 亚洲va天堂va国产va久| 黄色污在线观看| 免费在线成人| 色综合久久88色综合天天提莫| 97久久香蕉国产线看观看| 亚洲色图35p| 国产一区二区在线不卡| 国产精品麻豆欧美日韩ww| 精品综合久久久久| 亚洲色图88| 国产91亚洲精品一区二区三区| 新版中文在线官网| 亚洲第一区在线观看| 综合激情网五月| 久久精品综合网| 欧美精品久久久久久久久25p| 999国产精品永久免费视频app| 91精品国自产在线观看| 国产调教在线| 在线午夜精品自拍| 国产乱人乱偷精品视频a人人澡| 亚洲精品国产视频| 你懂得在线视频| 蜜臀精品久久久久久蜜臀| 国产又粗又大又爽的视频| 国产丝袜一区| 国产精品久久久久久av福利软件| 国产福利在线播放麻豆| 亚洲精品国精品久久99热一| 欧美超碰在线观看| 亚洲日本韩国一区| 欧美无人区码suv| 九色|91porny| 国产精品又粗又长| 日韩免费一区| 国产私拍一区| 免费成人高清在线视频| 久久久亚洲天堂| 在线观看麻豆蜜桃| 亚洲国产欧美一区二区丝袜黑人| 毛片在线免费播放| 亚洲一区在线观看免费观看电影高清| 日本一区二区三区网站| 黑人巨大精品欧美一区| 日本一道本久久| 亚洲精彩视频| 青青草成人激情在线| 香蕉免费一区二区三区在线观看| 青青草成人在线| 四虎影视国产在线视频| 亚洲欧美精品一区二区| 国精产品一品二品国精品69xx| 欧美无砖专区一中文字| 午夜精品久久久久久久久久久久久蜜桃| 国产精品天美传媒沈樵| 国产 中文 字幕 日韩 在线| 狠狠色狠狠色综合| 青青青国产在线视频| 亚洲另类黄色| 欧美黄色免费网址| 日韩欧美视频在线播放| 精选一区二区三区四区五区| 国产精品亚洲欧美日韩一区在线 | 久久五月情影视| 精品亚洲综合| 亚洲精品一区二区在线| 亚洲经典一区二区三区| 3751色影院一区二区三区| 中文字幕xxxx| 福利视频导航一区| 国产无精乱码一区二区三区| 最近日韩中文字幕| avhd101老司机| 久久久九九九九| 国产视频久久久久久| 国产91在线观看| 91人妻一区二区三区| 看片的网站亚洲| 污视频免费在线观看网站| 久久久久久久欧美精品| 一女被多男玩喷潮视频| 亚洲国产精品一区| 免费不卡av在线| 国产精品红桃| 日韩网站在线免费观看| 欧美日韩国内| 中文字幕人妻熟女人妻洋洋| 国产综合自拍| 国产女主播自拍| 激情婷婷欧美| 欧美男女爱爱视频| 国产色综合网| 国产亚洲精品网站| 久久久人人人| 超碰av在线免费观看| 视频精品一区二区| 午夜在线观看av| 久久99国产精品麻豆| 久国产精品视频| 国产在线精品国自产拍免费| 被黑人猛躁10次高潮视频| 国产精品一二三四区| 丰满少妇xbxb毛片日本| av在线不卡观看免费观看| 最近中文字幕无免费| 久久先锋影音av| 四虎国产成人精品免费一女五男| 中文字幕一区二区日韩精品绯色| 北条麻妃在线观看视频| 亚洲精品日韩专区silk| 国产一级视频在线播放| 欧美午夜宅男影院在线观看| 天天射天天干天天| 777午夜精品视频在线播放| 亚洲va久久久噜噜噜无码久久| 亚洲福利在线观看| 免费福利在线观看| 北条麻妃在线一区二区| 日本片在线看| 日av在线播放中文不卡| 黄色精品视频网站| www.成人三级视频| 蜜桃国内精品久久久久软件9| 先锋在线资源一区二区三区| 五月天综合网站| 欧美一级片免费播放| 日韩精品视频网站| aaaaaaaa毛片| 91网站黄www| 麻豆天美蜜桃91| 欧美性猛交视频| 国产有码在线观看| 欧美精品一区二区三区蜜桃 | 亚洲第一中文av| 国产精品91xxx| 亚洲天堂久久新| 亚洲美女屁股眼交3| 你懂的国产在线| 日韩一区二区视频在线观看| 激情视频在线观看免费| 久久久国产精品视频| 在线观看特色大片免费视频| 成人性教育视频在线观看| 日韩成人动漫在线观看| 91社在线播放| 久久中文精品| 在线中文字日产幕| 国产精品私人影院| 六月丁香在线视频| 欧美一级二级三级乱码| 久热av在线| 性欧美亚洲xxxx乳在线观看| 欧美成人毛片| 欧美精品在线一区| 黑人一区二区| 麻豆网站免费观看| 国产精品女人毛片| 免费黄色网址在线| 精品国产凹凸成av人网站| av大全在线免费看| 欧美一级电影免费在线观看| 亚洲码欧美码一区二区三区| 亚洲视频精品一区| 欧美一级视频| 私密视频在线观看| 亚洲永久精品国产| 国产99999| 日韩在线视频免费观看| 台湾成人免费视频| 欧美日韩高清在线一区| 99精品国产99久久久久久福利| 日韩精品视频网址| 中文字幕在线不卡视频| 中文字幕久久久久| 精品亚洲一区二区三区在线播放 | 国产精品欧美激情在线播放| 国产91一区| 日韩av黄色网址| eeuss国产一区二区三区| 久久久久久久国产视频| 91精品久久久久久蜜臀| 午夜激情在线观看| 国产精品旅馆在线| 凹凸成人精品亚洲精品密奴| 麻豆传传媒久久久爱| 久久久久久久综合色一本| 国产精品777777| 日韩精品福利网站| 亚洲精品88| 欧美一区免费视频| 久久午夜视频| 超碰97av在线| 欧美日韩国产影片| 黄网址在线观看| 亚洲影院色无极综合| 国产一区美女| 日韩少妇一区二区| 午夜精品在线看| 亚洲色大成网站www| 欧美影院在线播放| 激情婷婷综合| 亚洲午夜精品一区| 中文字幕日本不卡| 亚洲国产精品久久久久久久| 久久久久久久一区二区| 欧美国产极品| 国产精品69页| 亚洲欧洲一区二区三区| 99精品在线看| 97香蕉久久夜色精品国产| 亚洲人成网亚洲欧洲无码| 午夜免费高清视频| 亚洲欧美日韩国产手机在线| 亚洲精品久久久狠狠狠爱| 91国语精品自产拍在线观看性色| 欧美精美视频| 国产性生活一级片| 午夜影院久久久| 国产在线三区| 亚洲a一级视频| 亚洲麻豆视频| 成人欧美一区二区三区黑人一 | 痴汉一区二区三区| 国产农村妇女毛片精品久久莱园子| 91精品久久久久久久久久久久| 91精品国产黑色紧身裤美女| brazzers在线观看| 日本亚洲自拍| 国产98色在线|日韩| 无码人妻一区二区三区线| 久久午夜a级毛片| 丝袜美腿综合| 亚洲一二区在线观看| 欧美日韩国产在线播放| 快射视频在线观看| 欧美成ee人免费视频| 国产综合色在线| 在线永久看片免费的视频| 久久亚洲国产精品成人av秋霞| 清纯唯美亚洲经典中文字幕| 欧美日韩一区二区三区69堂| 午夜视频久久久久久| 男人的天堂在线视频免费观看 | 国产美女性感在线观看懂色av | 色欲av伊人久久大香线蕉影院| 国产精品扒开腿做爽爽爽视频| 国内精品美女在线观看| 山东少妇露脸刺激对白在线|