黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁技術文章
文章詳情頁

基于Surprise協同過濾實現短視頻推薦方法示例

瀏覽:188日期:2022-06-13 17:04:37
目錄前言環境Surprise介紹協同過濾數據集業務介紹編碼部分1. PHP請求封裝2. PHP發起推薦獲取3. 數據集生成4. 協同過濾服務5. 基于用戶推薦6. 基于物品推薦其他寫在最后前言

前面一文介紹了通過基礎的web項目結構實現簡單的內容推薦,與其說那個是推薦不如說是一個排序算法。因為熱度計算方式雖然解決了內容的時效質量動態化。但是相對用戶而言,大家看到的都是幾乎一致的內容(不一樣也可能只是某時間里某視頻的排前或靠后),沒有做到個性化的千人千面。

盡管如此,基于內容的熱度推薦依然有他獨特的應用場景——熱門榜單。所以只需要把這個功能換一個模塊就可以了,將個性化推薦留給更擅長做這方面的算法。

當然了,做推薦系統的方法很多,平臺層面的像spark和今天要講的Surprise。方法層面可以用深度學習做,也可以用協同過濾,或綜合一起等等。大廠可能就更完善了,在召回階段就有很多通道,比如基于卷積截幀識別視頻內容,文本相似度計算和現有數據支撐,后面又經過清洗,粗排,精排,重排等等流程,可能他們更多的是要保證平臺內容的多樣性。

那我們這里依然走入門實際使用為主,能讓我們的項目快速對接上個性化推薦,以下就是在原因PHP項目結構上對接Surprise,實現用戶和物品的相似度推薦。

環境python3.8Flask2.0pandas2.0mysql-connector-python surpriseopenpyxlgunicorn Surprise介紹

Surprise庫是一款用于構建和分析推薦系統的工具庫,他提供了多種推薦算法,包括基線算法、鄰域方法、基于矩陣分解的算法(如SVD、PMF、SVD++、NMF)等。內置了多種相似性度量方法,如余弦相似性、均方差(MSD)、皮爾遜相關系數等。這些相似性度量方法可以用于評估用戶之間的相似性,從而為推薦系統提供重要的數據支持。

協同過濾數據集

既然要基于工具庫完成協同過濾推薦,自然就需要按該庫的標準進行。Surprise也和大多數協同過濾框架類似,數據集只需要有用戶對某個物品打分分值,如果自己沒有可以在網上下載免費的Movielens或Jester,以下是我根據業務創建的表格,自行參考。

CREATE TABLE `short_video_rating` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` varchar(120) DEFAULT '', `item_id` int(11) DEFAULT '0', `rating` int(11) unsigned DEFAULT '0' COMMENT '評分', `scoring_set` json DEFAULT NULL COMMENT '行為集合', `create_time` int(11) DEFAULT '0', `action_day_time` int(11) DEFAULT '0' COMMENT '更新當天時間', `update_time` int(11) DEFAULT '0' COMMENT '更新時間', `delete_time` int(11) DEFAULT '0' COMMENT '刪除時間', PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=107 DEFAULT CHARSET=utf8mb4 COMMENT='用戶對視頻評分表';業務介紹

Web業務端通過接口或埋點,在用戶操作的地方根據預設的標準記錄評分記錄。當打分表有數據后,用python將SQL記錄轉為表格再導入Surprise,根據不同的算法訓練,最后根據接收的參數返回對應的推薦top列表。python部分由Flask啟動的服務,與php進行http交互,后面將以片段代碼說明。

編碼部分1. PHP請求封裝<?php/** * Created by ZERO開發. * User: 北橋蘇 * Date: 2023/6/26 0026 * Time: 14:43 */namespace app\common\service;class Recommend{ private $condition; private $cfRecommends = []; private $output = []; public function __construct($flag = 1, $lastRecommendIds = [], $userId = '') {$this->condition['flag'] = $flag;$this->condition['last_recommend_ids'] = $lastRecommendIds;$this->condition['user_id'] = $userId; } public function addObserver($cfRecommend) {$this->cfRecommends[] = $cfRecommend; } public function startRecommend() {foreach ($this->cfRecommends as $cfRecommend) { $res = $cfRecommend->recommend($this->condition); $this->output = array_merge($res, $this->output);}$this->output = array_values(array_unique($this->output));return $this->output; }}abstract class cfRecommendBase{ protected $cfGatewayUrl = '127.0.0.1:6016'; protected $limit = 15; public function __construct($limit = 15) {$this->limit = $limit;$this->cfGatewayUrl = config('api.video_recommend.gateway_url'); } abstract public function recommend($condition);}class mcf extends cfRecommendBase{ public function recommend($condition) {//echo 'mcf\n';$videoIdArr = [];$flag = $condition['flag'] ?? 1;$userId = $condition['user_id'] ?? '';$url = '{$this->cfGatewayUrl}/mcf_recommend';if ($flag == 1 && $userId) { //echo 'mcf2\n'; $param['raw_uid'] = (string)$userId; $param['top_k'] = $this->limit; $list = httpRequest($url, $param, 'json'); $videoIdArr = json_decode($list, true) ?? [];}return $videoIdArr; }}class icf extends cfRecommendBase{ public function recommend($condition) {//echo 'icf\n';$videoIdArr = [];$flag = $condition['flag'] ?? 1;$userId = $condition['user_id'] ?? '';$lastRecommendIds = $condition['last_recommend_ids'] ?? [];$url = '{$this->cfGatewayUrl}/icf_recommend';if ($flag > 1 && $lastRecommendIds && $userId) { //echo 'icf2\n'; $itemId = $lastRecommendIds[0] ?? 0; $param['raw_item_id'] = $itemId; $param['top_k'] = $this->limit; $list = httpRequest($url, $param, 'json'); $videoIdArr = json_decode($list, true) ?? [];}return $videoIdArr; }}2. PHP發起推薦獲取

由于考慮到前期視頻存量不足,是采用協同過濾加熱度榜單結合的方式,前端獲取視頻推薦,接口返回視頻推薦列表的同時也帶了下次請求的標識(分頁碼)。這個分頁碼用于當協同過濾服務掛了或沒有推薦時,放在榜單列表的分頁。但是又要保證分頁數是否實際有效,所以當頁碼太大沒有數據返回就通過遞歸重置為第一頁,也把頁碼返回前端讓數據獲取更流暢。

public static function recommend($flag, $videoIds, $userId) {$nexFlag = $flag + 1;$formatterVideoList = [];try { // 協同過濾推薦 $isOpen = config('api.video_recommend.is_open'); $cfVideoIds = []; if ($isOpen == 1) {$recommend = new Recommend($flag, $videoIds, $userId);$recommend->addObserver(new mcf(15));$recommend->addObserver(new icf(15));$cfVideoIds = $recommend->startRecommend(); } // 已讀視頻 $nowTime = strtotime(date('Ymd')); $timeBefore = $nowTime - 60 * 60 * 24 * 100; $videoIdsFilter = self::getUserVideoRatingByTime($userId, $timeBefore); $cfVideoIds = array_diff($cfVideoIds, $videoIdsFilter); // 違規視頻過濾 $videoPool = []; $cfVideoIds && $videoPool = ShortVideoModel::listByOrderRaw($cfVideoIds, $flag); // 冷啟動推薦 !$videoPool && $videoPool = self::hotRank($userId, $videoIdsFilter, $flag); if ($videoPool) {list($nexFlag, $videoList) = $videoPool;$formatterVideoList = self::formatterVideoList($videoList, $userId); }} catch (\Exception $e) { $preFileName = str::snake(__FUNCTION__); $path = self::getClassName(); write_log('msg:' . $e->getMessage(), $preFileName . '_error', $path);}return [$nexFlag, $formatterVideoList]; }3. 數據集生成import osimport mysql.connectorimport datetimeimport pandas as pdnow = datetime.datetime.now()year = now.yearmonth = now.monthday = now.dayfullDate = str(year) + str(month) + str(day)dir_data = './collaborative_filtering/cf_excel'file_path = '{}/dataset_{}.xlsx'.format(dir_data, fullDate)db_config = { 'host': '127.0.0.1', 'database': 'database', 'user': 'user', 'password': 'password'}if not os.path.exists(file_path): cnx = mysql.connector.connect(user=db_config['user'], password=db_config['password'], host=db_config['host'], database=db_config['database']) df = pd.read_sql_query('SELECT user_id, item_id, rating FROM short_video_rating', cnx) print('---------------插入數據集----------------') # 將數據幀寫入Excel文件 df.to_excel(file_path, index=False)if not os.path.exists(file_path): raise IOError('Dataset file is not exists!')4. 協同過濾服務from flask import Flask, request, json, Response, abortfrom collaborative_filtering import cf_itemfrom collaborative_filtering import cf_userfrom collaborative_filtering import cf_mixfrom werkzeug.middleware.proxy_fix import ProxyFixapp = Flask(__name__)@app.route('/')def hello_world(): return abort(404)@app.route('/mcf_recommend', methods=['POST', 'GET'])def get_mcf_recommendation(): json_data = request.get_json() raw_uid = json_data.get('raw_uid') top_k = json_data.get('top_k') recommend_result = cf_mix.collaborative_fitlering(raw_uid, top_k) return Response(json.dumps(recommend_result), mimetype='application/json')@app.route('/ucf_recommend', methods=['POST', 'GET'])def get_ucf_recommendation(): json_data = request.get_json() raw_uid = json_data.get('raw_uid') top_k = json_data.get('top_k') recommend_result = cf_user.collaborative_fitlering(raw_uid, top_k) return Response(json.dumps(recommend_result), mimetype='application/json')@app.route('/icf_recommend', methods=['POST', 'GET'])def get_icf_recommendation(): json_data = request.get_json() raw_item_id = json_data.get('raw_item_id') top_k = json_data.get('top_k') recommend_result = cf_item.collaborative_fitlering(raw_item_id, top_k) return Response(json.dumps(recommend_result), mimetype='application/json')if __name__ == '__main__': app.run(host='0.0.0.0', debug=True, port=6016 )5. 基于用戶推薦# -*- coding: utf-8 -*-# @File : cf_recommendation.pyfrom __future__ import (absolute_import, division, print_function,unicode_literals)from collections import defaultdictimport osfrom surprise import Datasetfrom surprise import Readerfrom surprise import BaselineOnlyfrom surprise import KNNBasicfrom surprise import KNNBaselinefrom heapq import nlargestimport pandas as pdimport datetimeimport timedef get_top_n(predictions, n=10): top_n = defaultdict(list) for uid, iid, true_r, est, _ in predictions:top_n[uid].append((iid, est)) for uid, user_ratings in top_n.items():top_n[uid] = nlargest(n, user_ratings, key=lambda s: s[1]) return top_nclass PredictionSet(): def __init__(self, algo, trainset, user_raw_id=None, k=40):self.algo = algoself.trainset = trainsetself.k = kif user_raw_id is not None: self.r_uid = user_raw_id self.i_uid = trainset.to_inner_uid(user_raw_id) self.knn_userset = self.algo.get_neighbors(self.i_uid, self.k) user_items = set([j for (j, _) in self.trainset.ur[self.i_uid]]) self.neighbor_items = set() for nnu in self.knn_userset:for (j, _) in trainset.ur[nnu]: if j not in user_items:self.neighbor_items.add(j) def user_build_anti_testset(self, fill=None):fill = self.trainset.global_mean if fill is None else float(fill)anti_testset = []user_items = set([j for (j, _) in self.trainset.ur[self.i_uid]])anti_testset += [(self.r_uid, self.trainset.to_raw_iid(i), fill) for i in self.neighbor_items if i not in user_items]return anti_testsetdef user_build_anti_testset(trainset, user_raw_id, fill=None): fill = trainset.global_mean if fill is None else float(fill) i_uid = trainset.to_inner_uid(user_raw_id) anti_testset = [] user_items = set([j for (j, _) in trainset.ur[i_uid]]) anti_testset += [(user_raw_id, trainset.to_raw_iid(i), fill) for i in trainset.all_items() if i not in user_items] return anti_testset# ================= surprise 推薦部分 ====================def collaborative_fitlering(raw_uid, top_k): now = datetime.datetime.now() year = now.year month = now.month day = now.day fullDate = str(year) + str(month) + str(day) dir_data = './collaborative_filtering/cf_excel' file_path = '{}/dataset_{}.xlsx'.format(dir_data, fullDate) if not os.path.exists(file_path):raise IOError('Dataset file is not exists!') # 讀取數據集##################### alldata = pd.read_excel(file_path) reader = Reader(line_format='user item rating') dataset = Dataset.load_from_df(alldata, reader=reader) # 所有數據生成訓練集 trainset = dataset.build_full_trainset() # ================= BaselineOnly ================== bsl_options = {'method': 'sgd', 'learning_rate': 0.0005} algo_BaselineOnly = BaselineOnly(bsl_options=bsl_options) algo_BaselineOnly.fit(trainset) # 獲得推薦結果 rset = user_build_anti_testset(trainset, raw_uid) # 測試休眠5秒,讓客戶端超時 # time.sleep(5) # print(rset) # exit() predictions = algo_BaselineOnly.test(rset) top_n_baselineonly = get_top_n(predictions, n=5) # ================= KNNBasic ================== sim_options = {'name': 'pearson', 'user_based': True} algo_KNNBasic = KNNBasic(sim_options=sim_options) algo_KNNBasic.fit(trainset) # 獲得推薦結果 --- 只考慮 knn 用戶的 predictor = PredictionSet(algo_KNNBasic, trainset, raw_uid) knn_anti_set = predictor.user_build_anti_testset() predictions = algo_KNNBasic.test(knn_anti_set) top_n_knnbasic = get_top_n(predictions, n=top_k) # ================= KNNBaseline ================== sim_options = {'name': 'pearson_baseline', 'user_based': True} algo_KNNBaseline = KNNBaseline(sim_options=sim_options) algo_KNNBaseline.fit(trainset) # 獲得推薦結果 --- 只考慮 knn 用戶的 predictor = PredictionSet(algo_KNNBaseline, trainset, raw_uid) knn_anti_set = predictor.user_build_anti_testset() predictions = algo_KNNBaseline.test(knn_anti_set) top_n_knnbaseline = get_top_n(predictions, n=top_k) # =============== 按比例生成推薦結果 ================== recommendset = set() for results in [top_n_baselineonly, top_n_knnbasic, top_n_knnbaseline]:for key in results.keys(): for recommendations in results[key]:iid, rating = recommendationsrecommendset.add(iid) items_baselineonly = set() for key in top_n_baselineonly.keys():for recommendations in top_n_baselineonly[key]: iid, rating = recommendations items_baselineonly.add(iid) items_knnbasic = set() for key in top_n_knnbasic.keys():for recommendations in top_n_knnbasic[key]: iid, rating = recommendations items_knnbasic.add(iid) items_knnbaseline = set() for key in top_n_knnbaseline.keys():for recommendations in top_n_knnbaseline[key]: iid, rating = recommendations items_knnbaseline.add(iid) rank = dict() for recommendation in recommendset:if recommendation not in rank: rank[recommendation] = 0if recommendation in items_baselineonly: rank[recommendation] += 1if recommendation in items_knnbasic: rank[recommendation] += 1if recommendation in items_knnbaseline: rank[recommendation] += 1 max_rank = max(rank, key=lambda s: rank[s]) if max_rank == 1:return list(items_baselineonly) else:result = nlargest(top_k, rank, key=lambda s: rank[s])return list(result)# print('排名結果: {}'.format(result))6. 基于物品推薦-*- coding: utf-8 -*-from __future__ import (absolute_import, division, print_function,unicode_literals)from collections import defaultdictimport ioimport osfrom surprise import SVD, KNNBaseline, Reader, Datasetimport pandas as pdimport datetimeimport mysql.connectorimport pickle# ================= surprise 推薦部分 ====================def collaborative_fitlering(raw_item_id, top_k): now = datetime.datetime.now() year = now.year month = now.month day = now.day fullDate = str(year) + str(month) + str(day) # dir_data = './collaborative_filtering/cf_excel' dir_data = './cf_excel' file_path = '{}/dataset_{}.xlsx'.format(dir_data, fullDate) if not os.path.exists(file_path):raise IOError('Dataset file is not exists!') # 讀取數據集##################### alldata = pd.read_excel(file_path) reader = Reader(line_format='user item rating') dataset = Dataset.load_from_df(alldata, reader=reader) # 使用協同過濾必須有這行,將我們的算法運用于整個數據集,而不進行交叉驗證,構建了新的矩陣 trainset = dataset.build_full_trainset() # print(pd.DataFrame(list(trainset.global_mean()))) # exit() # 度量準則:pearson距離,協同過濾:基于item sim_options = {'name': 'pearson_baseline', 'user_based': False} algo = KNNBaseline(sim_options=sim_options) algo.fit(trainset) # 將訓練好的模型序列化到磁盤上 # with open('./cf_models/cf_item_model.pkl', 'wb') as f: # pickle.dump(algo, f) #從磁盤中讀取訓練好的模型 # with open('cf_item_model.pkl', 'rb') as f: # algo = pickle.load(f) # 轉換為內部id toy_story_inner_id = algo.trainset.to_inner_iid(raw_item_id) # 根據內部id找到最近的10個鄰居 toy_story_neighbors = algo.get_neighbors(toy_story_inner_id, k=top_k) # 將10個鄰居的內部id轉換為item id也就是raw toy_story_neighbors_rids = (algo.trainset.to_raw_iid(inner_id) for inner_id in toy_story_neighbors) result = list(toy_story_neighbors_rids) return result # print(list(toy_story_neighbors_rids))if __name__ == '__main__': res = collaborative_fitlering(15, 20) print(res)其他

推薦服務生產部署開發環境下可以通過python recommend_service.py啟動,后面部署環境需要用到gunicorn,方式是安裝后配置環境變量。代碼里導入werkzeug.middleware.proxy_fix, 修改以下的啟動部分以下內容,啟動改為gunicorn -w 5 -b 0.0.0.0:6016 app:appapp.wsgi_app = ProxyFix(app.wsgi_app)app.run()

模型本地保存隨著業務數據的累計,自然需要訓練的數據集也越來越大,所以后期關于模型訓練周期,可以縮短。也就是定時訓練模型后保存到本地,然后根據線上的數據做出推薦,模型存儲與讀取方法如下。2.1. 模型存儲

sim_options = {'name': 'pearson_baseline', 'user_based': False} algo = KNNBaseline(sim_options=sim_options) algo.fit(trainset) # 將訓練好的模型序列化到磁盤上 with open('./cf_models/cf_item_model.pkl', 'wb') as f: pickle.dump(algo, f)

2.2. 模型讀取

with open('cf_item_model.pkl', 'rb') as f:algo = pickle.load(f) # 轉換為內部id toy_story_inner_id = algo.trainset.to_inner_iid(raw_item_id) # 根據內部id找到最近的10個鄰居 toy_story_neighbors = algo.get_neighbors(toy_story_inner_id, k=top_k) # 將10個鄰居的內部id轉換為item id也就是raw toy_story_neighbors_rids = (algo.trainset.to_raw_iid(inner_id) for inner_id in toy_story_neighbors) result = list(toy_story_neighbors_rids) return result寫在最后

上面的依然只是實現了推薦系統的一小部分,在做數據召回不管可以對視頻截幀還可以分離音頻,通過卷積神經網絡識別音頻種類和視頻大致內容。再根據用戶以往瀏覽記錄形成的標簽實現內容匹配等等,這個還要后期不斷學習和完善的。?

以上就是基于Surprise協同過濾實現短視頻推薦方法示例的詳細內容,更多關于Surprise短視頻推薦的資料請關注好吧啦網其它相關文章!

標簽: PHP
主站蜘蛛池模板: 国产冒白浆 | 可以直接看的毛片 | 亚洲v | 久久久久一区二区三区 | 狠狠88综合久久久久综合网 | 性一交一乱一乱一视频96 | 9lporm自拍视频区论坛 | 作爱视频在线 | 不卡的在线视频 | 精品国产91亚洲一区二区三区www | 草逼视频网 | 青娱乐超碰 | 高清二区 | 国产黄色自拍视频 | av一区不卡| 免费三级网站 | 日韩精品资源 | 不卡在线视频 | 午夜18视频在线观看 | 97视频免费看 | 亚洲精品国产精品乱码不卡√香蕉 | 日韩一区二区三区视频 | 婷婷开心激情网 | 日韩丰满少妇无码内射 | 国产偷亚洲偷欧美偷精品 | 色小说综合 | 18禁裸乳无遮挡自慰免费动漫 | 手机在线永久免费观看av片 | 第三级在线播放 | 姑娘第5集在线观看免费好剧 | 国精产品一区一区三区有限在线 | 亚洲综合欧美综合 | 免费一区二区视频 | 草草影院ccyy国产日本第一页 | 久久久久久久999 | 最新日韩精品中文字幕 | 日本高清在线播放 | 欧美国产精品日韩在线 | 色av色婷婷| 欧美成人精品第一区二区三区 | 国产内射在线激情一区 | 黄色一级视频免费 | 久久福利网 | 久久天天躁狠狠躁夜夜不卡 | 国产精品久久久久蜜臀 | 日韩午夜片| 超碰在线 | 隣の若妻さん波多野结衣 | 蜜月va乱码一区二区三区 | 一边添奶一边摸pp爽快视频 | 风间由美不戴奶罩邻居勃起av | 亚洲精品乱码久久久久久金桔影视 | 欧美成人三级在线 | 久久亚洲免费 | 免费黄色国产 | 亚洲日本韩国欧美云霸高清 | 日韩精品久久久久影视的特点 | 亚洲精品国产欧美在线观看 | www.欧美日韩 | 91视| 日韩在线小视频 | 欧洲国产伦久久久久久久 | 理论片黄色 | 亚洲中文字幕在线观看 | 性啪啪chinese东北女人 | 久久人人爽人人爽人人片av麻烦 | 久久久橹橹橹久久久久高清 | 国产在线不卡一区二区三区 | 成人性生交大片免费看vr | 欧美高清免费 | 亚洲一区二区欧美 | 国产经典自拍 | 国产1区2区 | √天堂资源在线 | 免费人成在线观看网站 | 亚洲精品久久久久玩吗 | 人妻少妇偷人精品视频 | 黑人狂躁曰本人aⅴ | 丁香婷婷在线观看 | 免费视频拗女稀缺一区二区 | 围产精品久久久久久久 | 99热这里只有精品首页 | av在线影片 | 天天摸天天草 | 青草青在线视频 | 又色又污又爽又黄的网站 | 天堂视频网站 | 欧美成年人在线视频 | 午夜黄色小视频 | www.色就是色 | 日韩a级在线观看 | 国产精品黄色裸体片 | 屁屁国产第一页草草影院 | 伊人激情网 | 97无人区码一码二码三码 | 新版本天堂资源在线中文8的特点 | 极品气质女神呻吟娇喘91 | 精品国产乱码久久久久久夜甘婷婷 | 亚洲精品国产成人av在线 | 伊人免费在线观看 | 美女bbbbb免费视频 | 91麻豆精品秘密 | 特级av片| 亚洲w码欧洲s码免费 | 免费黄色片视频 | 中文字幕无码乱码人妻系列蜜桃 | 新搬来的女邻居麻豆av评分 | 成年人免费网 | 韩国三级中文字幕 | 成人春色www在线 | 欧美亚洲精品suv一区 | 黄色在线观看免费视频 | 精品福利一区 | 欧美一区二区三区久久综合 | 麻豆国产精品视频 | 免费欧美黄| 免费性片 | 色婷婷久久久swag精品 | 国产精品999久久久 国产精品99精品 | 国产女无套免费网站 | 欧美一区二区三区视频在线观看 | 亚洲日本欧美日韩中文字幕 | 欧美午夜一区二区三区 | 69sex久久精品国产麻豆 | 人人爽日日躁夜夜躁尤物 | av激情久久 | 中文字字幕在线中文乱码范文 | 91极品美女 | 日本精品视频一区二区 | 日韩欧美超碰 | 久久精品大全 | 思思久久96热在精品国产 | 久久精品无码一区二区三区免费 | 日韩最新中文字幕 | 成人免费视频在线播放 | 成人性视频免费看的鲁片 | 狠狠狠色丁香婷婷综合久久五月 | 无码人妻丰满熟妇区bbbbxxxx | 人妻少妇精品视频二区 | 欧美日韩国产码高清 | 青青草伊人网 | 有码视频在线观看 | 9l视频自拍九色9l视频大全 | 亚洲中文字幕第一页在线 | 老司机67194精品线观看 | 成人午夜免费在线观看 | 99r精品视频在线观看 | 亚洲日韩国产成网在线观看 | 日韩亚洲精品视频 | 真人黄色毛片 | 法国极品成人h版 | 肉番在线观看 | 国产激情久久久久影院 | gai免费观看网站外网 | 亚洲女同性ⅹxx关女同网站 | 成人性生交xxxxx网站 | 欧美又大又色又爽bbbbb片 | 日韩人妻中文无码一区二区七区 | 国产精品美女一区二区三区 | 大乳村妇的性需求 | 日韩少妇乱码一区二区三区免费 | 性欧美视频一区二区三区 | 国产边打电话边被躁视频 | 亚洲青涩 | 91网站在线免费观看 | 欧美成人一级片 | 国产午夜av秒播在线观看 | 大胆欧美gogo免费视频一二区 | 日韩精品999 | 在线视频资源 | 国产成人a人亚洲精品无码 国产男女猛烈无遮挡免费网站 | 日韩视频精品 | 看曰本女人大战黑人视频 | 99成人在线视频 | 国产suv精品一区 | 四虎免费影视 | 日本一区二区在线免费观看 | 欧美福利视频一区 | 九九九在线观看 | 免费无码成人av在线播放不卡 | 欧美a一级| 成人免费影片在线观看 | 久久国产精品无码网站 | 国精产品一区一区三区有限在线 | 久久久久久久久99 | 欧美人与禽zozzo禽性配 | 久久久久北条麻妃免费看 | 精品一区免费观看 | 日日摸天天摸爽爽狠狠97 | 免费线上av| 国内少妇毛片视频 | caoporn国产精品免费公开 | avhd101在线成人播放 | 97国产精东麻豆人妻电影 | 成年人免费看毛片 | 亚洲国产一区二区三区波多野结衣 | 日本精品一二三 | 亚洲一区二区三区四区五区不卡 | 国产亚洲欧美一区二区三区 | 中文字幕2021 | 印度女人狂野牲交 | 乱色精品无码一区二区国产盗 | 国产成人精品视频ⅴa片软件竹菊 | 十八禁在线观看视频播放免费 | 国产精品一区二区毛片 | 毛片导航 | 可以免费看av的网站 | 337p亚洲精品色噜噜狠狠 | 少妇太爽了在线观看免费 | 中文字幕人成乱码在线观看 | 国产对白精品刺激二区国语 | 国产精品久久久久久久久久久久午夜片 | 公用小sao货h | 国产熟妇另类久久久久 | 久热re这里精品视频在线6 | 国产偷国产偷亚洲精品孕妇 | 亚洲精品乱码久久久久久花季 | 国产欧美在线 | 亚洲人色婷婷成人网站在线观看 | av福利院| 成人h免费观看视频 | 国产在线观看免费视频今夜 | 久久国产成人 | 在线免费av播放 | 亚洲国产精品自产在线播放 | 在线观看成人小视频 | 色月婷婷 | 在线观看一区二区视频 | 亚洲综合激情在线 | 亚洲免费视频网 | 欧美成人乱码一二三四区免费 | 国产情侣一区二区 | 免费国产黄色片 | 色亚洲色图 | 最新的黄色网址 | 刘亦菲毛片一区二区三区 | 国产精品久久久久久久久久红粉 | 国产精品v日韩精品v在线观看 | 亚洲欧美一区二区三区国产精品 | 亚洲精品成人片在线观看 | 毛片大片 | 国产对白叫床清晰在线播放 | 亚洲国产精品美女久久久久 | 欧美日韩一卡二卡三卡 | 欧美午夜一区二区三区免费大片 | 亚洲精品久久久久avwww潮水 | 亚洲精品国产精品乱码不99 | 日韩插 | 少妇啊灬啊别停灬用力啊房东 | 亚洲天堂毛片 | 色婷婷亚洲一区二区三区 | 国产又黄又猛又粗又爽的 | 天天干天天操天天爱 | 成人日韩视频 | 色婷婷夜夜躁狠狠躁麻豆免费 | 中文字幕不卡一区 | 奇米影视第四色首页 | 中文字幕丝袜一区二区 | 日本不卡一区在线观看 | 97久久天天综合色天天综合色hd | 丁香婷婷深情五月亚洲 | 中文字幕少妇在线三级hd | 欧美日韩在线中文字幕 | 国产91在线免费 | 亚洲精品一级 | 成人片黄网站色大片免费毛片 | 乱人伦人妻中文字幕不卡 | 鲁夜天天末成午 | 成人免费网站视频 | 日本aaaa大片免费观看入口 | 91国内视频 | 国产日日日 | 日韩六区 | 欧美啪啪网 | 免费毛片a线观看 | 日本三级韩国三级欧美三级 | 一本色道久久99精品综合蜜臀 | 九九热综合 | 免费人成自慰网站 | 午夜婷婷色 | 韩日视频 | 中国videosex高潮hd | 51视频国产精品一区二区 | 香蕉视频在线免费看 | 日本添下边视频全过程 | 亚洲欧美成人一区二区三区 | 天堂av资源网 | 国内精品久久久久伊人aⅴ 国内精品毛片 | 亚洲人成在线播放网站 | 日韩狠狠操 | 亚洲一久久久久久久久 | 伊人av在线免费观看 | 亚洲欧美中文日韩在线v日本 | 亚洲一本之道高清乱码 | 91精品国产乱码久久蜜臀 | 国产一级α片 | 在线观看的av网站 | 欧美人与禽2o2o性论交 | 欧美成人黄色网 | 一二三区视频 | 欧美一级免费片 | 亚洲色图p | 熟妇人妻av无码一区二区三区 | 少妇疯狂做受xxxx高潮台湾 | 欧洲xxxxx| 女性向小h片资源在线观看 女性隐私黄www网站视频 | 女人被做到高潮免费视频 | 中文字幕在线字幕中文 | 国产偷v国产偷v亚洲高清 | 一本之道色综合网站 | 96福利视频 | 日韩成人av在线播放 | 亚洲一级一级一级 | 精品人妻av一区二区三区 | √天堂资源地址中文在线 | 中文无码成人免费视频在线观看 | www.日日| 国产cao | 亚洲激情四射 | 亚洲精品国产欧美 | 亚日韩在线 | 少妇一级淫片bbb | 一本加勒比北条麻妃 | 中文韩国午夜理伦三级好看 | 在线视频资源 | av亚洲产国偷v产偷v自拍软件 | 91亚洲精品国产成人 | 成人激情免费视频 | 亚洲午夜视频 | 成人性做爰aaa片免费看曹查理 | 操日本老妇 | 欧美色爱综合网 | 黄色三级网址 | 中文字幕精品视频在线观看 | 亚洲一区二区不卡在线观看 | 日本一二区视频 | 视频一区二区三区四区五区 | 香蕉久久久 | 日本不卡中文字幕 | 欧美一级二级片 | 九九热在线视频观看这里只有精品 | 黄色网址在线免费 | 欧美日韩1区2区3区 欧美日韩3p | 国产免费无遮挡 | 国产 日韩 欧美 在线 | 一本色道久久综合狠狠躁篇怎么玩 | 国产精品国产三级国产av剧情 | 日韩欧美一级大片 | 国产一区二区三区 | 国产精品视频六区 | 国产视频在线播放 | 欧美性受xxx黑人xyx性爽 | 日本三级大全 | 国产又大又粗又猛又爽的视频 | 日韩一二在线 | www.精品国产| 免费看成人啪啪 | 一级黄色大片视频 | 在线天堂www在线国语对白 | 一本久久综合亚洲鲁鲁五月天 | 国产一区二区三区在线观看免费 | 狠狠躁夜夜躁人人爽蜜桃 | 国内自在二三区 | 日韩有码一区 | 亚洲午夜精品久久 | 欧美一区二区福利视频 | 亚洲欧美综合久久 | 少妇高潮太爽了在线视频 | 香蕉视频在线观看免费 | 国产伦精品一区二区三区视频我 | 国产综合久久久久久鬼色 | 国产精品成人免费一区二区视频 | 老司机福利院 | 91蜜桃| 欧美成人三级在线 | 日本视频在线看 | 无码视频一区二区三区在线观看 | 天堂网www网在线最新版 | 天海翼av在线播放 | 久久久久夜夜夜综合国产 | 亚洲精品怡红院 | 亚洲一区二区三区四区的 | 美女福利一区 | 亚洲熟妇av一区二区三区浪潮 | 美女无遮挡免费视频网站 | 强迫凌虐淫辱の牝奴在线观看 | 红花成人网 | 精品九九久久 | 欧美激情午夜 | 国产专区第一页 | 一级做a爰片性色毛片99 | 交aaa免费视频 | 久久免费看 | 丁香在线视频 | 亚洲成a人蜜臀av在线播放 | 精品欧美一区二区精品久久久 | 乌克兰极品少妇ⅴαdeo | jizz性欧美10 | 成人黄色免费在线观看 | 亚洲国产精品美女久久久久 | 女人被狂c躁到高潮视频 | 天天爱天天草 | 久草在线新首页 | 亚洲免费视频观看 | 免费在线观看一区 | 久久 国产 尿 小便 嘘嘘 | 另类性姿势bbwbbw | 内射合集对白在线 | 国产精品盗摄!偷窥盗摄 | 不卡的日韩av | zσzo欧美性猛交xx | 一区二区三区欧美在线观看 | 免费观看又色又爽又黄的崩锅 | 后人极品翘臀美女在线播放 | 国产精品美女一区二区 | 99riav国产精品 | 夜夜爽日日澡人人添蜜臀 | 国产又色又爽无遮挡免费动态图 | 9九色桋品熟女内射 | 青娱乐极品视觉盛宴av | 欧美高清视频一区二区三区 | 交专区videossex农村 | 亚洲88av| 99精品久久精品一区二区 | 欧美在线视频一区 | a网站在线观看 | 男女做爰猛烈叫床高潮的书 | 亚洲欧美日韩成人在线 | 精品99久久 | 91精品国产乱码久久久久久张柏芝 | 一 级 黄 色 片免费网站 | 麻豆成人久久精品二区三区小说 | 国产激情久久久久久熟女老人av | 蜜桃av成人 | 免费在线观看日韩av | 亚洲精品一区二区三区蜜臀 | 影院一区 | 沦为黑人姓奴的少妇 | 精品久久久久久久久久久久久久久久久 | 国内毛片毛片 | 中文天堂在线视频 | 粉嫩粉嫩一区二区三区在线播放 | 亚洲精品视频一区二区三区 | 免费人成在线观看网站 | jizz视频 | 国产精品视频第一页 | 亚洲国产中文字幕在线视频综合 | 欧美伦理一区二区 | 丰满人妻一区二区三区无码av | 91亚洲精品丁香在线观看 | 嫩模一区 | 天啪 | 国产精品色在线网站 | 麻豆人人妻人人妻人人片av | 一个人看的www视频在线播放 | 国内精品在线观看视频 | 午夜在线网址 | 丰满熟女人妻中文字幕免费 | 欧美日韩国产精品 | 美日韩在线观看 | 欧美在线日韩在线 | 永久免费的啪啪网站免费观看 | 隣の若妻さん波多野结衣 | 国产ts人妖调教重口男 | 国产高清久久 | 亚洲中文字幕无码一久久区 | 亚洲国产综合精品2020 | 亚洲成aⅴ人在线观看 | 中文字幕乱码亚洲无线三区 | 免费人成在线视频无码 | 中文字幕 欧美激情 | av在线亚洲男人的天堂 | 在线免费观看污网站 | 国产精品久久久久久久久久久天堂 | 中国少妇内射xxxhd免费 | 国产精品高潮露脸在线观看 | 黄色av小说在线观看 | 欧美有码视频 | 亚洲最大的黄色网 | 日韩高清在线播放 | 久久成人免费网站 | 永久影院 | 色资源在线 | 91精品国产综合久久久久影院不卡 | 欧美色射 | 亚洲另类激情专区小说图片 | 情趣内衣a∨片在线观看 | 日本欧美韩国国产精品 | 免费一级淫片aaa片毛片a级 | 久久成人影院精品777 | 麻豆av一区二区三区久久 | 一区二区三区四区免费视频 | zzzwww在线观看免 | 色网在线免费观看 | 天堂在/线资源中文在线 | 18禁白丝喷水视频www视频 | 无码日韩精品一区二区免费暖暖 | 欧美乱淫 | 祥仔av免费一区二区三区四区 | 久久久久久亚洲精品不卡4k岛国 | 青青草超碰 | 清纯唯美一区二区三区 | 成人久草 | 免费情侣作爱视频 | 亚洲天堂三级 | 日批免费在线观看 | 久久亚洲中文字幕不卡一二区 | 六月婷婷综合网 | www成人在线视频 | 性欧美极品另类 | 关晓彤三级在线播放 | 91久久精品人人做人人爽综合 | xxxwww在线观看 | 中文字幕乱偷无码av先锋 | 九九久久精品 | 国产精品久久久福利 | 尤物视频在线 | 狠色狠狠色狠狠狠色综合久久 | 亚洲熟妇无码av | 不卡视频一区 | 日本一区二区免费看 | 亚洲国产精品久久精品怡红院 | 伊人精品在线视频 | a黄视频| 亚洲精品av中文字幕在线 | 三浦理惠子av在线播放 | 精品免费国产 | 日韩第1页 | 天堂中文字幕免费一区 | 米奇777超碰欧美日韩亚洲 | 久久综合网欧美色妞网 | 一区二区国产精品视频 | 怡红院成人在线 | 精品久草 | 免费精品人在线二线三线 | 久久久美女视频 | 四虎综合网 | 亚洲午夜精品一区二区三区 | 色呦呦视频 | 女人十八毛片嫩草av | 成人乱码一区二区三区av | 色午夜视频| 日本在线高清视频 | 放荡艳妇的疯狂呻吟中文视频 | 亚洲蜜桃精久久久久久久久久久久 | 在线亚洲天堂 | 亚洲一区视频在线播放 | 一女三黑人理论片在线 | 亚洲一区二区三区av在线观看 | 日婷婷 | 成人无号精品一区二区三区 | 久久久久人妻一区二区三区 | 成人午夜网址 | 99国产精品免费 | 天天搞夜夜 | 色久av| 免费久久av| 欧美成人生活片 | 四虎影视最新免费版 | 澳门三级 黄色在线看! | 一区二区三区麻豆 | 日本强伦姧人妻一区二区 | 国产性生交大片免费 | 日本一区二区视频 | 69av视频在线 | 亚洲老女人视频 | 中文字幕乱码人妻一区二区三区 | 茄子成人看a∨片免费软件 茄子视频色 | 久草网视频在线观看 | 少妇把腿扒开让我舔18 | 女同av亚洲女人天堂 | 成人婷婷网色偷偷亚洲男人的天堂 | 日韩福利在线视频 | 国内精品偷拍视频 | 日韩1级片 | 日韩av一区二区三区在线 | 久久精品视频亚洲 | 国产一区黄色 | 国产又色又爽又黄刺激视频 | 少妇人妻偷人精品视频 | 欧美一区二区免费视频 | 欧美日韩亚洲在线观看 | 国产91精品一区二区麻豆网站 | 免费福利片2019潦草影视午夜 | 粉嫩欧美一区二区三区 | 五月天中文字幕mv在线 | 夜影影视剧大全在线观看 | 狠狠久久久 | 日本www视频在线观看 | 一区一区三区产品乱码 | 国产又粗又猛又爽视频上高潮69 | 无码人妻精品丰满熟妇区 | 精品国产国产综合精品 | 日韩精品色呦呦 | 一个人在线观看免费中文www | 国产精品成人av性教育 | 欧美精品一区二区三区四区 | 老牛影视av一区二区在线观看 | 99久久久久久久久久久 | 日本精品视频一区 | 亚洲午夜精品久久久久久 | 近伦中文字幕 | 狂野3p欧美激情性xxxx | 天天摸天天看天天做天天爽 | 国产免费a∨片同性同志 | 国产绳艺sm调教室论坛 | jzzijzzij日本成熟少妇 | 91精品国产色综合久久不卡粉嫩 | 国产二区三区在线 | 日本www视频在线观看 | 国产亚洲精品久久久闺蜜 | 亚洲色土 | 最近免费中文字幕中文高清百度 | 国产一区二区三区又黄又爽 | 狠狠躁夜夜躁人人爽天天5 中国china露脸自拍性hd |