精品欧美一区二区三区在线观看 _久久久久国色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??


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

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
收藏
回復
舉報
回復
相關推薦
91.麻豆视频| 中文字幕一区二区在线观看| 69av在线视频| a级黄色免费视频| vam成人资源在线观看| 亚洲国产成人av| 先锋影音网一区| 亚洲第九十九页| 裸体一区二区| 欧美激情在线狂野欧美精品| 日韩av片在线| 日本中文字幕在线一区| 欧美丰满少妇xxxbbb| 欧美日韩黄色一级片| 免费大片在线观看www| 99re成人在线| 91av一区二区三区| 伊人网免费视频| 99视频在线精品国自产拍免费观看| 中文字幕日韩精品在线| 中文字幕精品视频在线| 电影一区中文字幕| 日本久久一区二区| 99在线精品免费视频| 麻豆网在线观看| 久久综合九色综合欧美就去吻| 亚洲精品欧美极品| 中文字幕在线播放不卡| 国产精品毛片在线看| 毛片精品免费在线观看| 在线观看日本黄色| 九九热线有精品视频99| 亚洲福利视频在线| 香蕉在线观看视频| 四虎国产精品免费久久5151| 欧美在线播放高清精品| 欧美aⅴ在线观看| 成人免费观看在线观看| 亚洲最新视频在线观看| 一本—道久久a久久精品蜜桃| 第九色区av在线| 久久免费精品国产久精品久久久久| 国产 高清 精品 在线 a| 国产女人高潮时对白| 久久久久久穴| 欧美中文字幕第一页| 免费在线不卡视频| 亚洲一区日韩| 26uuu另类亚洲欧美日本老年| 久久午夜无码鲁丝片| 欧美va亚洲va日韩∨a综合色| 久久精品99久久久久久久久 | 国产在线xxxx| 黄色网址在线免费观看| 亚洲视频中文字幕| 久久久久久久久网| 女同一区二区免费aⅴ| 亚洲在线中文字幕| 青青青青草视频| 男女羞羞在线观看| 色综合一区二区| 日韩精品一区中文字幕| 高清欧美日韩| 欧美一区二区三区四区在线观看| 伊人成人免费视频| 91蜜桃臀久久一区二区| 日韩精品久久久久| 中文字幕在线观看免费高清| 水蜜桃久久夜色精品一区| 久久精品国产v日韩v亚洲| avtt天堂在线| 亚洲黄色精品| 欧美一区二粉嫩精品国产一线天| 久久久久久在线观看| 蜜臀国产一区二区三区在线播放 | 九九久久久久久久久激情| 91porn在线视频| 1024成人| 国产精品毛片a∨一区二区三区|国 | 精品产国自在拍| 中文字幕日韩欧美在线| 内射一区二区三区| 狠狠综合久久av一区二区老牛| 性欧美视频videos6一9| www.日韩一区| 精品影视av免费| 古典武侠综合av第一页| 青青草在线免费观看| 欧美国产综合色视频| 日韩最新中文字幕| 免费高潮视频95在线观看网站| 在线观看一区日韩| 久久久久久综合网| 久久精品论坛| 少妇高潮久久久久久潘金莲| 九九热视频精品| 久久国产高清| 亚洲最大福利网| 欧美色视频免费| 亚洲欧美偷拍三级| 日韩少妇内射免费播放| 国精品产品一区| 亚洲成人精品久久| 自拍偷拍你懂的| 亚洲国产欧美国产综合一区| 国产精品第100页| 精品国产无码一区二区三区| 久久久av毛片精品| 欧美老女人在线视频| 国产 日韩 欧美在线| 香蕉视频亚洲一级| 精品国产伦一区二区三区免费| 成年人免费观看视频网站| 91精品国产视频| 日韩av123| av中文字幕免费在线观看| 久久新电视剧免费观看| 日韩视频一二三| 写真福利精品福利在线观看| 日韩欧美电影一区| 日韩欧美视频免费观看| 亚洲欧美日本国产专区一区| 91沈先生播放一区二区| caoporn国产精品免费视频| 五月天亚洲婷婷| 波多野结衣电影免费观看| 狠狠做六月爱婷婷综合aⅴ | 欧美办公室脚交xxxx| 欧美一区二视频| 欧美成人久久久免费播放| 国产亚洲激情| 成人性色av| 黄色国产网站在线播放| 欧美性大战久久久久久久蜜臀| 久久福利小视频| 激情亚洲网站| 国产成人精品福利一区二区三区| 免费av在线| 欧美日韩一区国产| 久久婷婷五月综合| 美女日韩在线中文字幕| 极品尤物一区二区三区| 色呦呦在线观看视频| 91麻豆精品国产91久久久更新时间| 夜夜春很很躁夜夜躁| 亚洲国产欧美国产综合一区| 99精彩视频在线观看免费| h网站久久久| 欧美福利视频一区| 国产一二三四区| 国产一区二区三区精品欧美日韩一区二区三区| 手机在线观看国产精品| 国产韩日精品| 日韩在线免费观看视频| 91极品身材尤物theporn| 中文字幕欧美日韩一区| 欧美日韩亚洲自拍| 欧美成人精品一区二区三区在线看| 国产精品99蜜臀久久不卡二区 | 国产免费久久精品| 亚洲欧美另类动漫| 欧美韩国日本在线观看| 国产自摸综合网| 黄色网址在线免费播放| 日韩欧美在线123| 精品无码黑人又粗又大又长| 成人av网站在线观看免费| 777精品久无码人妻蜜桃| 亚洲精品一级二级三级| 国产成人亚洲综合91| 成人av一区| 4438亚洲最大| 久久精品99久久久久久| 不卡欧美aaaaa| 国产裸体舞一区二区三区| 国产免费久久| 91热精品视频| 黄视频在线免费看| 亚洲欧美中文日韩v在线观看| av手机天堂网| 综合自拍亚洲综合图不卡区| 性生交大片免费看l| 在线亚洲精品| 亚洲欧美日韩另类精品一区二区三区| www.久久久.com| 久久久久久噜噜噜久久久精品| 日韩美女一级视频| 欧美群妇大交群的观看方式| 国产亚洲欧美久久久久| 91亚洲精品久久久蜜桃| 精品999在线| 亚洲小说区图片区| 亚洲黄色成人久久久| 亚洲精品国产九九九| 奇米4444一区二区三区| 老司机在线视频二区| 精品国免费一区二区三区| 波多野结衣不卡| 一区二区免费看| 成人免费无遮挡无码黄漫视频| 久久精品免费观看| 欧美不卡在线播放| 99久久亚洲精品蜜臀| 精品福利影视| 国产不卡精品| 国产精品高潮呻吟久久av野狼| 菠萝菠萝蜜在线视频免费观看| 亚洲男人7777| 国产黄色片免费观看| 色一情一伦一子一伦一区| 青青青在线视频| 国产免费观看久久| 亚洲国产精品无码久久久久高潮| 精品一区二区三区av| 男人亚洲天堂网| 欧美二区视频| 亚洲国产精品一区二区第一页| 美女扒开腿让男人桶爽久久动漫| 成人中文字幕在线观看| 浪潮色综合久久天堂| 97精品国产97久久久久久| caopo在线| www.日韩av.com| 国产精品一区在线看| 亚洲国产精品久久| 性网爆门事件集合av| 欧美日本在线视频| 少妇一级淫片日本| 色香色香欲天天天影视综合网| www.av视频在线观看| 椎名由奈av一区二区三区| 欧美一区二区三区粗大| 国产亚洲欧美激情| 真人bbbbbbbbb毛片| 成人午夜看片网址| 久久人妻少妇嫩草av蜜桃| 国产一区二区精品在线观看| 在线观看国产中文字幕| 久久精品道一区二区三区| 5月婷婷6月丁香| 日韩视频三区| 国产极品粉嫩福利姬萌白酱| 亚洲大胆av| 99色这里只有精品| 国自产拍偷拍福利精品免费一| 99re8这里只有精品| 91麻豆国产自产在线观看亚洲| 午夜精品一区二区三区在线观看 | 国产成人在线视频网址| 欧美一级小视频| 国内精品伊人久久久久av影院| 久久婷五月综合| 久久国产精品免费| 91女神在线观看| 国内久久精品视频| 欧美xxxxxbbbbb| 丁香婷婷综合网| 波多野结衣一二三区| 99久久99久久精品免费观看| 国产国语性生话播放| 久久久久久亚洲综合影院红桃| 97人妻精品一区二区免费| 久久久久久久久久美女| www.99热| 亚洲色图第一区| 日本三级中文字幕| 欧美日韩国产综合新一区| www.毛片.com| 欧美亚洲综合另类| 97在线播放免费观看| 欧美一级生活片| 无码国产精品一区二区色情男同| 亚洲国产精品成人va在线观看| 色视频精品视频在线观看| 亚洲午夜性刺激影院| 欧美激情黑人| 欧美激情一区二区三区久久久 | 亚洲免费大片| 日韩欧美在线免费观看视频| 精久久久久久久久久久| 日本一级大毛片a一 | 一区二区国产精品精华液| 亚洲欧美另类小说| 国产精品7777777| 欧美日韩一区三区| 人妻精品一区二区三区| 亚洲日韩第一页| 大片免费在线观看| 欧美一级大胆视频| 亚洲tv在线| 精品无码久久久久久久动漫| 精品国产欧美日韩| 中文字幕人妻熟女人妻洋洋| 久久久精品午夜少妇| 奇米777在线视频| 久久亚洲精品小早川怜子| 紧身裙女教师波多野结衣| 欧美日韩精品国产| 国产精品国产一区二区三区四区 | 亚洲成人av福利| 成人午夜精品视频| 精品国产伦一区二区三区观看体验| 黄上黄在线观看| 欧美精品在线第一页| 卡通欧美亚洲| 国产精品日韩欧美一区二区| 日韩av免费大片| 18禁免费观看网站| 国产精品91xxx| 国产精品国产三级国产专业不 | 在线视频精品免费| 日韩区在线观看| 超碰在线影院| 26uuu亚洲国产精品| 日韩中文字幕一区二区高清99| 日本不卡一区| 国产美女一区| 性xxxxxxxxx| 亚洲欧洲日本在线| 高潮无码精品色欲av午夜福利| 欧美精品一区在线观看| 秋霞成人影院| 国产精品久久久久久久久久久新郎| 国产精品毛片久久久| 看一级黄色录像| 久久精品国产一区二区| 谁有免费的黄色网址| 精品女同一区二区三区在线播放| 精品黑人一区二区三区国语馆| 在线观看日韩av| 波多视频一区| 精品国产乱码久久久久软件 | 日本wwww视频| 成人小视频免费观看| 免费人成视频在线| 日韩欧美亚洲一区二区| 成人在线影视| 成人福利视频网| 欧美mv日韩| 一女二男3p波多野结衣| 国产精品国产馆在线真实露脸| 最近免费中文字幕大全免费版视频| 日韩精品福利在线| 久久毛片亚洲| 欧美日韩一区在线视频| 老鸭窝91久久精品色噜噜导演| 亚洲男人在线天堂| 欧美日韩另类字幕中文| 日韩欧美电影在线观看| 日本欧美爱爱爱| 国产成人黄色| 亚洲成人av免费看| 国产精品色呦呦| 亚洲天堂狠狠干| 久久香蕉国产线看观看av| 粉嫩一区二区三区在线观看| 日本福利视频导航| 国产精品一区二区免费不卡| 青青草激情视频| 精品欧美黑人一区二区三区| 日本动漫同人动漫在线观看| 国产日韩久久| 亚洲欧美日韩国产综合精品二区| 30一40一50老女人毛片| 色爱区综合激月婷婷| 1024国产在线| 91久久久久久久久久久久久| 国内精品福利| 三上悠亚ssⅰn939无码播放| 91激情五月电影| 黄av在线播放| 动漫3d精品一区二区三区 | 精品久久美女| 可以看污的网站| 一区二区三区中文免费| 日韩中文字幕免费在线观看| 日本亚洲精品在线观看| 日韩欧美网站| 中文字幕18页| 欧美中文字幕一区| av在线网址观看| 你懂的网址一区二区三区| 麻豆成人免费电影| 国产一级在线播放| 亚洲香蕉成视频在线观看| 国产精品白丝久久av网站| 国产va亚洲va在线va| 91色综合久久久久婷婷| 在线免费看av的网站| 久久久中精品2020中文| 精品国产一区二区三区小蝌蚪| 欧美成人乱码一二三四区免费| 亚洲亚洲精品在线观看| 激情在线视频| 成人免费91在线看| 奇米综合一区二区三区精品视频| 久草视频在线免费看| 亚洲人成伊人成综合网久久久| 国产精品777777在线播放| 欧美日韩亚洲一|