久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NLP在线医生(一)

發布時間:2024/3/12 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NLP在线医生(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.1 背景介紹


  • 學習目標:
    • 了解智能對話系統的相關背景知識.
    • 掌握使用Unit對話API.

  • 什么是智能對話系統?
    • 隨著人工智能技術的發展, 聊天機器人, 語音助手等應用在生活中隨處可見, 比如百度的小度, 阿里的小蜜, 微軟的小冰等等. 其目的在于通過人工智能技術讓機器像人類一樣能夠進行智能回復, 解決現實中的各種問題.


  • 從處理問題的角度來區分, 智能對話系統可分為:
    • 任務導向型: 完成具有明確指向性的任務, 比如預定酒店咨詢, 在線問診等等.
    • 非任務導向型: 沒有明確目的, 比如算算術, 播放音樂, 回答問題.

  • 我們的在線醫生項目就是任務導向型的智能對話系統.

1.2 Unit對話API的使用


  • 學習目標:
    • 了解Unit平臺的相關知識.
    • 掌握調用Unit API的實現過程.

  • Unit平臺的相關知識:
    • Unit平臺是百度大腦開放的智能對話定制與服務平臺, 也是當前最大的中文領域對話開放平臺之一. Unit對注冊用戶提供免費的對話接口服務, 比如中文閑聊API, 百科問答API, 詩句生成API等, 通過這些API我們可以感受一下智能對話的魅力, 同時它也可以作為任務導向型對話系統無法匹配用戶輸入時的最終選擇.


  • Unit閑聊API演示:
用戶輸入 >>> "你好" Unit回復 >>> "你好,想聊什么呢~" 用戶輸入 >>> "我想有一個女朋友!" Unit回復 >>> "我也是想要一個女朋友~" 用戶輸入 >>> "晚吃啥呢想想" Unit回復 >>> "想吃火鍋"
  • 調用Unit API的實現過程:
    • 第一步: 注冊登錄百度賬戶, 進入Unit控制臺創建自己的機器人.
    • 第二步: 進行相關配置, 獲得請求API接口需要的API Key與Secret Key.
    • 第三步: 在服務器上編寫API調用腳本并進行測試.

  • 第一步: 注冊登錄百度賬戶, 進入Unit控制臺創建自己的機器人.
    ai.baidu.com

  • 第二步: 進行相關配置, 獲得請求API接口需要的API Key與Secret Key.
  • 點擊獲取API Key進入百度云應用管理頁面.

  • 點擊創建應用, 進入應用信息表單填寫頁面.

  • 填寫完畢后, 點擊立即創建, 成功后會提示創建完畢.

  • 點擊返回應用列表.
  • 可以看到創建的API Key和Secret Key, 至此創建流程結束.
  • 第三步: 在服務器上編寫API調用腳本并進行測試
import json import random import requests# client_id 為官網獲取的AK, client_secret 為官網獲取的SK client_id = "1xhPonkmHqwolDt3GCICLX39" client_secret = "SRYsfjMGNuW8G265paMXLEjDTjO6O4RC"def unit_chat(chat_input, user_id="88888"):"""description:調用百度UNIT接口,回復聊天內容Parameters----------chat_input : str用戶發送天內容user_id : str發起聊天用戶ID,可任意定義Return----------返回unit回復內容"""# 設置默認回復內容, 一旦接口出現異常, 回復該內容chat_reply = "不好意思,俺們正在學習中,隨后回復你。"# 根據 client_id 與 client_secret 獲取access_tokenurl = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=%s&client_secret=%s" % (client_id, client_secret)res = requests.get(url)access_token = eval(res.text)["access_token"]# 根據 access_token 獲取聊天機器人接口數據unit_chatbot_url = "https://aip.baidubce.com/rpc/2.0/unit/service/chat?access_token=" + access_token# 拼裝聊天接口對應請求發送數據,主要是填充 query 值post_data = {"log_id": str(random.random()),"request": {"query": chat_input,"user_id": user_id},"session_id": "","service_id": "S23245","version": "2.0"}# 將封裝好的數據作為請求內容, 發送給Unit聊天機器人接口, 并得到返回結果res = requests.post(url=unit_chatbot_url, json=post_data)# 獲取聊天接口返回數據unit_chat_obj = json.loads(res.content)# print(unit_chat_obj)# 打印返回的結果# 判斷聊天接口返回數據是否出錯 error_code == 0 則表示請求正確if unit_chat_obj["error_code"] != 0: return chat_reply# 解析聊天接口返回數據,找到返回文本內容 result -> response_list -> schema -> intent_confidence(>0) -> action_list -> sayunit_chat_obj_result = unit_chat_obj["result"]unit_chat_response_list = unit_chat_obj_result["response_list"]# 隨機選取一個"意圖置信度"[+response_list[].schema.intent_confidence]不為0的技能作為回答unit_chat_response_obj = random.choice([unit_chat_response for unit_chat_response in unit_chat_response_list ifunit_chat_response["schema"]["intent_confidence"] > 0.0])unit_chat_response_action_list = unit_chat_response_obj["action_list"]unit_chat_response_action_obj = random.choice(unit_chat_response_action_list)unit_chat_response_say = unit_chat_response_action_obj["say"]return unit_chat_response_sayif __name__ == '__main__':while True:chat_input = input("請輸入:")print(chat_input)chat_reply = unit_chat(chat_input)print("用戶輸入 >>>", chat_input)print("Unit回復 >>>", chat_reply)if chat_input == 'Q' or chat_input == 'q':break
  • 代碼位置: /data/doctor_online/main_serve/unit.py

  • 調用:
python unit.py
  • 輸出效果:
請輸入:你好啊 你好啊 用戶輸入 >>> 你好啊 Unit回復 >>> 你也好啊~ 請輸入:今天天氣棒棒噠 今天天氣棒棒噠 用戶輸入 >>> 今天天氣棒棒噠 Unit回復 >>> 必須的 請輸入:晚飯吃點什么? 晚飯吃點什么? 用戶輸入 >>> 晚飯吃點什么? Unit回復 >>> 晚飯沒吃,減肥 請輸入:
  • 本章總結:

    • 學習了智能對話系統的相關背景知識:
      • 什么是智能對話系統
      • 從處理問題的目的來區分, 智能對話系統的分類

    • 我們的在線醫生項目就是任務導向型的智能對話系統.

    • 學習了Unit平臺的相關知識:
      • Unit平臺是百度大腦開放的智能對話定制與服務平臺, 也是當前最大的中文領域對話開放平臺之一.

    • 學習了調用Unit API的實現過程:
      • 第一步: 注冊登錄百度賬戶, 進入Unit控制臺創建自己的機器人.
      • 第二步: 進行相關配置, 獲得請求API接口需要的API Key與Secret Key.
      • 第三步: 在服務器上編寫API調用腳本并進行測試.

2.1 在線醫生的總體架構

  • 學習目標:
    • 了解在線醫生項目的總體架構

  • 項目整體架構圖:


  • 架構圖分析:
    • 整個項目分為: 在線部分和離線部分
    • 在線部分包括: werobot服務模塊, 主要邏輯服務模塊, 句子相關模型服務模塊, 會話管理模塊(redis), 圖數據庫模塊以及規則對話/Unit模塊.
    • 離線部分包括: 結構與非結構化數據采集模塊, NER模型使用模塊, 以及實體審核模型使用模塊.
    • 在線部分數據流: 從用戶請求開始, 通過werobot服務, 在werobot服務內部請求主服務, 在主服務中將調用會話管理數據庫redis, 調用句子相關模型服務, 以及調用圖數據庫, 最后將查詢結果輸送給對話規則模版或者使用Unit對話API回復.
    • 離線部分數據流: 從數據采集開始, 將獲得結構化和非結構化的數據, 對于結構化數據將直接使用實體審核模型進行審核, 然后寫入圖數據庫; 對于非結構化數據, 將使用NER模型進行實體抽取, 然后通過實體審核后再寫入圖數據庫.

2.2 總體架構中的工具介紹


  • 學習目標:
    • 了解總體架構中使用了哪些工具.
    • 掌握總體架構中各個工具的簡介, 作用, 安裝和基本使用方法.

  • 總體架構中使用的工具:
    • Flask web服務框架
    • Redis數據庫
    • Gunicorn服務組件
    • Supervisor服務監控器
    • Neo4j圖數據庫

  • Flask web服務框架:

  • 簡介:
    * Flask框架是當下最受歡迎的python輕量級框架, 也是pytorch官網指定的部署框架. Flask的基本模式為在程序里將一個視圖函數分配給一個URL,每當用戶訪問這個URL時,系統就會執行給該URL分配好的視圖函數,獲取函數的返回值,其工作過程見圖.


  • 作用:
    * 在項目中, Flask框架是主邏輯服務和句子相關模型服務使用的服務框架.

  • 安裝:
# 使用pip安裝Flask pip install Flask==1.1.1
  • 基本使用方法:
# 導入Flask類 from flask import Flask # 創建一個該類的實例app, 參數為__name__, 這個參數是必需的, # 這樣Flask才能知道在哪里可找到模板和靜態文件等東西. app = Flask(__name__)# 使用route()裝飾器來告訴Flask觸發函數的URL @app.route('/') def hello_world():"""請求指定的url后,執行的主要邏輯函數"""# 在用戶瀏覽器中顯示信息:'Hello, World!'return 'Hello, World!'if __name__ == '__main__':app.run(host="0.0.0.0", port=5000)
  • 代碼位置: /data/doctor_onine/main_serve/app.py

  • 啟動服務:
python app.py
  • 啟動效果:
    * 通過瀏覽器打開地址http://127.0.0.1:5000/可看見打印了’Hello, World’.

  • Redis數據庫:
    window下使用redis

先在redis目錄下cmd: redis-server.exe redis.windows.conf 啟動redis服務
再在redis目錄下另開cmd,輸入redis-cli -h 127.0.0.1 -p 6379 -a 密碼

  • 簡介:
    * Redis(全稱:Remote Dictionary Server 遠程字典服務)是一個開源的使用ANSI C語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,并提供多種語言的API.

  • 作用:
    * 在項目中, Redis用于會話管理數據庫, 保存用戶聊天歷史.

  • 安裝:
# 使用yum安裝redis yum install redis -y
  • 基本使用方法:
    * Redis支持四種數據結構的存儲: String(字符串), Hash(散列), List(列表), Set(集合), Sorted Set(有序集合).
    * 在這里我們將著重介紹如何在python中使用Hash(散列)進行讀寫.

  • 安裝python中的redis驅動:
# 使用pip進行安裝 pip install redis
  • 啟動redis服務:
# 啟動redis-server, 這里使用了默認配置, 端口是6379. redis-server
  • 在python中使用Hash(散列)進行讀寫:

如果redis 設置了密碼
需要
REDIS_CONFIG = {
‘host’:‘127.0.0.1’,
‘port’:6379,
‘password’:‘123456’
}
否則報錯:Authentication required.

# coding=utf-8 # redis配置 REDIS_CONFIG = {"host": "0.0.0.0","port": 6379 }# 導入redis驅動 import redis# 創建一個redis連接池 pool = redis.ConnectionPool( **REDIS_CONFIG) # 從連接池中初始化一個活躍的連接對象 r = redis.StrictRedis(connection_pool=pool) # hset表示使用hash數據結構進行數據寫入 # uid代表某個用戶的唯一標識 uid = "8888" # key是需要記錄的數據描述 key = "該用戶最后一次說的話:".encode('utf-8') # value是需要記錄的數據具體內容 value = "再見, 董小姐".encode('utf-8') r.hset(uid, key, value)# hget表示使用hash數據結構進行數據讀取 result = r.hget(uid, key) print(result.decode('utf-8'))
  • 輸出效果:
再見, 董小姐
  • Gunicorn服務組件:

  • 簡介:
    * Gunicorn是一個被廣泛使用的高性能的Python WSGI UNIX HTTP服務組件(WSGI: Web Server Gateway Interface),移植自Ruby的獨角獸(Unicorn )項目,具有使用非常簡單,輕量級的資源消耗,以及高性能等特點.

  • 作用:
    * 在項目中, Gunicorn和Flask框架一同使用, 能夠開啟服務, 處理請求,因其高性能的特點能夠有效減少服務丟包率.

  • 安裝:
# 使用pip安裝gunicorn pip install gunicorn==20.0.4
  • 基本使用方法:
# 使用其啟動Flask服務: gunicorn -w 1 -b 0.0.0.0:5000 app:app # -w 代表開啟的進程數, 我們只開啟一個進程 # -b 服務的IP地址和端口 # app:app 是指執行的主要對象位置, 在app.py中的app對象 # 如果使其在后臺運行可使用: # nohup gunicorn -w 1 -b 0.0.0.0:5001 app:app &
  • Supervisor服務監控:
  • 簡介:
    * Supervisor是用Python開發的一個client/server服務,是Linux/Unix系統下的一個進程管理工具。它可以很方便的監聽、啟動、停止、重啟一個或多個進程, 并守護這些進程。

  • 作用:
    * 在項目中, Supervisor用于監控和守護主要邏輯服務和redis數據庫服務.

  • 安裝:
# 使用yum安裝supervisor yum install supervisor -y
  • 基本使用方法:
# 編輯配置文件, 指明監控和守護的進程開啟命令, # 請查看/data/doctor_online/supervisord.conf文件 # 開啟supervisor, -c用于指定配置文件 sueprvisord -c /data/doctor_online/main_server/supervisord.conf# 查看監控的進程狀態: supervisorctl status# main_server RUNNING pid 31609, uptime 0:32:20 # redis RUNNING pid 31613, uptime 0:32:18# 關閉supervisor supervisorctl shutdown
  • 還可以通過瀏覽器查看可視化監控頁面: http://0.0.0.0:9001


  • Neo4j圖數據庫:
    • 因為在項目中, Neo4j圖數據庫作為核心的存儲和查詢數據庫, 后續課件中對其進行詳細的介紹.

  • 本章總結:

    • 學習了架構圖分析:
      • 整個項目分為: 在線部分和離線部分
      • 在線部分包括: werobot服務模塊, 主要邏輯服務模塊, 句子相關模型服務模塊, 會話管理模塊(redis), 圖數據庫模塊以及規則對話/Unit模塊.
      • 離線部分包括: 結構與非結構化數據采集模塊, NER模型使用模塊, 以及實體審核模型使用模塊.

    • 學習了總體架構中使用的工具:
      • Flask web服務框架
      • Redis數據庫
      • Gunicorn服務組件
      • Supervisor服務監控器
      • Neo4j圖數據庫

    • Flask web服務框架:
      • 作用: 在項目中, Flask框架是主邏輯服務和句子相關模型服務使用的服務框架.

    • Redis數據庫:
      • 作用: 在項目中, Redis用于會話管理數據庫, 保存用戶聊天歷史.

    • Gunicorn服務組件:
      • 作用: 在項目中, Gunicorn和Flask框架一同使用, 能夠開啟服務, 處理請求,因其高性能的特點能夠有效減少服務丟包率.

    • Supervisor服務監控:
      • 作用: 在項目中, Supervisor用于監控和守護主要邏輯服務和redis數據庫服務.

3.1 neo4j簡介

  • 學習目標:
    • 了解neo4j圖數據庫的簡介, 版本說明.
    • 了解節點, 關系,屬性,標簽的有關概念.


windows 下neo4j

警告: ERROR! Neo4j cannot be started using java version 1.7.0_75
解決: java JDK下載
并重新配置java JDK 環境變量后,可以正常啟動neo4j

瀏覽器登錄http://localhost:7474/browser/ 初始賬號密碼均為:neo4j
若出現問題:“ NotFoundError:無法在’Node’上執行’removeChild’:要刪除的節點不是該節點的子節點?!辈⑶覒贸绦驘o法恢復。 更換chrome或者其他瀏覽器

  • neo4j簡介:
    • neo4j是由Java實現的開源NoSQL圖數據庫.自從2003年開始研發, 到2007年發布第一版, 最新版本為3.3.5, neo4j現如今已經被各行各業的數十萬家公司和組織采用.
    • neo4j實現了專業數據庫級別的圖數據模型的存儲. 與普通的圖處理或內存級數據庫不同, neo4j提供了完整的數據庫特性, 包括ACID事物的支持, 集群支持, 備份與故障轉移等. 這使其適合于企業級生產環境下的各種應用.

  • neo4j的版本說明:
    • 企業版: 需要高額的付費獲得授權, 提供高可用, 熱備份等性能.
    • 社區開源版: 免費使用, 但只能單點運行.

  • neo4j圖形數據庫的有關概念:


  • 節點
    * 節點是主要的數據元素, 節點通過關系連接到其他節點, 節點可以具有一個或多個屬性
    (即存儲為鍵/值對的屬性), 節點有一個或多個標簽, 用于描述其在圖表中的作用. 示例: Person>節點.
    * 可以將節點類比為關系型數據庫中的表, 對應的標簽可以類比為不同的表名, 屬性就是表中的列.

  • 關系
    * 關系連接兩個節點, 關系是方向性的, 關系可以有一個或多個屬性(即存儲為鍵/值對的
    屬性).

  • 屬性
    * 屬性是命名值, 其中名稱(或鍵)是字符串, 屬性可以被索引和約束, 可以從多個屬性創
    建復合索引.

  • 標簽
    * 標簽用于組節點到集, 節點可以具有多個標簽, 對標簽進行索引以加速在圖中查找節點.

3.2 neo4j圖數據庫的安裝

  • 學習目標:
    • 掌握neo4j圖數據庫的安裝流程及其可視化后臺的登陸…

  • neo4j圖數據庫的安裝流程:
    • 第一步: 將neo4j安裝信息載入到yum檢索列表.
    • 第二步: 使用yum install命令安裝.
    • 第三步: 修改配置文件內容 /etc/neo4j/neo4j.conf.
    • 第四步: 啟動neo4j數據庫.

  • 第一步: 將neo4j安裝信息載入到yum檢索列表
cd /tmp wget http://debian.neo4j.org/neotechnology.gpg.key rpm --import neotechnology.gpg.key cat <<EOF> /etc/yum.repos.d/neo4j.repo # 寫入下面內容 [neo4j] name=Neo4j RPM Repository baseurl=http://yum.neo4j.org/stable enabled=1 gpgcheck=1
  • 第二步: 使用yum install命令安裝
yum install neo4j-3.3.5
  • 第三步: 修改配置文件默認在/etc/neo4j/neo4j.conf, 為了方便顯示下面把一些修改顯示在這里
# 數據庫的存儲庫存儲位置、日志位置等 dbms.directories.data=/var/lib/neo4j/data dbms.directories.plugins=/var/lib/neo4j/plugins dbms.directories.certificates=/var/lib/neo4j/certificates dbms.directories.logs=/var/log/neo4j dbms.directories.lib=/usr/share/neo4j/lib dbms.directories.run=/var/run/neo4j# 導入的位置 dbms.directories.import=/var/lib/neo4j/import# 初始化內存大小 dbms.memory.heap.initial_size=512m# Bolt 連接地址 dbms.connector.bolt.enabled=true dbms.connector.bolt.tls_level=OPTIONAL dbms.connector.bolt.listen_address=0.0.0.0:7687
  • 第四步: 啟動neo4j數據庫
# 啟動命令 neo4j start# 終端顯示如下, 代表啟動成功 Active database: graph.db Directories in use:home: /usr/neo4jconfig: /etc/neo4jlogs: /var/log/neo4jplugins: /var/lib/neo4j/pluginsimport: /var/lib/neo4j/importdata: /var/lib/neo4j/datacertificates: /var/lib/neo4j/certificatesrun: /var/run/neo4j Starting Neo4j.
  • neo4j的可視化管理后臺登陸:
    • 訪問地址: http://0.0.0.0:7474.
    • ConnectURL: bolt://0.0.0.0:7687
    • Username: neo4j
    • Password: neo4j (默認)


  • 小節總結:

    • 學習了neo4j圖數據庫的安裝流程:
      • 第一步: 將neo4j安裝信息載入到yum檢索列表.
      • 第二步: 使用yum install命令安裝.
      • 第三步: 修改配置文件內容 /etc/neo4j/neo4j.conf.
      • 第四步: 啟動neo4j數據庫.

    • 學習了neo4j的可視化管理后臺登陸:
      • 訪問地址: http://0.0.0.0:7474.
      • ConnectURL: bolt://0.0.0.0:7687
      • Username: neo4j
      • Password: neo4j (默認)

3.3 Cypher介紹與使用

  • 學習目標
    • 了解Cypher的基本概念.
    • 掌握Cypher的基本命令和語法.

  • Cypher的基本概念:
    • Cypher是neo4j圖數據的查詢語言, 類似于mysql數據庫的sql語句, 但是它允許對圖形進行富有表現力和有效的查詢和更新.

  • Cypher的基本命令和語法:
    • create命令
    • match命令
    • merge命令
    • relationship關系命令
    • where命令
    • delete命令
    • sort命令
    • 字符串函數
    • 聚合函數
    • index索引命令

  • create命令: 創建圖數據中的節點.

  • 演示:
# 創建命令格式: # 此處create是關鍵字, 創建節點名稱node_name, 節點標簽Node_Label, 放在小括號里面() # 后面把所有屬于節點標簽的屬性放在大括號'{}'里面, 依次寫出屬性名稱:屬性值, 不同屬性用逗號','分隔 # 例如下面命令創建一個節點e, 節點標簽是Employee, 擁有id, name, salary, deptnp四個屬性: CREATE (e:Employee{id:222, name:'Bob', salary:6000, deptnp:12})
  • 效果


  • match命令: 匹配(查詢)已有數據.

  • 演示:
# match命令專門用來匹配查詢, 節點名稱:節點標簽, 依然放在小括號內, 然后使用return語句返回查詢結果, 和SQL很相似. MATCH (e:Employee) RETURN e.id, e.name, e.salary, e.deptno
  • 效果:


  • merge命令: 若節點存在, 則等效與match命令; 節點不存在, 則等效于create命令.

  • 演示:
MERGE (e:Employee {id:146, name:'Lucer', salary:3500, deptno:16})
  • 效果:


  • 然后再次用merge查詢, 發現數據庫中的數據并沒有增加, 因為已經存在相同的數據了, merge匹配成功.

  • 演示:
MERGE (e:Employee {id:146, name:'Lucer', salary:3500, deptno:16})
  • 效果:


  • 使用create創建關系: 必須創建有方向性的關系, 否則報錯.

  • 演示:
# 創建一個節點p1到p2的有方向關系, 這個關系r的標簽為Buy, 代表p1購買了p2, 方向為p1指向p2 CREATE (p1:Profile1)-[r:Buy]->(p2:Profile2)
  • 效果:


  • 使用merge創建關系: 可以創建有/無方向性的關系.

  • 演示:
# 創建一個節點p1到p2的無方向關系, 這個關系r的標簽為miss, 代表p1-miss-p2, 方向為相互的 MERGE (p1:Profile1)-[r:miss]-(p2:Profile2)
  • 效果:


  • where命令: 類似于SQL中的添加查詢條件.

  • 演示:
# 查詢節點Employee中, id值等于123的那個節點 MATCH (e:Employee) WHERE e.id=123 RETURN e
  • 效果:


  • delete命令: 刪除節點/關系及其關聯的屬性.

  • 演示:
# 注意: 刪除節點的同時, 也要刪除關聯的關系邊 MATCH (c1:CreditCard)-[r]-(c2:Customer) DELETE c1, r, c2
  • 效果:


  • sort命令: Cypher命令中的排序使用的是order by.

  • 演示:
# 匹配查詢標簽Employee, 將所有匹配結果按照id值升序排列后返回結果 MATCH (e:Employee) RETURN e.id, e.name, e.salary, e.deptno ORDER BY e.id# 如果要按照降序排序, 只需要將ORDER BY e.salary改寫為ORDER BY e.salary DESC MATCH (e:Employee) RETURN e.id, e.name, e.salary, e.deptno ORDER BY e.salary DESC
  • 效果:


  • 字符串函數:
    • toUpper()函數
    • toLower()函數
    • substring()函數
    • replace()函數

  • toUpper()函數: 將一個輸入字符串轉換為大寫字母.

  • 演示:
MATCH (e:Employee) RETURN e.id, toUpper(e.name), e.salary, e.deptno
  • 效果:


  • toLower()函數: 講一個輸入字符串轉換為小寫字母.

  • 演示:
MATCH (e:Employee) RETURN e.id, toLower(e.name), e.salary, e.deptno
  • 效果:


  • substring()函數: 返回一個子字符串.

  • 演示:
# 輸入字符串為input_str, 返回從索引start_index開始, 到end_index-1結束的子字符串 substring(input_str, start_index, end_index)# 示例代碼, 返回員工名字的前兩個字母 MATCH (e:Employee) RETURN e.id, substring(e.name,0,2), e.salary, e.deptno
  • 效果:


  • replace()函數: 替換掉子字符串.

  • 演示:
# 輸入字符串為input_str, 將輸入字符串中符合origin_str的部分, 替換成new_str replace(input_str, origin_str, new_str)# 示例代碼, 將員工名字替換為添加后綴_HelloWorld MATCH (e:Employee) RETURN e.id, replace(e.name,e.name,e.name + "_HelloWorld"), e.salary, e.deptno
  • 效果:


  • 聚合函數
    • count()函數
    • max()函數
    • min()函數
    • sum()函數
    • avg()函數

  • count()函數: 返回由match命令匹配成功的條數.

  • 演示:
# 返回匹配標簽Employee成功的記錄個數 MATCH (e:Employee) RETURN count( * )
  • 效果:


  • max()函數: 返回由match命令匹配成功的記錄中的最大值.

  • 演示:
# 返回匹配標簽Employee成功的記錄中, 最高的工資數字 MATCH (e:Employee) RETURN max(e.salary)
  • 效果:


  • min()函數: 返回由match命令匹配成功的記錄中的最小值.

  • 演示:
# 返回匹配標簽Employee成功的記錄中, 最低的工資數字 MATCH (e:Employee) RETURN min(e.salary)
  • 效果:


  • sum()函數: 返回由match命令匹配成功的記錄中某字段的全部加和值.

  • 演示:
# 返回匹配標簽Employee成功的記錄中, 所有員工工資的和 MATCH (e:Employee) RETURN sum(e.salary)
  • 效果:


  • avg()函數: 返回由match命令匹配成功的記錄中某字段的平均值.

  • 演示:
# 返回匹配標簽Employee成功的記錄中, 所有員工工資的平均值 MATCH (e:Employee) RETURN avg(e.salary)
  • 效果:


  • 索引index
    • Neo4j支持在節點或關系屬性上的索引, 以提高查詢的性能.
    • 可以為具有相同標簽名稱的所有節點的屬性創建索引.

  • 創建索引: 使用create index on來創建索引.

  • 演示:
# 創建節點Employee上面屬性id的索引 CREATE INDEX ON:Employee(id)
  • 效果:


  • 刪除索引: 使用drop index on來刪除索引.

  • 演示:
# 刪除節點Employee上面屬性id的索引 DROP INDEX ON:Employee(id)
  • 效果:


  • 小節總結:

    • 學習了Cypher的基本概念:
      • Cypher是neo4j圖數據的查詢語言, 類似于mysql數據庫的sql語句, 但是它允許對圖形進行富有表現力和有效的查詢和更新.

    • Cypher的基本命令和語法:
      • create命令
      • match命令
      • merge命令
      • relationship關系命令
      • where命令
      • delete命令
      • sort命令
      • 字符串函數
      • 聚合函數
      • index索引命令

    • create命令: 創建圖數據中的節點.
      • CREATE (e:Employee{id:222, name:‘Bob’, salary:6000, deptnp:12})

    • match命令: 匹配(查詢)已有數據.
      • MATCH (e:Employee) RETURN e.id, e.name, e.salary, e.deptno

    • merge命令: 若節點存在, 則等效與match命令; 節點不存在, 則等效于create命令.
      • MERGE (e:Employee {id:145, name:‘Lucy’, salary:7500, deptno:12})

    • 使用create創建關系: 必須創建有方向性的關系, 否則報錯.
      • CREATE (p1:Profile1)-[r:Buy]->(p2:Profile2)

    • 使用merge創建關系: 可以創建有/無方向性的關系.
      • MERGE (p1:Profile1)-[r:miss]-(p2:Profile2)

    • where命令: 類似于SQL中的添加查詢條件.
      • MATCH (e:Employee) WHERE e.id=123 RETURN e

    • delete命令: 刪除節點/關系及其關聯的屬性.
      • MATCH (c1:CreditCard)-[r]-(c2:Customer) DELETE c1, r, c2

    • sort命令: Cypher命令中的排序使用的是order by.
      • MATCH (e:Employee) RETURN e.id, e.name, e.salary, e.deptno ORDER BY e.id

    • 字符串函數:
      • toUpper()函數
      • toLower()函數
      • substring()函數
      • replace()函數

    • toUpper()函數: 將一個輸入字符串轉換為大寫字母.
      • MATCH (e:Employee) RETURN e.id, toUpper(e.name), e.salary, e.deptno

    • toLower()函數: 講一個輸入字符串轉換為小寫字母.
      • MATCH (e:Employee) RETURN e.id, toLower(e.name), e.salary, e.deptno

    • substring()函數: 返回一個子字符串.
      • MATCH (e:Employee) RETURN e.id, substring(e.name,0,2), e.salary, e.deptno

    • replace()函數: 替換掉子字符串.
      • MATCH (e:Employee) RETURN e.id, replace(e.name,e.name,e.name + “_HelloWorld”), e.salary, e.deptno

    • 聚合函數
      • count()函數
      • max()函數
      • min()函數
      • sum()函數
      • avg()函數

    • count()函數: 返回由match命令匹配成功的條數.
      • MATCH (e:Employee) RETURN count( * )

    • max()函數: 返回由match命令匹配成功的記錄中的最大值.
      • MATCH (e:Employee) RETURN max(e.salary)

    • min()函數: 返回由match命令匹配成功的記錄中的最小值.
      • MATCH (e:Employee) RETURN min(e.salary)

    • sum()函數: 返回由match命令匹配成功的記錄中某字段的全部加和值.
      • MATCH (e:Employee) RETURN sum(e.salary)

    • avg()函數: 返回由match命令匹配成功的記錄中某字段的平均值.
      • MATCH (e:Employee) RETURN avg(e.salary)

    • 索引index
      • Neo4j支持在節點或關系屬性上的索引, 以提高查詢的性能.
      • 可以為具有相同標簽名稱的所有節點的屬性創建索引.

    • 創建索引: 使用create index on來創建索引.
      • CREATE INDEX ON:Employee(id)

    • 刪除索引: 使用drop index on來刪除索引.
      • DROP INDEX ON:Employee(id)

3.4 在Python中使用neo4j

  • 學習目標
    • 了解python中neo4j-driver的相關知識.
    • 掌握neo4j中事務概念和操作方法.

  • neo4j-driver簡介:
    • neo4j-driver是一個python中的package, 作為python中neo4j的驅動, 幫助我們在python程序中更好的使用圖數據庫.

  • neo4j-driver的安裝:
pip install neo4j-driver
  • neo4j-driver使用演示:

config.py

# 設置neo4j圖數據庫的配置信息 NEO4J_CONFIG = {"uri": "bolt://127.0.0.1:7687","auth": ("username", "password"),"encrypted": False } from neo4j import GraphDatabase# 關于neo4j數據庫的用戶名,密碼信息已經配置在同目錄下的config.py文件中 from config import NEO4J_CONFIGdriver = GraphDatabase.driver( **NEO4J_CONFIG)# 直接用python代碼形式訪問節點Company, 并返回所有節點信息 with driver.session() as session:cypher = "CREATE(c:Company) SET c.name='在線醫生' RETURN c.name"record = session.run(cypher)result = list(map(lambda x: x[0], record))print("result:", result)
  • 輸出效果:
result: ['在線醫生']
  • 事務的概念:
    • 如果一組數據庫操作要么全部發生要么一步也不執行,我們稱該組處理步驟為一個事務, 它是數據庫一致性的保證.

  • 使用事務的演示:
def _some_operations(tx, cat_name, mouse_name):tx.run("MERGE (a:Cat{name: $cat_name})""MERGE (b:Mouse{name: $mouse_name})""MERGE (a)-[r:And]-(b)",cat_name=cat_name, mouse_name=mouse_name)with driver.session() as session:session.write_transaction(_some_operations, "Tom", "Jerry")
  • 輸出效果:

查詢多個節點多個屬性
match(c:Cat) - [r] - (m:Mouse) return c.name, m.name


  • 小節總結:

    • 學習了neo4j-driver簡介:
      • neo4j-driver是一個python中的package, 作為python中neo4j的驅動, 幫助我們在python程序中更好的使用圖數據庫.

    • 學習了neo4j-driver的安裝和使用方法.

    • 學習了事務的概念:
      • 如果一組數據庫操作要么全部發生要么一步也不執行,我們稱該組處理步驟為一個事務, 它是數據庫一致性的保證.

    • 學習了如何使用事務來向圖數據庫中寫入數據.

4.1 離線部分簡要分析


  • 學習目標:
    • 了解離線部分的數據流水線以及組成部分.
    • 了解各個組成部分的作用.

  • 離線部分架構圖:


  • 離線部分架構展開圖:


  • 離線部分簡要分析:
    • 根據架構展開圖圖,離線部分可分為兩條數據流水線,分別用于處理結構化數據和非結構化數據. 這里稱它們為結構化數據流水線和非結構化數據流水線.

  • 結構化數據流水線的組成部分:
    • 結構化數據爬蟲: 從網頁上抓取結構化的有關醫學命名實體的內容.
    • 結構化數據的清洗: 對抓取的內容進行過濾和清洗, 以保留需要的部分.
    • 命名實體審核: 對當前命名實體進行審核, 來保證這些實體符合我們的要求.
    • 命名實體寫入數據庫: 將審核后的命名實體寫入數據庫之中, 供在線部分使用.

  • 非結構化數據流水線的組成部分:
    • 非結構化數據爬蟲: 從網頁上抓取非結構化的包含醫學命名實體的文本.
    • 非結構化數據清洗: 對非結構化數據進行過濾和清洗, 以保留需要的部分.
    • 命名實體識別: 使用模型從非結構化文本中獲取命名實體.
    • 命名實體審核: 對當前命名實體進行審核, 來保證這些實體符合我們的要求.
    • 命名實體寫入數據庫: 將審核后的命名實體寫入數據庫之中, 供在線部分使用.

  • 說明:
    • 因為本項目是以AI為核心的項目, 因為結構化與非結構化的數據爬蟲和清洗部分的內容這里不做介紹, 但同學們要知道我們的數據來源.

4.2 結構化數據流水線


  • 學習目標:
    • 了解需要進行命名實體審核的數據內容.
    • 掌握結構化數據流水線中命名實體審核的過程.
    • 掌握結構化數據流水線中命名實體寫入的過程.

  • 需要進行命名實體審核的數據內容:
... 踝部急性韌帶損傷.csv 踝部扭傷.csv 踝部骨折.csv 蹄鐵形腎.csv 蹼狀陰莖.csv 躁狂抑郁癥.csv 躁狂癥.csv 躁郁癥.csv 軀體形式障礙.csv 軀體感染伴發的精神障礙.csv 軀體感染所致精神障礙.csv 軀體感覺障礙.csv 軀體疾病伴發的精神障礙.csv 轉換性障礙.csv 轉移性小腸腫瘤.csv 轉移性皮膚鈣化病.csv 轉移性肝癌.csv 轉移性胸膜腫瘤.csv 轉移性骨腫瘤.csv 輪狀病毒性腸炎.csv 輪狀病毒所致胃腸炎.csv 軟產道異常性難產.csv ...
  • 每個csv文件的名字都是一種疾病名.

  • 文件位置: /data/doctor_offline/structured/noreview/

  • 以躁狂癥.csv為例, 有如下內容:
躁郁樣 躁狂 行為及情緒異常 心境高漲 情緒起伏大 技術狂躁癥 攻擊行為 易激惹 思維奔逸 控制不住的聯想 精神運動性興奮
  • csv文件的內容是該疾病對應的癥狀, 每種癥狀占一行.

  • 文件位置: /data/doctor_offline/structured/noreview/躁狂癥.csv

  • 進行命名實體審核:
    • 進行命名實體審核的工作我們這里使用AI模型實現, 包括訓練數據集, 模型訓練和使用的整個過程, 因此這里內容以獨立一章的形成呈現給大家, 具體參見[第五章: 命名實體審核任務].

  • 刪除審核后的可能存在的空文件:
# Linux 命令-- 刪除當前文件夾下的空文件 find ./ -name "*" -type f -size 0c | xargs -n 1 rm -f
  • 代碼位置: 在/data/doctor_offline/structured/reviewed/目錄下執行.

  • 命名實體寫入數據庫:

  • 將命名實體寫入圖數據庫的原因:
    * 寫入的數據供在線部分進行查詢,根據用戶輸入癥狀來匹配對應疾病.

  • 將命名實體寫入圖數據庫代碼:
# 引入相關包 import os import fileinput from neo4j import GraphDatabase from config import NEO4J_CONFIGdriver = GraphDatabase.driver( **NEO4J_CONFIG)def _load_data(path):"""description: 將path目錄下的csv文件以指定格式加載到內存:param path: 審核后的疾病對應癥狀的csv文件:return: 返回疾病字典,存儲各個疾病以及與之對應的癥狀的字典{疾病1: [癥狀1, 癥狀2, ...], 疾病2: [癥狀1, 癥狀2, ...]"""# 獲得疾病csv列表disease_csv_list = os.listdir(path)# 將后綴.csv去掉, 獲得疾病列表disease_list = list(map(lambda x: x.split(".")[0], disease_csv_list))# 初始化一個癥狀列表, 它里面是每種疾病對應的癥狀列表symptom_list = []# 遍歷疾病csv列表for disease_csv in disease_csv_list:# 將疾病csv中的每個癥狀取出存入symptom列表中# symptom = list(map(lambda x : x.strip(), fileinput.FileInput(os.path.join(path, disease_csv), openhook= fileinput.hook_encoded('utf-8'))))symptom = list(map(lambda x: x.strip(), fileinput.FileInput(os.path.join(path, disease_csv))))# 過濾掉所有長度異常的癥狀名symptom = list(filter(lambda x: 0<len(x)<100, symptom))symptom_list.append(symptom)# 返回指定格式的數據 {疾病:對應癥狀}return dict(zip(disease_list, symptom_list))def write(path):"""description: 將csv數據寫入到neo4j, 并形成圖譜:param path: 數據文件路徑"""# 使用_load_data從持久化文件中加載數據disease_symptom_dict = _load_data(path)# 開啟一個neo4j的sessionwith driver.session() as session:for key, value in disease_symptom_dict.items():cypher = "MERGE (a:Disease{name:%r}) RETURN a" %keysession.run(cypher)for v in value:cypher = "MERGE (b:Symptom{name:%r}) RETURN b" %vsession.run(cypher)cypher = "MATCH (a:Disease{name:%r}) MATCH (b:Symptom{name:%r}) \WITH a,b MERGE(a)-[r:dis_to_sym]-(b)" %(key, v)session.run(cypher)cypher = "CREATE INDEX ON:Disease(name)"session.run(cypher)cypher = "CREATE INDEX ON:Symptom(name)"session.run(cypher)
  • 調用:
# 輸入參數path為csv數據所在路徑 path = "/data/doctor_offline/structured/reviewed/" write(path)

fileinput UnicodeDecodeError: gbk codec cant decode byte 0x80 in position 2: illegal multibyte sequence
解決:symptom = list(map(lambda x : x.strip(), fileinput.FileInput(os.path.join(path, disease_csv), openhook= fileinput.hook_encoded(‘utf-8’))))
symptom = list(map(lambda x: x.strip(), fileinput.FileInput(os.path.join(path, disease_csv))))


  • 輸出效果:
    * 通過可視化管理后臺查看寫入效果.
MATCH(a:Disease) - [r:dis_to_sym] - (b:Symptom) RETURN a, r, b LIMIT 25 # 或者 MATCH p = () -[r : dis_to_sym] - () RETURN p LIMIT 25


4.3 非結構化數據流水線


  • 學習目標:
    • 了解需要進行命名實體識別的數據內容.
    • 掌握非結構化數據流水線中命名實體識別的過程.
    • 掌握非結構化數據流水線中命名實體審核的過程.
    • 掌握非結構化數據流水線中命名實體寫入的過程.

  • 需要進行命名實體識別的數據內容:
... 麻疹樣紅斑型藥疹.txt 麻疹病毒肺炎.txt 麻痹性臂叢神經炎.txt 麻風性周圍神經病.txt 麻風性葡萄膜炎.txt 黃體囊腫.txt 黃斑囊樣水腫.txt 黃斑裂孔性視網膜脫離.txt 黃韌帶骨化癥.txt 黏多糖貯積癥.txt 黏多糖貯積癥Ⅰ型.txt 黏多糖貯積癥Ⅱ型.txt 黏多糖貯積癥Ⅵ型.txt 黏多糖貯積癥Ⅲ型.txt 黏多糖貯積癥Ⅶ型.txt 黑色丘疹性皮膚病.txt ...
  • 每個txt文件的名字都是一種疾病名.

  • 文件位置: /data/doctor_offline/unstructured/norecognite/

  • 以黑色丘疹性皮膚病.txt為例, 有如下內容:
初呈微小、圓形、皮膚色或黑色增深的丘疹,單個或少數發生于頜部或頰部,皮損逐漸增大增多,數年中可達數百,除眶周外尚分布于面部、頸部和胸上部。皮損大小形狀酷似脂溢性角化病及扁平疣鶒。不發生鱗屑,結痂和潰瘍,亦無瘙癢及其他主觀癥狀
  • txt中是對該疾病癥狀的文本描述.

  • 文件位置: /data/doctor_offline/unstructured/norecognite/黑色丘疹性皮膚病.txt

  • 進行命名實體識別:
    • 進行命名實體識別的工作我們這里使用AI模型實現, 包括模型訓練和使用的整個過程, 因此內容以獨立一章的形成呈現給大家, 具體內容在[第六章: 命名實體識別任務]

  • 進行命名實體審核:
    • 同4.2 結構化數據流水線中的命名實體審核.

  • 命名實體寫入數據庫:
    • 同4.2 結構化數據流水線中的命名實體寫入數據庫.

  • 本章總結:

    • 學習了離線部分的數據流水線以及組成部分.
      • 根據架構展開圖圖,離線部分可分為兩條數據流水線,分別用于處理結構化數據和非結構化數據. 這里稱它們為結構化數據流水線和非結構化數據流水線.

    • 結構化數據流水線的組成部分:
      • 結構化數據爬蟲: 從網頁上抓取結構化的有關醫學命名實體的內容.
      • 結構化數據的清洗: 對抓取的內容進行過濾和清洗, 以保留需要的部分.
      • 命名實體審核: 對當前命名實體進行審核, 來保證這些實體符合我們的要求.
      • 命名實體寫入數據庫: 將審核后的命名實體寫入數據庫之中, 供在線部分使用.

    • 非結構化數據流水線的組成部分:
      • 非結構化數據爬蟲: 從網頁上抓取非結構化的包含醫學命名實體的文本.
      • 非結構化數據清洗: 對非結構化數據進行過濾和清洗, 以保留需要的部分.
      • 命名實體識別: 使用模型從非結構化文本中獲取命名實體.
      • 命名實體審核: 對當前命名實體進行審核, 來保證這些實體符合我們的要求.
      • 命名實體寫入數據庫: 將審核后的命名實體寫入數據庫之中, 供在線部分使用.

    • 學習了需要進行命名實體審核的數據內容.

    • 學習了結構化/非結構化數據流水線中命名實體審核的過程.

    • 學習了結構化/非結構化數據流水線中命名實體寫入的過程.

    • 學習了需要進行命名實體識別的數據內容.

    • 非結構化數據流水線中命名實體識別的過程.

5.1 任務介紹與模型選用

  • 學習目標:
    • 了解命名實體審核任務的相關知識.
    • 了解選用的模型及其原因.

  • NE審核任務:
    • 一般在實體進入數據庫存儲前, 中間都會有一道必不可少的工序, 就是對識別出來的實體進行合法性的檢驗, 即命名實體(NE)審核任務. 它的檢驗過程不使用上下文信息, 更關注于字符本身的組合方式來進行判斷, 本質上,它是一項短文本二分類問題.

  • 選用的模型及其原因:
    • 針對短文本任務, 無須捕捉長距離的關系, 因此我們使用了傳統的RNN模型來解決, 性能和效果可以達到很好的均衡.
    • 短文本任務往往適合使用字嵌入的方式, 但是如果你的訓練集不是很大,涉及的字數有限, 那么可以直接使用預訓練模型的字向量進行表示即可. 我們這里使用了bert-chinese預訓練模型來獲得中文漢字的向量表示.

5.2 訓練數據集

  • 學習目標:
    • 了解訓練數據集的樣式及其相關解釋.
    • 掌握將數據集加載到內存中的過程.

  • 訓練數據集的樣式:
1 手內肌萎縮 0 縮萎肌內手 1 尿黑酸 0 酸黑尿 1 單眼眼前黑影 0 影黑前眼眼單 1 憂郁 0 郁憂 1 紅細胞壽命縮短 0 短縮命壽胞細紅 1 皮膚黏蛋白沉積 0 積沉白蛋黏膚皮 1 眼神異常 0 常異神眼 1 陰囊墜脹痛 0 痛脹墜囊陰 1 動脈血氧飽和度降低 0 低降度和飽氧血脈動
  • 數據集的相關解釋:
    • 這些訓練集中的正樣本往往是基于人工審核的標準命名實體.
    • 數據集中的第一列代表標簽, 1為正標簽, 代表后面的文字是命名實體. 0為負標簽, 代表后面的文字不是命名實體.
    • 數據集中的第二列中的命名實體來源于數據庫中的癥狀實體名字, 它是結構化爬蟲抓取的數據. 而非命名實體則是它的字符串反轉.
    • 正負樣本的比例是1:1.

  • 將數據集加載到內存:
import pandas as pd from collections import Counter# 讀取數據 train_data_path = "./train_data.csv" train_data= pd.read_csv(train_data_path, header=None, sep="\t")# 打印正負標簽比例 print(dict(Counter(train_data[0].values)))# 轉換數據到列表形式 train_data = train_data.values.tolist() print(train_data[:10])
  • 代碼位置: /data/doctor_offline/review_model/train.py

  • 輸出效果:
# 正負標簽比例 {1: 5740, 0: 5740}# 取出10條訓練數據查看 [[1, '枕部疼痛'], [0, '痛疼部枕'], [1, '陶瑟征陽性'], [0, '性陽征瑟陶'], [1, '戀獸型性變態'], [0, '態變性型獸戀'], [1, '進食困難'], [0, '難困食進'], [1, '會陰瘺管或竇道形成'], [0, '成形道竇或管瘺陰會']]
  • 小節總結:
    • 學習了訓練數據集的樣式及其相關解釋.
    • 學習了將數據集加載到內存中的過程.

5.3 BERT中文預訓練模型

  • 學習目標:
    • 了解BERT中文預訓練模型的有關知識和作用.
    • 掌握使用BERT中文預訓練模型對句子編碼的過程.

  • BERT中文預訓練模型:
    • BERT模型整體架構基于Transformer模型架構, BERT中文預訓練模型的解碼器和編碼器具有12層, 輸出層中的線性層具有768個節點, 即輸出張量最后一維的維度是768. 它使用的多頭注意力機制結構中, 頭的數量為12, 模型總參數量為110M. 同時, 它在中文簡體和繁體上進行訓練, 因此適合中文簡體和繁體任務.

  • BERT中文預訓練模型作用:
    • 在實際的文本任務處理中, 有些訓練語料很難獲得, 他們的總體數量和包含的詞匯總數都非常少, 不適合用于訓練帶有Embedding層的模型, 但這些數據中卻又蘊含這一些有價值的規律可以被模型挖掘, 在這種情況下,使用預訓練模型對原始文本進行編碼是非常不錯的選擇, 因為預訓練模型來自大型語料, 能夠使得當前文本具有意義, 雖然這些意義可能并不針對某個特定領域, 但是這種缺陷可以使用微調模型來進行彌補.

  • 使用BERT中文預訓練模型對句子編碼:
    bert 預訓練模型地址
import torch import torch.nn as nn# 通過torch.hub(pytorch中專注于遷移學的工具)獲得已經訓練好的bert-base-chinese模型 model = torch.hub.load('huggingface/pytorch-transformers', 'model', 'bert-base-chinese')# 獲得對應的字符映射器, 它將把中文的每個字映射成一個數字 tokenizer = torch.hub.load('huggingface/pytorch-transformers', 'tokenizer', 'bert-base-chinese')def get_bert_encode_for_single(text):"""description: 使用bert-chinese編碼中文文本:param text: 要進行編碼的文本:return: 使用bert編碼后的文本張量表示"""# 首先使用字符映射器對每個漢字進行映射# 這里需要注意, bert的tokenizer映射后會為結果前后添加開始和結束標記即101和102 # 這對于多段文本的編碼是有意義的, 但在我們這里沒有意義, 因此使用[1:-1]對頭和尾進行切片indexed_tokens = tokenizer.encode(text)[1:-1]# 之后將列表結構轉化為tensortokens_tensor = torch.tensor([indexed_tokens])print(tokens_tensor)# 使模型不自動計算梯度with torch.no_grad():# 調用模型獲得隱層輸出encoded_layers, _ = model(tokens_tensor)# 輸出的隱層是一個三維張量, 最外層一維是1, 我們使用[0]降去它.print(encoded_layers.shape)encoded_layers = encoded_layers[0]return encoded_layers
  • 代碼位置: /data/doctor_offline/review_model/bert_chinese_encode.py

  • 輸入參數:
text = "你好, 周杰倫"
  • 調用:
outputs = get_bert_encode_for_single(text) print(outputs) print(outputs.shape)
  • 輸出效果:
tensor([[ 3.2731e-01, -1.4832e-01, -9.1618e-01, ..., -4.4088e-01,-4.1074e-01, -7.5570e-01],[-1.1287e-01, -7.6269e-01, -6.4861e-01, ..., -8.0478e-01,-5.3600e-01, -3.1953e-01],[-9.3012e-02, -4.4381e-01, -1.1985e+00, ..., -3.6624e-01,-4.7467e-01, -2.6408e-01],[-1.6896e-02, -4.3753e-01, -3.6060e-01, ..., -3.2451e-01,-3.4204e-02, -1.7930e-01],[-1.3159e-01, -3.0048e-01, -2.4193e-01, ..., -4.5756e-02,-2.0958e-01, -1.0649e-01],[-4.0006e-01, -3.4410e-01, -3.8532e-05, ..., 1.9081e-01,1.7006e-01, -3.6221e-01]])torch.Size([6, 768])

注意:torch.hub.load無法下載時,利用迅雷等通過鏈接中 的地址進行下載model.bin config.json vocab.txt并更改名稱
from transformers import BertModel, BertTokenizer

import torch from transformers import BertModel, BertTokenizer# 通過torch.hub(pytorch中專注于遷移學的工具)獲得已經訓練好的bert-base-chinese模型 # model = torch.hub.load('huggingface/pytorch-transformers', 'model', 'bert-base-chinese') # 獲得對應的字符映射器, 它將把中文的每個字映射成一個數字 # tokenizer = torch.hub.load('huggingface/pytorch-transformers', 'tokenizer', 'bert-base-chinese') # model = BertModel.from_pretrained('./bert-base-chinese') tokenizer = BertTokenizer.from_pretrained('./bert-base-chinese/')def get_bert_encode_for_single(text):"""使用bert-base-chinese對中文文本進行編碼:param text: 進行編碼的中文文本:return: 編號后的張量"""# 使用字符映射器對每個漢字進行映射# bert中tokenizer映射后會加入開始和結束標記101,102 采用[1:-1]去除indexed_tokens = tokenizer.encode(text)[1 : -1]# 封裝為tensortokens_tensor = torch.tensor([indexed_tokens])print(tokens_tensor)# 預測部分-不需要求導with torch.no_grad():encoded_layers, _ = model(tokens_tensor)print('encoded_layers_shape:{}'.format(encoded_layers.shape))# 模型的輸出均為三維張量,第一維為1,只提取后兩個維度張量,需要[0]來降維encoded_layers = encoded_layers[0]return encoded_layersif __name__ == '__main__':text = '你好, 周杰倫'outputs = get_bert_encode_for_single(text)print('outputs:{}'.format(outputs))print('outputs.shape:{}'.format(outputs.shape)) tensor([[ 872, 1962, 117, 1453, 3345, 840]]) encoded_layers_shape:torch.Size([1, 6, 768]) outputs:tensor([[ 3.2731e-01, -1.4832e-01, -9.1618e-01, ..., -4.4088e-01,-4.1074e-01, -7.5570e-01],[-1.1287e-01, -7.6269e-01, -6.4861e-01, ..., -8.0478e-01,-5.3600e-01, -3.1953e-01],[-9.3014e-02, -4.4381e-01, -1.1985e+00, ..., -3.6624e-01,-4.7467e-01, -2.6408e-01],[-1.6897e-02, -4.3753e-01, -3.6060e-01, ..., -3.2451e-01,-3.4204e-02, -1.7930e-01],[-1.3159e-01, -3.0048e-01, -2.4193e-01, ..., -4.5757e-02,-2.0958e-01, -1.0649e-01],[-4.0006e-01, -3.4410e-01, -3.9786e-05, ..., 1.9081e-01,1.7006e-01, -3.6221e-01]]) outputs.shape:torch.Size([6, 768])
  • 小節總結:

    • 學習了BERT中文預訓練模型的有關知識:
      • BERT模型整體架構基于Transformer模型架構, BERT中文預訓練模型的解碼器和編碼器具有12層, 輸出層中的線性層具有768個節點, 即輸出張量最后一維的維度是768. 它使用的多頭注意力機制結構中, 頭的數量為12, 模型總參數量為110M. 同時, 它在中文簡體和繁體上進行訓練, 因此適合中文簡體和繁體任務.

    • 學習了BERT中文預訓練模型的作用:
      • 在實際的文本任務處理中, 有些訓練語料很難獲得, 他們的總體數量和包含的詞匯總數都非常少, 不適合用于訓練帶有Embedding層的模型, 但這些數據中卻又蘊含這一些有價值的規律可以被模型挖掘, 在這種情況下, 使用預訓練模型對原始文本進行編碼是非常不錯的選擇, 因為預訓練模型來自大型語料, 能夠使得當前文本具有意義, 雖然這些意義可能并不針對某個特定領域, 但是這種缺陷可以使用微調模型來進行彌補.

    • 學習了使用BERT中文預訓練模型對句子編碼的函數: get_bert_encode_for_single(text)

5.4 構建RNN模型

  • 學習目標:
    • 學習RNN模型的內部結構及計算公式.
    • 掌握RNN模型的實現過程.

  • 傳統RNN的內部結構圖:


  • 結構解釋圖:


  • 內部結構分析:
    * 我們把目光集中在中間的方塊部分, 它的輸入有兩部分, 分別是h(t-1)以及x(t), 代表上一時間步的隱層輸出, 以及此時間步的輸入, 它們進入RNN結構體后, 會"融合"到一起, 這種融合我們根據結構解釋可知, 是將二者進行拼接, 形成新的張量[x(t), h(t-1)], 之后這個新的張量將通過一個全連接層(線性層), 該層>使用tanh作為激活函數, 最終得到該時間步的輸出h(t), 它將作為下一個時間步的>輸入和x(t+1)一起進入結構體. 以此類推.

  • 內部結構過程演示:


  • 根據結構分析得出內部計算公式:


  • 激活函數tanh的作用:
    * 用于幫助調節流經網絡的值, tanh函數將值壓縮在-1和1之間.


  • 構建RNN模型的代碼分析:
class RNN(nn.Module):def __init__(self, input_size, hidden_size, output_size):"""初始化函數中有三個參數,分別是輸入張量最后一維的尺寸大小,隱層張量最后一維的尺寸大小, 輸出張量最后一維的尺寸大小"""super(RNN, self).__init__()# 傳入隱含層尺寸大小self.hidden_size = hidden_size# 構建從輸入到隱含層的線性變化, 這個線性層的輸入尺寸是input_size + hidden_size# 這是因為在循環網絡中, 每次輸入都有兩部分組成,分別是此時刻的輸入xt和上一時刻產生的輸出ht-1.# 這個線性層的輸出尺寸是hidden_sizeself.i2h = nn.Linear(input_size + hidden_size, hidden_size)# 構建從輸入到輸出層的線性變化, 這個線性層的輸入尺寸還是input_size + hidden_size# 這個線性層的輸出尺寸是output_size.self.i2o = nn.Linear(input_size + hidden_size, output_size)# 最后需要對輸出做softmax處理, 獲得結果.self.softmax = nn.LogSoftmax(dim=-1)def forward(self, input, hidden):"""在forward函數中, 參數分別是規定尺寸的輸入張量, 以及規定尺寸的初始化隱層張量"""# 首先使用torch.cat將input與hidden進行張量拼接combined = torch.cat((input, hidden), 1)# 通過輸入層到隱層變換獲得hidden張量hidden = self.i2h(combined)# 通過輸入到輸出層變換獲得output張量output = self.i2o(combined)# 對輸出進行softmax處理output = self.softmax(output)# 返回輸出張量和最后的隱層結果return output, hiddendef initHidden(self):"""隱層初始化函數"""# 將隱層初始化成為一個1xhidden_size的全0張量return torch.zeros(1, self.hidden_size)
  • torch.cat演示:
>>> x = torch.randn(2, 3) >>> x tensor([[ 0.6580, -1.0969, -0.4614],[-0.1034, -0.5790, 0.1497]]) >>> torch.cat((x, x, x), 0) tensor([[ 0.6580, -1.0969, -0.4614],[-0.1034, -0.5790, 0.1497],[ 0.6580, -1.0969, -0.4614],[-0.1034, -0.5790, 0.1497],[ 0.6580, -1.0969, -0.4614],[-0.1034, -0.5790, 0.1497]]) >>> torch.cat((x, x, x), 1) ensor([[ 0.6580, -1.0969, -0.4614, 0.6580, -1.0969, -0.4614, 0.6580,-1.0969, -0.4614],[-0.1034, -0.5790, 0.1497, -0.1034, -0.5790, 0.1497, -0.1034,-0.5790, 0.1497]])
  • 代碼位置: /data/doctor_offline/review_model/RNN_MODEL.py

  • 實例化參數:
input_size = 768 hidden_size = 128 n_categories = 2 # ner審核通過或者不通過
  • 輸入參數:
input = torch.rand(1, input_size) hidden = torch.rand(1, hidden_size)
  • 調用:
from RNN_MODEL import RNN rnn = RNN(input_size, hidden_size, n_categories) outputs, hidden = rnn(input, hidden) print("outputs:", outputs) print("hidden:", hidden)
  • 輸出效果:
outputs: tensor([[-0.7858, -0.6084]], grad_fn=<LogSoftmaxBackward>) # [1, 2]hidden: tensor([[-4.8444e-01, -5.9609e-02, 1.7870e-01, -1.6553e-01, ... , 5.6711e-01]], grad_fn=<AddmmBackward>)) # [1, 128]
  • 小節總結:
    • 學習了RNN模型的內部結構及計算公式.
    • 學習并實現了RNN模型的類: class RNN(nn.Module).

5.5 進行模型訓練

  • 學習目標:
    • 了解進行模型訓練的步驟.
    • 掌握模型訓練中每個步驟的實現過程.

  • 進行模型訓練的步驟:
    • 第一步: 構建隨機選取數據函數.
    • 第二步: 構建模型訓練函數.
    • 第三步: 構建模型驗證函數.
    • 第四步: 調用訓練和驗證函數.
    • 第五步: 繪制訓練和驗證的損失和準確率對照曲線.
    • 第六步: 模型保存.

  • 第一步: 構建隨機選取數據函數
import pandas as pd import random from bert_chinese_encode import get_bert_encode_for_single import torch# 讀取數據 train_data_path = './train_data.csv' train_data = pd.read_csv(train_data_path, header = None, sep = '\t', encoding = 'utf-8') trian_data = train_data.values.tolist()def randomTrainingExample(train_data):"""隨機選取數據函數, train_data是訓練集的列表形式數據"""# 從train_data隨機選擇一條數據category, line = random.choice(train_data)# 將里面的文字使用bert進行編碼, 獲取編碼后的tensor類型數據line_tensor = get_bert_encode_for_single(line)# 將分類標簽封裝成tensorcategory_tensor = torch.tensor([int(category)])# 返回四個結果return category, line, category_tensor, line_tensor
  • 代碼位置: /data/doctor_offline/review_model/train.py

  • 輸入參數:
# 將數據集加載到內存獲得的train_data
  • 調用:
# 選擇10條數據進行查看 for i in range(10):category, line, category_tensor, line_tensor = randomTrainingExample(train_data)print('category =', category, '/ line =', line)
  • 輸出效果:
category = 1 / line = 觸覺失調 category = 0 / line = 顫震性理生 category = 0 / line = 征壓血高娠妊 category = 1 / line = 食欲減退 category = 0 / line = 血淤道腸胃 category = 0 / line = 形畸節關 category = 0 / line = 咳嗆水飲 category = 0 / line = 癥痣巨 category = 1 / line = 晝盲 category = 1 / line = 眼神異常
  • 第二步: 構建模型訓練函數
# 選取損失函數為NLLLoss() criterion = nn.NLLLoss() # 學習率為0.005 learning_rate = 0.005def train(category_tensor, line_tensor):"""模型訓練函數, category_tensor代表類別張量, line_tensor代表編碼后的文本張量"""# 初始化隱層 hidden = rnn.initHidden()# 模型梯度歸0rnn.zero_grad()# 遍歷line_tensor中的每一個字的張量表示for i in range(line_tensor.size()[0]):# 然后將其輸入到rnn模型中, 因為模型要求是輸入必須是二維張量, 因此需要拓展一個維度, 循環調用rnn直到最后一個字output, hidden = rnn(line_tensor[i].unsqueeze(0), hidden)# 根據損失函數計算損失, 輸入分別是rnn的輸出結果和真正的類別標簽loss = criterion(output, category_tensor)# 將誤差進行反向傳播loss.backward()# 更新模型中所有的參數for p in rnn.parameters():# 將參數的張量表示與參數的梯度乘以學習率的結果相加以此來更新參數p.data.add_(-learning_rate, p.grad.data)# 返回結果和損失的值return output, loss.item()
  • 代碼位置: /data/doctor_offline/review_model/train.py

  • 第三步: 模型驗證函數
def valid(category_tensor, line_tensor):"""模型驗證函數, category_tensor代表類別張量, line_tensor代表編碼后的文本張量"""# 初始化隱層hidden = rnn.initHidden()# 驗證模型不自動求解梯度with torch.no_grad():# 遍歷line_tensor中的每一個字的張量表示 for i in range(line_tensor.size()[0]):# 然后將其輸入到rnn模型中, 因為模型要求是輸入必須是二維張量, 因此需要拓展一個維度, 循環調用rnn直到最后一個字output, hidden = rnn(line_tensor[i].unsqueeze(0), hidden) # 獲得損失loss = criterion(output, category_tensor)# 返回結果和損失的值return output, loss.item()
  • 代碼位置: /data/doctor_offline/review_model/train.py

  • 第四步: 調用訓練和驗證函數
  • 構建時間計算函數:
import time import mathdef timeSince(since):"獲得每次打印的訓練耗時, since是訓練開始時間"# 獲得當前時間now = time.time()# 獲得時間差,就是訓練耗時s = now - since# 將秒轉化為分鐘, 并取整m = math.floor(s / 60)# 計算剩下不夠湊成1分鐘的秒數s -= m * 60# 返回指定格式的耗時return '%dm %ds' % (m, s)
  • 代碼位置: /data/doctor_offline/review_model/train.py

  • 輸入參數:
# 假定模型訓練開始時間是10min之前 since = time.time() - 10*60
  • 調用:
period = timeSince(since) print(period)
  • 輸出效果:
10m 0s
  • 調用訓練和驗證函數并打印日志
# 設置迭代次數為50000步 n_iters = 50000# 打印間隔為1000步 plot_every = 1000# 初始化打印間隔中訓練和驗證的損失和準確率 train_current_loss = 0 train_current_acc = 0 valid_current_loss = 0 valid_current_acc = 0# 初始化盛裝每次打印間隔的平均損失和準確率 all_train_losses = [] all_train_acc = [] all_valid_losses = [] all_valid_acc = []# 獲取開始時間戳 start = time.time()# 循環遍歷n_iters次 for iter in range(1, n_iters + 1):# 調用兩次隨機函數分別生成一條訓練和驗證數據category, line, category_tensor, line_tensor = randomTrainingExample(train_data)category_, line_, category_tensor_, line_tensor_ = randomTrainingExample(train_data)# 分別調用訓練和驗證函數, 獲得輸出和損失train_output, train_loss = train(category_tensor, line_tensor)valid_output, valid_loss = valid(category_tensor_, line_tensor_)# 進行訓練損失, 驗證損失,訓練準確率和驗證準確率分別累加train_current_loss += train_losstrain_current_acc += (train_output.argmax(1) == category_tensor).sum().item()valid_current_loss += valid_lossvalid_current_acc += (valid_output.argmax(1) == category_tensor_).sum().item()# 當迭代次數是指定打印間隔的整數倍時if iter % plot_every == 0:# 用剛剛累加的損失和準確率除以間隔步數得到平均值train_average_loss = train_current_loss / plot_everytrain_average_acc = train_current_acc/ plot_everyvalid_average_loss = valid_current_loss / plot_everyvalid_average_acc = valid_current_acc/ plot_every# 打印迭代步, 耗時, 訓練損失和準確率, 驗證損失和準確率print("Iter:", iter, "|", "TimeSince:", timeSince(start))print("Train Loss:", train_average_loss, "|", "Train Acc:", train_average_acc)print("Valid Loss:", valid_average_loss, "|", "Valid Acc:", valid_average_acc)# 將結果存入對應的列表中,方便后續制圖all_train_losses.append(train_average_loss)all_train_acc.append(train_average_acc)all_valid_losses.append(valid_average_loss)all_valid_acc.append(valid_average_acc)# 將該間隔的訓練和驗證損失及其準確率歸0train_current_loss = 0train_current_acc = 0valid_current_loss = 0valid_current_acc = 0
  • 代碼位置: /data/doctor_offline/review_model/train.py

  • 輸出效果:
Iter: 1000 | TimeSince: 0m 56s Train Loss: 0.6127021567507527 | Train Acc: 0.747 Valid Loss: 0.6702297774022868 | Valid Acc: 0.7 Iter: 2000 | TimeSince: 1m 52s Train Loss: 0.5190641692602076 | Train Acc: 0.789 Valid Loss: 0.5217500487511397 | Valid Acc: 0.784 Iter: 3000 | TimeSince: 2m 48s Train Loss: 0.5398398997281778 | Train Acc: 0.8 Valid Loss: 0.5844468013737023 | Valid Acc: 0.777 Iter: 4000 | TimeSince: 3m 43s Train Loss: 0.4700755337187358 | Train Acc: 0.822 Valid Loss: 0.5140456306522071 | Valid Acc: 0.802 Iter: 5000 | TimeSince: 4m 38s Train Loss: 0.5260879981063878 | Train Acc: 0.804 Valid Loss: 0.5924804099237979 | Valid Acc: 0.796 Iter: 6000 | TimeSince: 5m 33s Train Loss: 0.4702717279043861 | Train Acc: 0.825 Valid Loss: 0.6675750375208704 | Valid Acc: 0.78 Iter: 7000 | TimeSince: 6m 27s Train Loss: 0.4734503294042624 | Train Acc: 0.833 Valid Loss: 0.6329268293256277 | Valid Acc: 0.784 Iter: 8000 | TimeSince: 7m 23s Train Loss: 0.4258338176879665 | Train Acc: 0.847 Valid Loss: 0.5356959595441066 | Valid Acc: 0.82 Iter: 9000 | TimeSince: 8m 18s Train Loss: 0.45773495503464817 | Train Acc: 0.843 Valid Loss: 0.5413714128659645 | Valid Acc: 0.798 Iter: 10000 | TimeSince: 9m 14s Train Loss: 0.4856756244019302 | Train Acc: 0.835 Valid Loss: 0.5450502399195044 | Valid Acc: 0.813
  • 第五步: 繪制訓練和驗證的損失和準確率對照曲線

plt.title(“your title name”, y=-0.1)設置y位置可以將title設置在圖像下方

import matplotlib.pyplot as pltplt.figure(0) plt.plot(all_train_losses, label="Train Loss") plt.plot(all_valid_losses, color="red", label="Valid Loss") plt.legend(loc='upper left')plt.savefig("./loss.png")plt.figure(1) plt.plot(all_train_acc, label="Train Acc") plt.plot(all_valid_acc, color="red", label="Valid Acc") plt.legend(loc='upper left')plt.savefig("./acc.png")
  • 代碼位置: /data/doctor_offline/review_model/train.py

  • 訓練和驗證損失對照曲線:


  • 訓練和驗證準確率對照曲線:


  • 分析:
    * 損失對照曲線一直下降, 說明模型能夠從數據中獲取規律,正在收斂, 準確率對照曲線中驗證準確率一直上升,最終維持在0.98左右.

  • 第六步: 模型保存
# 保存路徑 MODEL_PATH = './BERT_RNN.pth' # 保存模型參數 torch.save(rnn.state_dict(), MODEL_PATH)
  • 代碼位置: /data/doctor_offline/review_model/train.py

  • 輸出效果:
    * 在/data/doctor_offline/review_model/路徑下生成BERT_RNN.pth文件.

  • 小節總結:
    • 學習了進行模型訓練的步驟:
      • 第一步: 構建隨機選取數據函數.
      • 第二步: 構建模型訓練函數.
      • 第三步: 構建模型驗證函數.
      • 第四步: 調用訓練和驗證函數.
      • 第五步: 繪制訓練和驗證的損失和準確率對照曲線.
      • 第六步: 模型保存.

5.6 模型使用

  • 學習目標:
    • 掌握模型預測的實現過程.
    • 掌握模型批量預測的實現過程.

  • 模型預測的實現過程:
import os import torch import torch.nn as nn# 導入RNN模型結構 from RNN_MODEL import RNN # 導入bert預訓練模型編碼函數 from bert_chinese_encode import get_bert_encode_for_single# 預加載的模型參數路徑 MODEL_PATH = './BERT_RNN.pth'# 隱層節點數, 輸入層尺寸, 類別數都和訓練時相同即可 n_hidden = 128 input_size = 768 n_categories = 2# 實例化RNN模型, 并加載保存模型參數 rnn = RNN(input_size, n_hidden, n_categories) rnn.load_state_dict(torch.load(MODEL_PATH))def _test(line_tensor):"""模型測試函數, 它將用在模型預測函數中, 用于調用RNN模型并返回結果.它的參數line_tensor代表輸入文本的張量表示"""# 初始化隱層張量hidden = rnn.initHidden()# 與訓練時相同, 遍歷輸入文本的每一個字符for i in range(line_tensor.size()[0]):# 將其逐次輸送給rnn模型output, hidden = rnn(line_tensor[i].unsqueeze(0), hidden)# 獲得rnn模型最終的輸出return outputdef predict(input_line):"""模型預測函數, 輸入參數input_line代表需要預測的文本"""# 不自動求解梯度with torch.no_grad():# 將input_line使用bert模型進行編碼output = _test(get_bert_encode_for_single(input_line))# 從output中取出最大值對應的索引, 比較的維度是1_, topi = output.topk(1, 1)# 返回結果數值return topi.item()

tensor.topk演示:

>>> tr = torch.randn(1, 2) >>> tr tensor([[-0.1808, -1.4170]]) >>> tr.topk(1, 1) torch.return_types.topk(values=tensor([[-0.1808]]), indices=tensor([[0]]))
  • 代碼位置: /data/doctor_offline/review_model/predict.py

  • 輸入參數:
input_line = "點瘀樣尖針性發多"
  • 調用:
result = predict(input_line) print("result:", result)
  • 輸出效果:
result: 0
  • 模型批量預測的實現過程:
def batch_predict(input_path, output_path):"""批量預測函數, 以原始文本(待識別的命名實體組成的文件)輸入路徑和預測過濾后(去除掉非命名實體的文件)的輸出路徑為參數"""# 待識別的命名實體組成的文件是以疾病名稱為csv文件名, # 文件中的每一行是該疾病對應的癥狀命名實體# 讀取路徑下的每一個csv文件名, 裝入csv列表之中csv_list = os.listdir(input_path)# 遍歷每一個csv文件for csv in csv_list:# 以讀的方式打開每一個csv文件with open(os.path.join(input_path, csv), "r") as fr:# 再以寫的方式打開輸出路徑的同名csv文件with open(os.path.join(output_path, csv), "w") as fw:# 讀取csv文件的每一行input_line = fr.readline()# 使用模型進行預測res = predict(input_line)# 如果結果為1if res:# 說明審核成功, 寫入到輸出csv中fw.write(input_line + "\n")else:pass
  • 代碼位置: /data/doctor_offline/review_model/predict.py

  • 輸入參數:
input_path = "/data/doctor_offline/structured/noreview/" output_path = "/data/doctor_offline/structured/reviewed/"
  • 調用:
batch_predict(input_path, output_path)
  • 輸出效果:
    • 在輸出路徑下生成與輸入路徑等數量的同名csv文件, 內部的癥狀實體是被審核的可用實體.

  • 小節總結:
    • 學習并實現了模型預測的函數: predict(input_line).
    • 學習并實現了模型批量預測的函數: batch_predict(input_path, output_path)

總結

以上是生活随笔為你收集整理的NLP在线医生(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

福利一区二区三区视频在线观看 | 99er热精品视频 | 欧美成人午夜精品久久久 | 国产亚洲欧美日韩亚洲中文色 | 麻豆国产丝袜白领秘书在线观看 | 中文毛片无遮挡高清免费 | 丁香花在线影院观看在线播放 | 男女猛烈xx00免费视频试看 | 伊人久久大香线蕉av一区二区 | 成人免费视频在线观看 | 国内精品九九久久久精品 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产色精品久久人妻 | 欧美第一黄网免费网站 | 日日碰狠狠躁久久躁蜜桃 | 欧美丰满老熟妇xxxxx性 | 亚洲欧美国产精品专区久久 | 亚洲色在线无码国产精品不卡 | 玩弄中年熟妇正在播放 | 成熟女人特级毛片www免费 | 欧美精品国产综合久久 | 亚洲а∨天堂久久精品2021 | 男女超爽视频免费播放 | 日韩人妻无码中文字幕视频 | 国产精品资源一区二区 | 少妇性l交大片欧洲热妇乱xxx | 欧美老妇交乱视频在线观看 | 亚洲国产精品毛片av不卡在线 | 国产人妻精品午夜福利免费 | 国产亚洲精品久久久闺蜜 | 欧美日韩在线亚洲综合国产人 | 永久免费观看国产裸体美女 | 少妇愉情理伦片bd | 2019nv天堂香蕉在线观看 | 久久午夜无码鲁丝片秋霞 | 天堂一区人妻无码 | 大地资源中文第3页 | 天天躁夜夜躁狠狠是什么心态 | 国产极品美女高潮无套在线观看 | 国产口爆吞精在线视频 | 思思久久99热只有频精品66 | 欧美成人家庭影院 | 在线观看免费人成视频 | 狠狠噜狠狠狠狠丁香五月 | 黑人粗大猛烈进出高潮视频 | 久久国产精品萌白酱免费 | 狂野欧美性猛xxxx乱大交 | 性色欲情网站iwww九文堂 | 亚洲人成网站免费播放 | 无码人妻黑人中文字幕 | 无码人妻久久一区二区三区不卡 | 中文字幕中文有码在线 | 国精产品一品二品国精品69xx | 黑人大群体交免费视频 | 奇米影视7777久久精品人人爽 | 激情综合激情五月俺也去 | 国产人妖乱国产精品人妖 | 欧美性黑人极品hd | 狂野欧美性猛xxxx乱大交 | 老司机亚洲精品影院无码 | 欧美日韩一区二区综合 | 内射老妇bbwx0c0ck | 99精品无人区乱码1区2区3区 | 久久99精品国产.久久久久 | 97久久超碰中文字幕 | 99视频精品全部免费免费观看 | 噜噜噜亚洲色成人网站 | 国产精品视频免费播放 | 美女黄网站人色视频免费国产 | 性开放的女人aaa片 | 久久99精品国产麻豆 | 性色欲网站人妻丰满中文久久不卡 | 国产97色在线 | 免 | 国产色xx群视频射精 | 日韩亚洲欧美中文高清在线 | 少妇性荡欲午夜性开放视频剧场 | 欧美精品在线观看 | 久久视频在线观看精品 | 丰满少妇弄高潮了www | 天天躁日日躁狠狠躁免费麻豆 | 国产成人无码av一区二区 | 欧美性生交xxxxx久久久 | 人人妻人人澡人人爽欧美一区 | 久久aⅴ免费观看 | 亚洲国产精品毛片av不卡在线 | 国产乱码精品一品二品 | 国产舌乚八伦偷品w中 | 久热国产vs视频在线观看 | 亚洲熟悉妇女xxx妇女av | 亚洲爆乳精品无码一区二区三区 | 久久久精品欧美一区二区免费 | 亚洲成a人一区二区三区 | 国产精品无码永久免费888 | 国产性生交xxxxx无码 | 国产激情精品一区二区三区 | 精品午夜福利在线观看 | 亚洲娇小与黑人巨大交 | 国产精品怡红院永久免费 | 午夜免费福利小电影 | 精品国产aⅴ无码一区二区 | 精品人妻人人做人人爽 | 久久精品无码一区二区三区 | 中文字幕无码av波多野吉衣 | 国产精品无套呻吟在线 | 波多野42部无码喷潮在线 | 亚洲日韩av一区二区三区四区 | 日日天日日夜日日摸 | 精品久久久无码中文字幕 | 国产一区二区三区影院 | 日日天干夜夜狠狠爱 | 鲁鲁鲁爽爽爽在线视频观看 | 国产一区二区三区精品视频 | 亚洲成av人片在线观看无码不卡 | 欧美freesex黑人又粗又大 | 色一情一乱一伦 | 中文字幕 亚洲精品 第1页 | 人妻与老人中文字幕 | 国内精品人妻无码久久久影院蜜桃 | 久久久久成人精品免费播放动漫 | 性色欲网站人妻丰满中文久久不卡 | 亚洲aⅴ无码成人网站国产app | 国精品人妻无码一区二区三区蜜柚 | 正在播放老肥熟妇露脸 | 老司机亚洲精品影院无码 | 日韩精品无码一区二区中文字幕 | 亚洲精品一区二区三区婷婷月 | 亚洲国产精品久久久久久 | 中文字幕无码人妻少妇免费 | 伊人久久婷婷五月综合97色 | 精品无码国产一区二区三区av | 国产精品毛片一区二区 | 日韩欧美群交p片內射中文 | 黑人玩弄人妻中文在线 | 免费无码av一区二区 | 强辱丰满人妻hd中文字幕 | 国产无遮挡又黄又爽免费视频 | 久久精品中文字幕一区 | 男女作爱免费网站 | 蜜桃臀无码内射一区二区三区 | 日韩在线不卡免费视频一区 | 亚洲一区二区三区无码久久 | 日本一卡二卡不卡视频查询 | 久久www免费人成人片 | 人人澡人人透人人爽 | 国产精品无码mv在线观看 | 兔费看少妇性l交大片免费 | 久久久无码中文字幕久... | 啦啦啦www在线观看免费视频 | 日韩少妇白浆无码系列 | 一个人看的www免费视频在线观看 | www成人国产高清内射 | 中文字幕+乱码+中文字幕一区 | 欧洲美熟女乱又伦 | 国产绳艺sm调教室论坛 | 亚洲欧洲中文日韩av乱码 | 波多野结衣av一区二区全免费观看 | 欧美zoozzooz性欧美 | 欧美阿v高清资源不卡在线播放 | 在线欧美精品一区二区三区 | 狠狠色欧美亚洲狠狠色www | 欧美精品一区二区精品久久 | 久久视频在线观看精品 | 国产sm调教视频在线观看 | 国产精品高潮呻吟av久久 | 亚洲欧美中文字幕5发布 | 国产无遮挡又黄又爽免费视频 | 在线а√天堂中文官网 | 亚洲a无码综合a国产av中文 | 国产精品内射视频免费 | 成人三级无码视频在线观看 | 国产精品高潮呻吟av久久4虎 | 丰满人妻翻云覆雨呻吟视频 | 免费无码一区二区三区蜜桃大 | 久热国产vs视频在线观看 | 久久国内精品自在自线 | 日韩精品a片一区二区三区妖精 | 无码乱肉视频免费大全合集 | 亚洲成色www久久网站 | 无码任你躁久久久久久久 | 大肉大捧一进一出视频出来呀 | 亚洲欧美综合区丁香五月小说 | 亚洲第一无码av无码专区 | 人妻少妇精品无码专区动漫 | 免费人成在线观看网站 | 天天拍夜夜添久久精品 | 美女黄网站人色视频免费国产 | 国产熟女一区二区三区四区五区 | 无码播放一区二区三区 | 亚洲aⅴ无码成人网站国产app | 国产免费久久精品国产传媒 | 亚洲狠狠色丁香婷婷综合 | 国产麻豆精品一区二区三区v视界 | 色欲人妻aaaaaaa无码 | 人人妻人人澡人人爽欧美一区九九 | 国产综合久久久久鬼色 | 三级4级全黄60分钟 | 捆绑白丝粉色jk震动捧喷白浆 | 久久综合网欧美色妞网 | 亚洲va中文字幕无码久久不卡 | 无遮挡啪啪摇乳动态图 | 色欲综合久久中文字幕网 | 国产成人无码av片在线观看不卡 | 丰满人妻一区二区三区免费视频 | 精品国产一区av天美传媒 | 日韩精品成人一区二区三区 | 亚洲国产精品久久久久久 | 亚洲熟妇色xxxxx欧美老妇y | 国产精品久久久 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 日韩精品无码免费一区二区三区 | 桃花色综合影院 | 天堂久久天堂av色综合 | 精品少妇爆乳无码av无码专区 | 2019nv天堂香蕉在线观看 | 欧美刺激性大交 | 性色av无码免费一区二区三区 | 亚洲爆乳大丰满无码专区 | 99精品无人区乱码1区2区3区 | 精品国产一区av天美传媒 | 亚洲综合伊人久久大杳蕉 | 一本色道久久综合亚洲精品不卡 | 成人综合网亚洲伊人 | 欧美 丝袜 自拍 制服 另类 | 欧美变态另类xxxx | 中文字幕久久久久人妻 | 精品亚洲韩国一区二区三区 | 久久综合九色综合欧美狠狠 | 老司机亚洲精品影院 | 亚洲精品一区二区三区在线观看 | 欧美freesex黑人又粗又大 | 黑人玩弄人妻中文在线 | 国内精品人妻无码久久久影院 | 久久久久99精品成人片 | 伊人久久大香线蕉亚洲 | 女人被男人躁得好爽免费视频 | 水蜜桃亚洲一二三四在线 | 亚洲一区二区三区在线观看网站 | 六月丁香婷婷色狠狠久久 | 少妇厨房愉情理9仑片视频 | 无码帝国www无码专区色综合 | 亚洲欧美精品伊人久久 | 亚洲午夜福利在线观看 | 成人无码精品1区2区3区免费看 | 国产午夜福利100集发布 | 日本精品人妻无码免费大全 | 在线а√天堂中文官网 | 乱中年女人伦av三区 | 国内精品九九久久久精品 | 熟女俱乐部五十路六十路av | 伊人久久婷婷五月综合97色 | 东京热无码av男人的天堂 | 日韩欧美成人免费观看 | 亚洲成色www久久网站 | 日本免费一区二区三区最新 | 男人的天堂av网站 | 日韩精品无码一本二本三本色 | 国内精品人妻无码久久久影院蜜桃 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产人妻人伦精品 | a在线亚洲男人的天堂 | 亚洲精品成人福利网站 | 亚洲午夜久久久影院 | 夜夜躁日日躁狠狠久久av | 精品欧洲av无码一区二区三区 | 亚洲精品成人av在线 | 亚洲色欲色欲欲www在线 | 久青草影院在线观看国产 | 狂野欧美性猛交免费视频 | 成人影院yy111111在线观看 | 真人与拘做受免费视频一 | 久久精品99久久香蕉国产色戒 | 全球成人中文在线 | 人妻少妇被猛烈进入中文字幕 | 色一情一乱一伦一区二区三欧美 | 亚洲一区二区三区国产精华液 | 久久国内精品自在自线 | 国产亚洲日韩欧美另类第八页 | 欧美性猛交xxxx富婆 | 激情内射日本一区二区三区 | 曰韩少妇内射免费播放 | 欧美人与善在线com | 亚洲国产高清在线观看视频 | 无码人妻丰满熟妇区毛片18 | 久久久久人妻一区精品色欧美 | 久久精品国产精品国产精品污 | 在线亚洲高清揄拍自拍一品区 | 色五月丁香五月综合五月 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲经典千人经典日产 | 九九综合va免费看 | 国产精品美女久久久网av | 水蜜桃色314在线观看 | 久9re热视频这里只有精品 | 无码精品国产va在线观看dvd | 国产成人无码av一区二区 | 在线观看国产一区二区三区 | 中文无码伦av中文字幕 | 色欲久久久天天天综合网精品 | 波多野结衣aⅴ在线 | 天海翼激烈高潮到腰振不止 | 在线成人www免费观看视频 | 九九热爱视频精品 | 国产女主播喷水视频在线观看 | 免费国产黄网站在线观看 | 国产精品对白交换视频 | 伊人久久大香线蕉av一区二区 | 国产成人综合在线女婷五月99播放 | 老熟妇乱子伦牲交视频 | 极品嫩模高潮叫床 | 1000部夫妻午夜免费 | 成年美女黄网站色大免费视频 | a片免费视频在线观看 | 亚洲中文字幕成人无码 | 天堂а√在线地址中文在线 | 人妻体内射精一区二区三四 | 国产亚洲视频中文字幕97精品 | 亚洲欧洲日本综合aⅴ在线 | 女人被爽到呻吟gif动态图视看 | 爽爽影院免费观看 | 亚洲人成影院在线无码按摩店 | 免费国产黄网站在线观看 | 欧美三级a做爰在线观看 | 亚欧洲精品在线视频免费观看 | 欧美freesex黑人又粗又大 | 亚洲综合精品香蕉久久网 | 国产亚洲视频中文字幕97精品 | 久久国产36精品色熟妇 | 人妻少妇精品无码专区动漫 | v一区无码内射国产 | 久久久久久久久蜜桃 | 中文字幕av无码一区二区三区电影 | 毛片内射-百度 | 亚洲熟妇自偷自拍另类 | 麻豆精品国产精华精华液好用吗 | 午夜理论片yy44880影院 | 一本久久伊人热热精品中文字幕 | 狂野欧美性猛交免费视频 | 成在人线av无码免费 | 欧美自拍另类欧美综合图片区 | 51国偷自产一区二区三区 | 久久久中文字幕日本无吗 | 久久熟妇人妻午夜寂寞影院 | 久久久精品欧美一区二区免费 | 97资源共享在线视频 | 久久精品国产精品国产精品污 | 18禁黄网站男男禁片免费观看 | 欧美黑人乱大交 | а天堂中文在线官网 | 亚洲精品国偷拍自产在线观看蜜桃 | 未满小14洗澡无码视频网站 | 欧美兽交xxxx×视频 | 国产无遮挡吃胸膜奶免费看 | 清纯唯美经典一区二区 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 四虎永久在线精品免费网址 | 婷婷综合久久中文字幕蜜桃三电影 | 欧美猛少妇色xxxxx | 性色欲网站人妻丰满中文久久不卡 | 人人爽人人爽人人片av亚洲 | 日韩精品一区二区av在线 | 色欲久久久天天天综合网精品 | 18禁黄网站男男禁片免费观看 | 成人毛片一区二区 | 久久精品人妻少妇一区二区三区 | 成 人 网 站国产免费观看 | 亚洲精品久久久久avwww潮水 | 国产无套粉嫩白浆在线 | 99国产欧美久久久精品 | 5858s亚洲色大成网站www | 内射爽无广熟女亚洲 | yw尤物av无码国产在线观看 | 麻豆国产97在线 | 欧洲 | 亚洲综合伊人久久大杳蕉 | 国产成人无码一二三区视频 | 激情亚洲一区国产精品 | 日本乱人伦片中文三区 | 天堂а√在线中文在线 | 欧美野外疯狂做受xxxx高潮 | 无码人妻出轨黑人中文字幕 | 男女性色大片免费网站 | 久久国产精品精品国产色婷婷 | 国产电影无码午夜在线播放 | 玩弄少妇高潮ⅹxxxyw | 国产肉丝袜在线观看 | 成人aaa片一区国产精品 | 亚洲码国产精品高潮在线 | 久9re热视频这里只有精品 | 国产精品久免费的黄网站 | 色五月丁香五月综合五月 | 色狠狠av一区二区三区 | 亚洲 激情 小说 另类 欧美 | 性色欲网站人妻丰满中文久久不卡 | 性色欲情网站iwww九文堂 | 久久久av男人的天堂 | 日韩av激情在线观看 | 国产做国产爱免费视频 | 色婷婷欧美在线播放内射 | 日本一卡二卡不卡视频查询 | 亚洲自偷自偷在线制服 | 国产亚洲视频中文字幕97精品 | 日产精品99久久久久久 | 嫩b人妻精品一区二区三区 | 亚洲欧美国产精品久久 | 一个人看的视频www在线 | 国产成人无码av片在线观看不卡 | 美女毛片一区二区三区四区 | 红桃av一区二区三区在线无码av | 曰本女人与公拘交酡免费视频 | 国产精品第一区揄拍无码 | 亚洲精品一区二区三区四区五区 | 亚洲成色在线综合网站 | 国产疯狂伦交大片 | 日韩精品一区二区av在线 | 日本va欧美va欧美va精品 | 国产精品.xx视频.xxtv | 亚洲欧美精品aaaaaa片 | 欧美日韩在线亚洲综合国产人 | 色欲人妻aaaaaaa无码 | 国产亚洲日韩欧美另类第八页 | 一本精品99久久精品77 | 在线亚洲高清揄拍自拍一品区 | 人人妻人人澡人人爽欧美一区 | 亚无码乱人伦一区二区 | 欧美性猛交内射兽交老熟妇 | 中文字幕色婷婷在线视频 | 国内精品久久毛片一区二区 | 无套内谢的新婚少妇国语播放 | 国内揄拍国内精品少妇国语 | 骚片av蜜桃精品一区 | 久久综合久久自在自线精品自 | 日本丰满熟妇videos | 99久久精品午夜一区二区 | 精品熟女少妇av免费观看 | 久久国语露脸国产精品电影 | 一本大道伊人av久久综合 | 最新国产乱人伦偷精品免费网站 | 精品无码成人片一区二区98 | 大乳丰满人妻中文字幕日本 | 极品尤物被啪到呻吟喷水 | 国产精品第一区揄拍无码 | 黑人巨大精品欧美一区二区 | 无遮挡国产高潮视频免费观看 | 国产精品久久久午夜夜伦鲁鲁 | 成人无码精品1区2区3区免费看 | 国产色视频一区二区三区 | 永久免费精品精品永久-夜色 | 狠狠综合久久久久综合网 | 国产一区二区三区精品视频 | 欧美成人免费全部网站 | 最近免费中文字幕中文高清百度 | 大肉大捧一进一出视频出来呀 | 人人妻人人澡人人爽人人精品 | 午夜福利不卡在线视频 | 国产亚洲精品久久久久久久久动漫 | 日本护士xxxxhd少妇 | 成人免费视频在线观看 | 亚洲va中文字幕无码久久不卡 | 亚洲 欧美 激情 小说 另类 | 在线视频网站www色 | 女人高潮内射99精品 | 伊人久久大香线蕉午夜 | 午夜精品久久久久久久久 | 少妇的肉体aa片免费 | 中文字幕无码视频专区 | 精品国产av色一区二区深夜久久 | 男女作爱免费网站 | 牲欲强的熟妇农村老妇女 | 娇妻被黑人粗大高潮白浆 | 亚洲国产精品一区二区第一页 | 精品乱子伦一区二区三区 | 国精品人妻无码一区二区三区蜜柚 | 波多野结衣aⅴ在线 | 最近免费中文字幕中文高清百度 | 久久精品人妻少妇一区二区三区 | 牲欲强的熟妇农村老妇女视频 | 国产精品久久久 | 欧美人与牲动交xxxx | 国产97色在线 | 免 | 爽爽影院免费观看 | 97夜夜澡人人爽人人喊中国片 | 亚洲爆乳精品无码一区二区三区 | 久久亚洲中文字幕精品一区 | 一本精品99久久精品77 | 亚洲国产综合无码一区 | 女人和拘做爰正片视频 | 精品国产乱码久久久久乱码 | 亚洲中文字幕va福利 | 欧美 日韩 人妻 高清 中文 | 国产激情艳情在线看视频 | 未满成年国产在线观看 | 老熟妇仑乱视频一区二区 | 亚洲色无码一区二区三区 | 日日摸天天摸爽爽狠狠97 | 国语精品一区二区三区 | 亚洲中文字幕av在天堂 | 久久精品99久久香蕉国产色戒 | 双乳奶水饱满少妇呻吟 | 天堂а√在线中文在线 | 国产乱子伦视频在线播放 | 亚洲乱亚洲乱妇50p | 亚洲综合久久一区二区 | 2019nv天堂香蕉在线观看 | 秋霞特色aa大片 | 精品aⅴ一区二区三区 | 中文字幕乱码人妻二区三区 | 亚洲中文字幕无码中文字在线 | 色欲av亚洲一区无码少妇 | 亚洲精品国偷拍自产在线麻豆 | 好屌草这里只有精品 | 一个人免费观看的www视频 | 精品久久久无码人妻字幂 | 波多野结衣高清一区二区三区 | 无遮无挡爽爽免费视频 | 亚洲精品一区二区三区婷婷月 | 男女爱爱好爽视频免费看 | 国产真实夫妇视频 | 中文字幕乱妇无码av在线 | 自拍偷自拍亚洲精品被多人伦好爽 | 精品无码av一区二区三区 | 成人aaa片一区国产精品 | 免费网站看v片在线18禁无码 | 装睡被陌生人摸出水好爽 | 国产亚洲精品久久久闺蜜 | 思思久久99热只有频精品66 | 亚洲国产精品久久久久久 | √8天堂资源地址中文在线 | 又大又黄又粗又爽的免费视频 | 久久无码人妻影院 | 大地资源中文第3页 | 1000部啪啪未满十八勿入下载 | 无遮无挡爽爽免费视频 | 日本va欧美va欧美va精品 | 免费人成网站视频在线观看 | 精品无码成人片一区二区98 | 特大黑人娇小亚洲女 | 国产9 9在线 | 中文 | 国产精品亚洲专区无码不卡 | 55夜色66夜色国产精品视频 | 131美女爱做视频 | 极品尤物被啪到呻吟喷水 | 中文无码精品a∨在线观看不卡 | 色噜噜亚洲男人的天堂 | 内射欧美老妇wbb | 麻豆国产97在线 | 欧洲 | 无套内射视频囯产 | 国产偷国产偷精品高清尤物 | 亚洲日韩精品欧美一区二区 | 97精品国产97久久久久久免费 | 人妻人人添人妻人人爱 | 久久精品国产一区二区三区 | 亚洲欧美精品aaaaaa片 | 中国女人内谢69xxxx | 午夜无码人妻av大片色欲 | 亚洲阿v天堂在线 | 久久亚洲精品中文字幕无男同 | 娇妻被黑人粗大高潮白浆 | aⅴ亚洲 日韩 色 图网站 播放 | 中文字幕无线码免费人妻 | 98国产精品综合一区二区三区 | 色欲av亚洲一区无码少妇 | 成熟妇人a片免费看网站 | 麻豆精品国产精华精华液好用吗 | 少妇人妻偷人精品无码视频 | 日日天干夜夜狠狠爱 | 国产精品久久久久久亚洲影视内衣 | 国产激情综合五月久久 | 精品久久8x国产免费观看 | 一本大道久久东京热无码av | 国产亚洲视频中文字幕97精品 | 白嫩日本少妇做爰 | 欧美人与禽zoz0性伦交 | 亚洲七七久久桃花影院 | 久久天天躁狠狠躁夜夜免费观看 | 日日噜噜噜噜夜夜爽亚洲精品 | √天堂中文官网8在线 | 青春草在线视频免费观看 | 国产又爽又猛又粗的视频a片 | 精品国偷自产在线 | 国产美女极度色诱视频www | 少妇性l交大片 | 国产亲子乱弄免费视频 | 国内精品久久毛片一区二区 | 久久久久久九九精品久 | 日日夜夜撸啊撸 | 97资源共享在线视频 | 老太婆性杂交欧美肥老太 | 全球成人中文在线 | 欧美人与禽猛交狂配 | 国产亚洲视频中文字幕97精品 | 成人免费无码大片a毛片 | 国产精品99爱免费视频 | 精品久久8x国产免费观看 | 欧美午夜特黄aaaaaa片 | 欧美猛少妇色xxxxx | 黑人巨大精品欧美黑寡妇 | 亚洲自偷精品视频自拍 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲精品久久久久久久久久久 | 98国产精品综合一区二区三区 | 激情五月综合色婷婷一区二区 | 色婷婷久久一区二区三区麻豆 | 精品久久久久久人妻无码中文字幕 | 人妻插b视频一区二区三区 | 国产精品va在线播放 | 久久久久久九九精品久 | 国产精品久久久av久久久 | 爽爽影院免费观看 | 国产三级久久久精品麻豆三级 | 久久国产36精品色熟妇 | 黑人巨大精品欧美黑寡妇 | 老熟妇仑乱视频一区二区 | 熟女俱乐部五十路六十路av | 亚洲国产精品久久人人爱 | 久久综合香蕉国产蜜臀av | 丝袜人妻一区二区三区 | 少妇激情av一区二区 | 又粗又大又硬毛片免费看 | 国产另类ts人妖一区二区 | 一本一道久久综合久久 | 久久国产自偷自偷免费一区调 | 亚洲a无码综合a国产av中文 | 又大又硬又黄的免费视频 | 理论片87福利理论电影 | 狠狠色丁香久久婷婷综合五月 | 少妇太爽了在线观看 | 亚洲欧美国产精品久久 | 国产无遮挡又黄又爽免费视频 | a在线亚洲男人的天堂 | 亚洲人成影院在线观看 | 欧美日韩视频无码一区二区三 | 国产两女互慰高潮视频在线观看 | 精品国产麻豆免费人成网站 | 久久综合久久自在自线精品自 | 久久久国产一区二区三区 | 欧美日韩综合一区二区三区 | 精品欧洲av无码一区二区三区 | 国色天香社区在线视频 | 亚洲性无码av中文字幕 | 噜噜噜亚洲色成人网站 | 国产乱人伦av在线无码 | 国产精品二区一区二区aⅴ污介绍 | 成熟女人特级毛片www免费 | 亚洲一区二区三区香蕉 | 亚洲日韩av一区二区三区中文 | 在线 国产 欧美 亚洲 天堂 | 国产精品无码成人午夜电影 | 国产特级毛片aaaaaaa高清 | 亚洲成av人在线观看网址 | 亚洲国产精品成人久久蜜臀 | 亚洲日韩精品欧美一区二区 | 蜜桃臀无码内射一区二区三区 | 99麻豆久久久国产精品免费 | 国产色视频一区二区三区 | 永久免费观看国产裸体美女 | 国产激情艳情在线看视频 | 一本久久伊人热热精品中文字幕 | 欧美 日韩 人妻 高清 中文 | 无码人妻少妇伦在线电影 | av在线亚洲欧洲日产一区二区 | 国产精品第一区揄拍无码 | 久久精品国产大片免费观看 | 中文亚洲成a人片在线观看 | 四十如虎的丰满熟妇啪啪 | 鲁鲁鲁爽爽爽在线视频观看 | 伊人久久婷婷五月综合97色 | 欧美激情内射喷水高潮 | 国产熟妇高潮叫床视频播放 | 白嫩日本少妇做爰 | 日本丰满熟妇videos | 在线a亚洲视频播放在线观看 | 波多野结衣av一区二区全免费观看 | 人妻天天爽夜夜爽一区二区 | 亚洲中文字幕乱码av波多ji | 久久精品国产99久久6动漫 | 欧美三级a做爰在线观看 | 国内综合精品午夜久久资源 | 岛国片人妻三上悠亚 | 中文字幕无码日韩专区 | 精品欧洲av无码一区二区三区 | 精品一区二区不卡无码av | 亚洲综合无码久久精品综合 | 人妻人人添人妻人人爱 | 一二三四在线观看免费视频 | 国产婷婷色一区二区三区在线 | 日本又色又爽又黄的a片18禁 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 国产精品亚洲专区无码不卡 | 成人无码精品一区二区三区 | 2020久久超碰国产精品最新 | 久久午夜无码鲁丝片 | 国产在线精品一区二区高清不卡 | 成人无码影片精品久久久 | 丝袜足控一区二区三区 | 成人免费无码大片a毛片 | 67194成是人免费无码 | 男女性色大片免费网站 | 黑人玩弄人妻中文在线 | 午夜成人1000部免费视频 | 国产无av码在线观看 | 精品偷拍一区二区三区在线看 | 国产无遮挡又黄又爽免费视频 | av无码电影一区二区三区 | 久久久精品人妻久久影视 | √8天堂资源地址中文在线 | 亚洲成a人片在线观看日本 | 少妇性俱乐部纵欲狂欢电影 | 97人妻精品一区二区三区 | 国产激情综合五月久久 | 帮老师解开蕾丝奶罩吸乳网站 | 无码国产激情在线观看 | 国产成人精品无码播放 | 久久视频在线观看精品 | 成人欧美一区二区三区黑人 | 日韩精品乱码av一区二区 | 国内少妇偷人精品视频免费 | 一本一道久久综合久久 | 麻豆国产丝袜白领秘书在线观看 | 又大又紧又粉嫩18p少妇 | 熟妇女人妻丰满少妇中文字幕 | 无码成人精品区在线观看 | 色一情一乱一伦 | 亲嘴扒胸摸屁股激烈网站 | 成人欧美一区二区三区 | 国产热a欧美热a在线视频 | 免费人成网站视频在线观看 | 亚洲精品久久久久avwww潮水 | 国产精品美女久久久网av | 国内精品九九久久久精品 | 久久精品女人天堂av免费观看 | 强奷人妻日本中文字幕 | 亚洲中文字幕无码中文字在线 | 国产人妻精品午夜福利免费 | 水蜜桃av无码 | 国产精品国产三级国产专播 | 未满成年国产在线观看 | aⅴ亚洲 日韩 色 图网站 播放 | 色五月丁香五月综合五月 | 亚洲熟悉妇女xxx妇女av | 中文字幕乱码中文乱码51精品 | 好爽又高潮了毛片免费下载 | 精品久久综合1区2区3区激情 | 欧美人与禽zoz0性伦交 | 国产精品久久国产精品99 | 成 人 网 站国产免费观看 | 亚洲高清偷拍一区二区三区 | 精品亚洲韩国一区二区三区 | 国产乱人伦偷精品视频 | 国产无遮挡又黄又爽又色 | 国产精品无码成人午夜电影 | 国产激情艳情在线看视频 | 免费乱码人妻系列无码专区 | 性色av无码免费一区二区三区 | 久久精品国产日本波多野结衣 | 亚洲第一网站男人都懂 | 又大又紧又粉嫩18p少妇 | 欧美变态另类xxxx | 黑人巨大精品欧美一区二区 | 国产成人无码专区 | 欧美精品一区二区精品久久 | 国产成人精品必看 | 久久久无码中文字幕久... | 天天摸天天碰天天添 | 天天拍夜夜添久久精品大 | 婷婷综合久久中文字幕蜜桃三电影 | 爆乳一区二区三区无码 | 日日鲁鲁鲁夜夜爽爽狠狠 | 日韩精品乱码av一区二区 | 日日天日日夜日日摸 | 久久综合九色综合欧美狠狠 | 国产人妻精品一区二区三区不卡 | 日韩av无码一区二区三区不卡 | 午夜精品一区二区三区在线观看 | 久久久国产精品无码免费专区 | 沈阳熟女露脸对白视频 | 国产精品人妻一区二区三区四 | 青草视频在线播放 | 国产成人无码午夜视频在线观看 | 99久久99久久免费精品蜜桃 | 亚洲色欲色欲欲www在线 | 久久精品国产一区二区三区 | 久久综合久久自在自线精品自 | 亚洲精品欧美二区三区中文字幕 | 伊人久久大香线蕉午夜 | 国产精品igao视频网 | 色婷婷综合激情综在线播放 | 成人精品视频一区二区三区尤物 | 欧美freesex黑人又粗又大 | 国产精品美女久久久久av爽李琼 | 夫妻免费无码v看片 | 日本乱偷人妻中文字幕 | 亚洲理论电影在线观看 | 久久久久成人片免费观看蜜芽 | 国产偷抇久久精品a片69 | 日本大乳高潮视频在线观看 | 永久免费精品精品永久-夜色 | 久久天天躁狠狠躁夜夜免费观看 | 久久精品丝袜高跟鞋 | 久久久久久久女国产乱让韩 | 亚洲国产精品成人久久蜜臀 | 特级做a爰片毛片免费69 | 久久久精品成人免费观看 | 亚洲人成影院在线观看 | 久久久av男人的天堂 | 欧美日本日韩 | 九九在线中文字幕无码 | 精品国产福利一区二区 | 日本又色又爽又黄的a片18禁 | 久久久久av无码免费网 | 娇妻被黑人粗大高潮白浆 | 日本大香伊一区二区三区 | 国产乡下妇女做爰 | 老司机亚洲精品影院 | 欧美日韩综合一区二区三区 | 欧美人与动性行为视频 | 人妻少妇精品视频专区 | 久9re热视频这里只有精品 | 国产成人精品优优av | 国内精品人妻无码久久久影院 | 国产电影无码午夜在线播放 | 日韩av无码一区二区三区不卡 | 亚洲国产精品成人久久蜜臀 | 国产9 9在线 | 中文 | 国产精品无码成人午夜电影 | 男人的天堂2018无码 | 精品欧洲av无码一区二区三区 | 最新版天堂资源中文官网 | 少妇高潮喷潮久久久影院 | 强辱丰满人妻hd中文字幕 | 中国女人内谢69xxxxxa片 | 日本爽爽爽爽爽爽在线观看免 | 乱码午夜-极国产极内射 | 欧美乱妇无乱码大黄a片 | 精品欧洲av无码一区二区三区 | 亚洲日本va中文字幕 | 亚洲精品久久久久久一区二区 | 亚洲无人区午夜福利码高清完整版 | 精品久久久中文字幕人妻 | 亚洲精品国产第一综合99久久 | 亚洲s码欧洲m码国产av | 亚洲中文字幕久久无码 | 4hu四虎永久在线观看 | 女人被男人爽到呻吟的视频 | 东北女人啪啪对白 | 久久aⅴ免费观看 | 18禁黄网站男男禁片免费观看 | 国产精品亚洲综合色区韩国 | 99riav国产精品视频 | 未满小14洗澡无码视频网站 | 少妇人妻大乳在线视频 | 色综合视频一区二区三区 | 色欲av亚洲一区无码少妇 | 亚洲区小说区激情区图片区 | 久久伊人色av天堂九九小黄鸭 | 精品人妻av区 | 亚洲国产高清在线观看视频 | 国产人妻人伦精品 | 久久亚洲精品中文字幕无男同 | 中文字幕人妻无码一夲道 | 日本乱人伦片中文三区 | 东京热一精品无码av | 亚洲精品一区三区三区在线观看 | 国产精品久久福利网站 | 成人无码影片精品久久久 | 中文字幕乱码亚洲无线三区 | 强奷人妻日本中文字幕 | 亚洲成av人在线观看网址 | 少妇一晚三次一区二区三区 | 成熟女人特级毛片www免费 | 久久午夜无码鲁丝片秋霞 | 午夜熟女插插xx免费视频 | 人妻熟女一区 | 国产sm调教视频在线观看 | √天堂中文官网8在线 | 色婷婷香蕉在线一区二区 | 精品欧洲av无码一区二区三区 | 亚洲天堂2017无码中文 | 色窝窝无码一区二区三区色欲 | 久久视频在线观看精品 | 日日麻批免费40分钟无码 | 国产高清不卡无码视频 | 亚洲欧洲日本综合aⅴ在线 | 亚洲人成网站在线播放942 | 丝袜人妻一区二区三区 | 国产精品鲁鲁鲁 | 国产一区二区三区影院 | 大肉大捧一进一出好爽视频 | 久在线观看福利视频 | 国产精品视频免费播放 | 国产精品丝袜黑色高跟鞋 | 亚洲精品综合一区二区三区在线 | 国产av人人夜夜澡人人爽麻豆 | 国产成人无码一二三区视频 | 在线精品国产一区二区三区 | 国产后入清纯学生妹 | 狠狠色噜噜狠狠狠7777奇米 | 无码中文字幕色专区 | 人人妻人人藻人人爽欧美一区 | 国产午夜无码视频在线观看 | 国产一区二区三区四区五区加勒比 | 色 综合 欧美 亚洲 国产 | 色欲av亚洲一区无码少妇 | 真人与拘做受免费视频 | 狠狠色欧美亚洲狠狠色www | 亚洲人成影院在线观看 | 欧美成人免费全部网站 | 精品国偷自产在线视频 | 欧美激情综合亚洲一二区 | 丰腴饱满的极品熟妇 | 国产精品视频免费播放 | 福利一区二区三区视频在线观看 | 精品日本一区二区三区在线观看 | 国产精品沙发午睡系列 | 亚洲日本一区二区三区在线 | 少妇性荡欲午夜性开放视频剧场 | 精品国产麻豆免费人成网站 | 久久综合九色综合97网 | 人妻少妇被猛烈进入中文字幕 | 久久久久se色偷偷亚洲精品av | 人人爽人人澡人人高潮 | 乱码午夜-极国产极内射 | 国产精品久久精品三级 | 久久久精品人妻久久影视 | 日本精品人妻无码免费大全 | 成 人影片 免费观看 | 国产精品办公室沙发 | 永久免费精品精品永久-夜色 | 精品国产av色一区二区深夜久久 | 思思久久99热只有频精品66 | 三上悠亚人妻中文字幕在线 | 久久精品国产大片免费观看 | 欧美兽交xxxx×视频 | 亚洲一区av无码专区在线观看 | 人人妻人人澡人人爽人人精品浪潮 | 亚洲人成人无码网www国产 | 亚拍精品一区二区三区探花 | 毛片内射-百度 | 免费观看又污又黄的网站 | 成人免费视频视频在线观看 免费 | 国产乱码精品一品二品 | 国内精品一区二区三区不卡 | 婷婷色婷婷开心五月四房播播 | 国产一区二区不卡老阿姨 | 免费人成在线视频无码 | 丝袜足控一区二区三区 | 亚洲一区二区观看播放 | 亚洲成av人片天堂网无码】 | 男女爱爱好爽视频免费看 | 日韩av激情在线观看 | 久久综合给久久狠狠97色 | 免费观看黄网站 | 亚洲一区二区三区播放 | 欧美野外疯狂做受xxxx高潮 | 国产偷抇久久精品a片69 | 国产真人无遮挡作爱免费视频 | 亚洲精品国产精品乱码不卡 | 亚洲自偷精品视频自拍 | 日本护士毛茸茸高潮 | 国产99久久精品一区二区 | 中文字幕中文有码在线 | 中文毛片无遮挡高清免费 | 亚洲gv猛男gv无码男同 | 国产av人人夜夜澡人人爽麻豆 | 亚洲综合伊人久久大杳蕉 | 中文字幕+乱码+中文字幕一区 | 亚洲国产精品久久久久久 | 亚洲综合在线一区二区三区 | 日日躁夜夜躁狠狠躁 | 久久成人a毛片免费观看网站 | 日韩精品成人一区二区三区 | 成在人线av无码免观看麻豆 | 青青草原综合久久大伊人精品 | 无码av最新清无码专区吞精 | 国内精品久久久久久中文字幕 | 亚洲午夜福利在线观看 | 亚洲国产综合无码一区 | 熟妇人妻无码xxx视频 | 国产成人精品一区二区在线小狼 | 5858s亚洲色大成网站www | 在线播放亚洲第一字幕 | 亚洲天堂2017无码 | 内射后入在线观看一区 | 娇妻被黑人粗大高潮白浆 | 国产 精品 自在自线 | 国产精品va在线播放 | 国产精品久久久久久亚洲影视内衣 | 日本乱人伦片中文三区 | 欧洲熟妇精品视频 | av人摸人人人澡人人超碰下载 | 欧美熟妇另类久久久久久不卡 | 波多野结衣av一区二区全免费观看 | a片免费视频在线观看 | 久久人人爽人人人人片 | 丰满人妻被黑人猛烈进入 | 亚洲男女内射在线播放 | 377p欧洲日本亚洲大胆 | 少妇人妻偷人精品无码视频 | 精品国产一区二区三区av 性色 | 99久久精品无码一区二区毛片 | а√天堂www在线天堂小说 | 欧洲欧美人成视频在线 | 1000部啪啪未满十八勿入下载 | 欧美丰满熟妇xxxx性ppx人交 | 性史性农村dvd毛片 | 成人性做爰aaa片免费看 | 色一情一乱一伦一视频免费看 | 久久这里只有精品视频9 | 国产绳艺sm调教室论坛 | 中文字幕av日韩精品一区二区 | 丝袜足控一区二区三区 | 人妻aⅴ无码一区二区三区 | 午夜丰满少妇性开放视频 | 东京一本一道一二三区 | 在线观看国产一区二区三区 | 国产一区二区三区日韩精品 | 日韩精品a片一区二区三区妖精 | 久久99精品久久久久久 | 最近免费中文字幕中文高清百度 | 久久国产精品_国产精品 | 亚洲成av人影院在线观看 | 亚洲狠狠婷婷综合久久 | 特级做a爰片毛片免费69 | 日本一区二区三区免费高清 | 狂野欧美性猛交免费视频 | 国产明星裸体无码xxxx视频 | 久久精品人人做人人综合试看 | 久久人人97超碰a片精品 | 成人aaa片一区国产精品 | 成人无码精品1区2区3区免费看 | 色情久久久av熟女人妻网站 | 色欲人妻aaaaaaa无码 | 免费无码一区二区三区蜜桃大 | 天天躁夜夜躁狠狠是什么心态 | 午夜精品一区二区三区在线观看 | 欧美国产日产一区二区 | 亚洲成av人在线观看网址 | 又黄又爽又色的视频 | 噜噜噜亚洲色成人网站 | 熟女俱乐部五十路六十路av | 精品偷拍一区二区三区在线看 | 丰满少妇女裸体bbw | 国产凸凹视频一区二区 | 亚洲 激情 小说 另类 欧美 | 永久免费精品精品永久-夜色 | 天天做天天爱天天爽综合网 | 欧美 亚洲 国产 另类 | 爱做久久久久久 | 无码人妻丰满熟妇区五十路百度 | 一个人免费观看的www视频 | 亚洲精品欧美二区三区中文字幕 | 牲欲强的熟妇农村老妇女 | 天天躁夜夜躁狠狠是什么心态 | 少妇激情av一区二区 | 亚洲精品中文字幕久久久久 | 一个人看的视频www在线 | 亚洲欧美国产精品久久 | 中文字幕无线码 | 国产熟女一区二区三区四区五区 | 国产无套内射久久久国产 | 中文字幕色婷婷在线视频 | 亚洲小说图区综合在线 | 波多野结衣一区二区三区av免费 | 又大又黄又粗又爽的免费视频 | 最新版天堂资源中文官网 | 久久亚洲精品中文字幕无男同 | 国产性生交xxxxx无码 | 久久精品国产大片免费观看 | 国产乱人伦偷精品视频 | 帮老师解开蕾丝奶罩吸乳网站 | 在线观看欧美一区二区三区 | 丁香花在线影院观看在线播放 | 亚洲色大成网站www国产 | 午夜丰满少妇性开放视频 | 国产乱人伦av在线无码 | 激情内射日本一区二区三区 | 国产一区二区三区四区五区加勒比 | 色综合久久久久综合一本到桃花网 | 亚洲精品国产第一综合99久久 | 亚洲国产精品无码一区二区三区 | 无套内谢的新婚少妇国语播放 | 天堂а√在线地址中文在线 | 日本乱人伦片中文三区 | 国产午夜精品一区二区三区嫩草 | 奇米影视7777久久精品 | 夜夜躁日日躁狠狠久久av | 无码午夜成人1000部免费视频 | 纯爱无遮挡h肉动漫在线播放 | 一本久久a久久精品vr综合 | 天堂无码人妻精品一区二区三区 | 99视频精品全部免费免费观看 | 久久伊人色av天堂九九小黄鸭 | 久久久久久国产精品无码下载 | 国产超级va在线观看视频 | 亚洲中文字幕在线无码一区二区 | 天天av天天av天天透 | 精品一区二区不卡无码av | 国产免费无码一区二区视频 | 精品成人av一区二区三区 | 国产午夜无码精品免费看 | 少妇性荡欲午夜性开放视频剧场 | 精品无码国产自产拍在线观看蜜 | 亚洲爆乳大丰满无码专区 | 亚洲经典千人经典日产 | 性开放的女人aaa片 | 国产精品嫩草久久久久 | 色噜噜亚洲男人的天堂 | 一本加勒比波多野结衣 | 4hu四虎永久在线观看 | 久久久久免费看成人影片 | 国内精品九九久久久精品 | 在线精品亚洲一区二区 | 两性色午夜视频免费播放 | 免费国产成人高清在线观看网站 | 精品亚洲成av人在线观看 | 老太婆性杂交欧美肥老太 | 久久国产自偷自偷免费一区调 | 久久精品人人做人人综合试看 | 3d动漫精品啪啪一区二区中 | 老熟妇仑乱视频一区二区 | 亚洲色欲久久久综合网东京热 | 久久精品女人天堂av免费观看 | 亚洲区欧美区综合区自拍区 | 少妇无码吹潮 | 99久久无码一区人妻 | 色偷偷人人澡人人爽人人模 | 国产成人亚洲综合无码 | 国产精品久久国产精品99 | 中文字幕中文有码在线 | 麻豆人妻少妇精品无码专区 | 国产精品自产拍在线观看 | 思思久久99热只有频精品66 | 久久久久成人精品免费播放动漫 | 欧美丰满熟妇xxxx性ppx人交 | 久久久中文久久久无码 | 亚洲欧洲中文日韩av乱码 | 免费观看激色视频网站 | 亚洲熟妇色xxxxx欧美老妇y | 国产精品高潮呻吟av久久4虎 | 国产特级毛片aaaaaa高潮流水 | 欧美日韩一区二区免费视频 | 亚洲成av人在线观看网址 | 亚洲一区二区三区国产精华液 | 日本护士毛茸茸高潮 | 国产在线一区二区三区四区五区 | 亚洲人成无码网www | 老子影院午夜精品无码 | 性色av无码免费一区二区三区 | 日本www一道久久久免费榴莲 | 久久人妻内射无码一区三区 | 亚洲一区二区三区偷拍女厕 | 玩弄少妇高潮ⅹxxxyw | 亚洲中文字幕乱码av波多ji | 亚洲综合无码久久精品综合 | 色妞www精品免费视频 | 丰满少妇弄高潮了www | 两性色午夜视频免费播放 | 国语自产偷拍精品视频偷 | 国产精品久久久久久亚洲毛片 | 国产精品久久久久7777 | 77777熟女视频在线观看 а天堂中文在线官网 | 中文字幕无码免费久久9一区9 | 亚洲午夜久久久影院 | 国产精品第一区揄拍无码 | 欧美一区二区三区视频在线观看 | 国产一区二区三区影院 | 波多野结衣aⅴ在线 | 狠狠色色综合网站 | 无码乱肉视频免费大全合集 | 亚洲国产精品一区二区美利坚 | 国产精品久久久av久久久 | 人妻夜夜爽天天爽三区 | 久久aⅴ免费观看 | 成年女人永久免费看片 | 精品国产一区二区三区四区在线看 | 亚洲狠狠色丁香婷婷综合 | 日本乱偷人妻中文字幕 | 人妻夜夜爽天天爽三区 | 99国产精品白浆在线观看免费 | 国产va免费精品观看 | 无码国模国产在线观看 | 人妻少妇精品无码专区动漫 | 九月婷婷人人澡人人添人人爽 | 国产69精品久久久久app下载 | 国产网红无码精品视频 | 国产精品香蕉在线观看 | 日韩人妻无码一区二区三区久久99 | 国产成人精品久久亚洲高清不卡 | 欧美丰满老熟妇xxxxx性 | 老太婆性杂交欧美肥老太 | 国产亚洲精品精品国产亚洲综合 | 亚洲综合无码一区二区三区 | 粗大的内捧猛烈进出视频 | 亚洲精品鲁一鲁一区二区三区 | 国产成人人人97超碰超爽8 | 色欲久久久天天天综合网精品 | 国产精品第一国产精品 | 国产精品亚洲lv粉色 | 国产激情综合五月久久 | a在线亚洲男人的天堂 | 欧美性生交xxxxx久久久 | 一本大道伊人av久久综合 | 一本久久伊人热热精品中文字幕 | 亚洲午夜无码久久 | 99久久久无码国产精品免费 | 999久久久国产精品消防器材 | 亚洲精品一区二区三区在线观看 | 蜜桃av抽搐高潮一区二区 | 成人性做爰aaa片免费看 | 天天躁夜夜躁狠狠是什么心态 | 亚洲欧洲日本综合aⅴ在线 | 久久精品女人的天堂av | 日韩欧美中文字幕公布 | 久9re热视频这里只有精品 | 久久综合激激的五月天 | 爽爽影院免费观看 | 久久精品人妻少妇一区二区三区 | 少妇久久久久久人妻无码 | 18无码粉嫩小泬无套在线观看 | 国产成人无码av在线影院 | 亚洲精品国产a久久久久久 | 久久综合色之久久综合 | 国产乱子伦视频在线播放 | 熟妇人妻中文av无码 | 永久免费观看美女裸体的网站 | 少女韩国电视剧在线观看完整 | 牛和人交xxxx欧美 | 无码人妻久久一区二区三区不卡 | 无码午夜成人1000部免费视频 | 国产成人无码a区在线观看视频app | 中文毛片无遮挡高清免费 | 国产又爽又黄又刺激的视频 | 久久99精品久久久久婷婷 | 久久无码人妻影院 | 亚洲一区二区三区偷拍女厕 | 任你躁在线精品免费 | 欧美野外疯狂做受xxxx高潮 | 无码任你躁久久久久久久 | 精品一区二区三区波多野结衣 | 成人毛片一区二区 | 国产精品亚洲а∨无码播放麻豆 | 久久人妻内射无码一区三区 | 高潮喷水的毛片 | 动漫av一区二区在线观看 | 精品一二三区久久aaa片 | 久久 国产 尿 小便 嘘嘘 | 人妻与老人中文字幕 | 强开小婷嫩苞又嫩又紧视频 | 97人妻精品一区二区三区 | 亚洲人成网站在线播放942 | 国产疯狂伦交大片 | 一区二区三区乱码在线 | 欧洲 | 欧美老妇与禽交 | 一本久道高清无码视频 | 国产乱码精品一品二品 | 精品人妻中文字幕有码在线 | 中文字幕无码热在线视频 | 精品人妻人人做人人爽 | 亚洲欧美中文字幕5发布 | 国产麻豆精品一区二区三区v视界 | 东京热男人av天堂 | 国产精品自产拍在线观看 | 丰满少妇弄高潮了www | 亚洲高清偷拍一区二区三区 | 蜜臀aⅴ国产精品久久久国产老师 | 中文字幕无码免费久久99 | 精品无码国产自产拍在线观看蜜 | 在线a亚洲视频播放在线观看 | 国产免费观看黄av片 | 国产激情艳情在线看视频 | 久久久久免费看成人影片 | www国产精品内射老师 | 国产成人无码午夜视频在线观看 | 欧美性生交活xxxxxdddd | 一本久久a久久精品vr综合 | 99久久亚洲精品无码毛片 | 一本大道伊人av久久综合 | 欧美老妇交乱视频在线观看 | 国产成人无码午夜视频在线观看 | 77777熟女视频在线观看 а天堂中文在线官网 | 国产精品资源一区二区 | 国产精品国产三级国产专播 | 女人和拘做爰正片视频 | 欧美激情一区二区三区成人 | 国产精品人人爽人人做我的可爱 | 水蜜桃亚洲一二三四在线 | 亚洲一区二区三区播放 | 中文字幕无码av激情不卡 | 夫妻免费无码v看片 | 国内老熟妇对白xxxxhd | 曰本女人与公拘交酡免费视频 | 图片区 小说区 区 亚洲五月 | 亚洲乱码中文字幕在线 | 免费看男女做好爽好硬视频 | 精品国产福利一区二区 | 久久久久久a亚洲欧洲av冫 | 中文字幕人妻无码一区二区三区 | 97夜夜澡人人双人人人喊 | 我要看www免费看插插视频 | 亚洲成av人片天堂网无码】 | 午夜无码人妻av大片色欲 | 成人性做爰aaa片免费看不忠 | 中文久久乱码一区二区 | 久久精品成人欧美大片 | 国产无av码在线观看 | 久久久久久亚洲精品a片成人 | 97资源共享在线视频 | 日日摸夜夜摸狠狠摸婷婷 | 亚洲中文字幕无码中字 | 亚洲综合伊人久久大杳蕉 | 国产精品美女久久久久av爽李琼 | 青春草在线视频免费观看 | 国産精品久久久久久久 | 红桃av一区二区三区在线无码av | 亚洲gv猛男gv无码男同 | 少妇一晚三次一区二区三区 | 国产黄在线观看免费观看不卡 | 亚洲国产精品久久久天堂 | 国产黄在线观看免费观看不卡 | 东京无码熟妇人妻av在线网址 | 国产精品二区一区二区aⅴ污介绍 | 久久视频在线观看精品 | 精品国偷自产在线 | 国内揄拍国内精品少妇国语 | 精品无人区无码乱码毛片国产 | 久久综合九色综合97网 | 99久久久无码国产精品免费 | 少妇太爽了在线观看 | 偷窥日本少妇撒尿chinese | 久久人人爽人人爽人人片ⅴ | 国产午夜精品一区二区三区嫩草 | 99久久人妻精品免费二区 | 最近中文2019字幕第二页 | 亚洲の无码国产の无码步美 | 粗大的内捧猛烈进出视频 | 亚洲午夜久久久影院 | 久久综合九色综合97网 | 无码一区二区三区在线 | 精品 日韩 国产 欧美 视频 | 国产精品鲁鲁鲁 | 久久精品人人做人人综合试看 | 九九综合va免费看 | 女人被男人爽到呻吟的视频 | 精品偷拍一区二区三区在线看 | 在教室伦流澡到高潮hnp视频 | 蜜臀aⅴ国产精品久久久国产老师 | 清纯唯美经典一区二区 | 人人妻在人人 | 久久午夜无码鲁丝片 | 日韩亚洲欧美中文高清在线 | 亚洲成在人网站无码天堂 | 欧美猛少妇色xxxxx | 久久综合色之久久综合 | 久久亚洲日韩精品一区二区三区 | 国产精品18久久久久久麻辣 | 国产av无码专区亚洲awww | 久久国产精品偷任你爽任你 | 久激情内射婷内射蜜桃人妖 | 国产精品无码久久av | 波多野结衣av一区二区全免费观看 | 国产suv精品一区二区五 | 亚洲の无码国产の无码步美 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 久久国语露脸国产精品电影 | 永久免费观看国产裸体美女 | 亚洲成av人影院在线观看 | 欧美老妇交乱视频在线观看 | 真人与拘做受免费视频一 | 乌克兰少妇性做爰 | 亚洲区小说区激情区图片区 | 日本一区二区三区免费高清 | 亚洲欧洲中文日韩av乱码 | 亚洲中文字幕无码中文字在线 | 久久视频在线观看精品 | 欧美刺激性大交 | 亚洲理论电影在线观看 | 国产精品久久福利网站 | 日韩精品无码一本二本三本色 | 99久久亚洲精品无码毛片 | 国内精品一区二区三区不卡 | 国产一精品一av一免费 | 暴力强奷在线播放无码 | 装睡被陌生人摸出水好爽 | 国产特级毛片aaaaaa高潮流水 | 国产超级va在线观看视频 | 亚洲国精产品一二二线 | 扒开双腿疯狂进出爽爽爽视频 | 亚洲一区二区三区无码久久 | 丝袜美腿亚洲一区二区 | 亚洲综合在线一区二区三区 | 午夜精品一区二区三区在线观看 | 色欲av亚洲一区无码少妇 | 国产成人精品三级麻豆 | 天堂亚洲2017在线观看 | 精品无码一区二区三区爱欲 | 中国大陆精品视频xxxx | 色欲综合久久中文字幕网 | 女人被爽到呻吟gif动态图视看 | 成熟人妻av无码专区 | 亚洲国产一区二区三区在线观看 | 久久久国产一区二区三区 | 国产另类ts人妖一区二区 | 日本乱偷人妻中文字幕 | 成人欧美一区二区三区黑人免费 | 色一情一乱一伦一区二区三欧美 | 久久国内精品自在自线 | 午夜男女很黄的视频 | 人妻少妇精品无码专区二区 | 久久国内精品自在自线 | 奇米影视7777久久精品 | 一本色道婷婷久久欧美 | 国产97色在线 | 免 | 1000部夫妻午夜免费 | 久久国语露脸国产精品电影 | 精品国产一区av天美传媒 | 国产艳妇av在线观看果冻传媒 | 风流少妇按摩来高潮 | 国产午夜无码视频在线观看 | 亚洲狠狠婷婷综合久久 | 又黄又爽又色的视频 | 无遮挡啪啪摇乳动态图 | 国产精品亚洲专区无码不卡 | 亚洲日本一区二区三区在线 | 国产成人精品久久亚洲高清不卡 | 精品国产一区二区三区av 性色 | 亚洲色大成网站www国产 | 人妻少妇精品无码专区动漫 | 亚洲精品欧美二区三区中文字幕 | 国产乱人偷精品人妻a片 | 麻豆人妻少妇精品无码专区 | 亚洲 a v无 码免 费 成 人 a v | 图片区 小说区 区 亚洲五月 | 亚洲成a人片在线观看无码 | 精品国产aⅴ无码一区二区 | 少妇人妻偷人精品无码视频 | 男女超爽视频免费播放 | 高清不卡一区二区三区 | 国产超级va在线观看视频 | 久久久久人妻一区精品色欧美 | 国产精品手机免费 | 亚洲一区二区三区偷拍女厕 | 欧美日本免费一区二区三区 | 人妻互换免费中文字幕 | 国产激情艳情在线看视频 | 久久99久久99精品中文字幕 | 青草青草久热国产精品 | 精品aⅴ一区二区三区 | 欧美国产日产一区二区 | 国产激情无码一区二区app | 丰满肥臀大屁股熟妇激情视频 | 免费看男女做好爽好硬视频 | 国产无遮挡又黄又爽又色 | 日欧一片内射va在线影院 | 少妇厨房愉情理9仑片视频 | 99久久精品日本一区二区免费 | 久久亚洲精品中文字幕无男同 | 日日碰狠狠丁香久燥 | 国产亚洲精品久久久久久久久动漫 | 国产精品鲁鲁鲁 | 人人妻在人人 | 丰满岳乱妇在线观看中字无码 | 成人性做爰aaa片免费看 | 午夜福利不卡在线视频 | 99久久久无码国产aaa精品 | 精品国产一区二区三区四区在线看 | 久久精品丝袜高跟鞋 | 蜜桃视频插满18在线观看 | 欧美日韩人成综合在线播放 | 成熟女人特级毛片www免费 | 亚洲国产精品一区二区美利坚 | 欧美 丝袜 自拍 制服 另类 | 国产精品第一区揄拍无码 | 国产香蕉97碰碰久久人人 | 一本大道久久东京热无码av | 色偷偷人人澡人人爽人人模 | 欧美亚洲日韩国产人成在线播放 | 日韩av无码中文无码电影 | 国内少妇偷人精品视频免费 | 日韩人妻少妇一区二区三区 | 色婷婷综合激情综在线播放 | 国产成人无码区免费内射一片色欲 | 欧美日韩久久久精品a片 | 久久精品中文字幕一区 | 成人亚洲精品久久久久软件 | 国产精品高潮呻吟av久久4虎 | 精品一区二区三区无码免费视频 | 国产午夜福利亚洲第一 | 国产精品二区一区二区aⅴ污介绍 | 精品无码成人片一区二区98 | 亚洲乱亚洲乱妇50p | 国产成人无码a区在线观看视频app | 亚洲精品国偷拍自产在线麻豆 | 亚洲熟妇色xxxxx欧美老妇y | 亚洲成a人片在线观看日本 | 漂亮人妻洗澡被公强 日日躁 | 久久这里只有精品视频9 | 午夜精品一区二区三区在线观看 | 久久综合给合久久狠狠狠97色 | 日日橹狠狠爱欧美视频 | 国产精品亚洲а∨无码播放麻豆 | 成人综合网亚洲伊人 | 欧美日韩综合一区二区三区 | 国产偷自视频区视频 | 中文字幕无线码 | 男人扒开女人内裤强吻桶进去 | 一二三四社区在线中文视频 | 四虎4hu永久免费 | 97人妻精品一区二区三区 | 亚洲一区二区三区含羞草 | 天天躁日日躁狠狠躁免费麻豆 | 国产国语老龄妇女a片 | 噜噜噜亚洲色成人网站 | 99riav国产精品视频 | 欧美国产亚洲日韩在线二区 | 欧美精品国产综合久久 | 狠狠cao日日穞夜夜穞av | 亚洲人成网站免费播放 | 国语精品一区二区三区 | 欧美亚洲国产一区二区三区 | 国内揄拍国内精品人妻 | 国产熟女一区二区三区四区五区 | 狠狠色欧美亚洲狠狠色www | 少妇高潮一区二区三区99 | 一本大道久久东京热无码av | 欧美精品免费观看二区 | 任你躁国产自任一区二区三区 | 青青草原综合久久大伊人精品 | 东京热无码av男人的天堂 | 风流少妇按摩来高潮 | 天天综合网天天综合色 | 奇米影视7777久久精品人人爽 | 亚洲日韩一区二区 | 又大又硬又爽免费视频 | 国产一区二区三区四区五区加勒比 | 女人被男人爽到呻吟的视频 | 日本www一道久久久免费榴莲 | 日日噜噜噜噜夜夜爽亚洲精品 | 狠狠色欧美亚洲狠狠色www | 99久久亚洲精品无码毛片 | 久久精品国产亚洲精品 | 久久国产精品精品国产色婷婷 | 又大又硬又黄的免费视频 | 无套内谢的新婚少妇国语播放 | 久久无码人妻影院 | 日日天日日夜日日摸 | 无码人妻少妇伦在线电影 | 娇妻被黑人粗大高潮白浆 | 国产高清av在线播放 | 疯狂三人交性欧美 | 国产熟妇另类久久久久 | 亚洲欧美日韩综合久久久 | 中文字幕乱妇无码av在线 | 露脸叫床粗话东北少妇 | 久久久国产一区二区三区 | 东京无码熟妇人妻av在线网址 | 日本饥渴人妻欲求不满 | 欧美35页视频在线观看 | 国产人妻精品午夜福利免费 | 国产亚洲精品久久久ai换 | 成人免费无码大片a毛片 | 成人三级无码视频在线观看 | 97久久超碰中文字幕 | 成人亚洲精品久久久久 | 2020久久超碰国产精品最新 | 日韩欧美中文字幕在线三区 | 男女爱爱好爽视频免费看 | 欧美老妇与禽交 | 久久精品中文字幕大胸 | 久久精品视频在线看15 | 亚洲国产成人av在线观看 | 日日夜夜撸啊撸 | 亚洲精品久久久久avwww潮水 | 四虎国产精品免费久久 | 精品欧美一区二区三区久久久 | 动漫av网站免费观看 | 2020久久香蕉国产线看观看 | 一本大道久久东京热无码av | 欧美日本精品一区二区三区 | 国产无遮挡又黄又爽又色 | 正在播放东北夫妻内射 | 久久精品无码一区二区三区 | 天天拍夜夜添久久精品 | 精品水蜜桃久久久久久久 | 国产成人一区二区三区在线观看 | 日韩精品成人一区二区三区 | 亚洲色偷偷男人的天堂 | 日本在线高清不卡免费播放 | 精品无码一区二区三区爱欲 | 2020久久超碰国产精品最新 | 国产精品怡红院永久免费 | 激情爆乳一区二区三区 | 中文字幕 人妻熟女 | 久久综合激激的五月天 | 久久精品视频在线看15 | 麻豆国产人妻欲求不满谁演的 | 一本久久伊人热热精品中文字幕 | 成人欧美一区二区三区黑人 | 成人女人看片免费视频放人 | 2020久久香蕉国产线看观看 | 国产亚洲精品久久久久久久 | 国产两女互慰高潮视频在线观看 | 熟妇女人妻丰满少妇中文字幕 | 无套内射视频囯产 | 综合网日日天干夜夜久久 | 国产尤物精品视频 | 国产成人综合色在线观看网站 | 亚洲呦女专区 | 国内精品人妻无码久久久影院蜜桃 | 国产精品高潮呻吟av久久4虎 | 欧美第一黄网免费网站 | 欧美一区二区三区视频在线观看 | 国产精品久久精品三级 | 亚洲小说春色综合另类 | 久久婷婷五月综合色国产香蕉 | 东京一本一道一二三区 | 亚洲色偷偷男人的天堂 | 18禁止看的免费污网站 | 亚洲精品一区二区三区大桥未久 | 思思久久99热只有频精品66 | 亚洲自偷自拍另类第1页 | 无码av免费一区二区三区试看 | 捆绑白丝粉色jk震动捧喷白浆 | 亚洲精品美女久久久久久久 | 无码毛片视频一区二区本码 | 中文字幕日产无线码一区 | 欧美日韩亚洲国产精品 | 漂亮人妻洗澡被公强 日日躁 | 丁香花在线影院观看在线播放 | 国产精品久久久久久久9999 | 亚洲日本va中文字幕 | 一二三四在线观看免费视频 | 无码av中文字幕免费放 | 亚洲精品国产精品乱码不卡 | 永久黄网站色视频免费直播 | 国内精品久久毛片一区二区 | 色狠狠av一区二区三区 | 狠狠亚洲超碰狼人久久 | 久久精品人人做人人综合试看 | 撕开奶罩揉吮奶头视频 | 99视频精品全部免费免费观看 | 日本肉体xxxx裸交 | 国产麻豆精品一区二区三区v视界 | 狠狠色欧美亚洲狠狠色www | 久久久久se色偷偷亚洲精品av | 欧美一区二区三区视频在线观看 | 最新国产麻豆aⅴ精品无码 | 国产成人精品视频ⅴa片软件竹菊 | 中文字幕无码免费久久9一区9 | 久久精品无码一区二区三区 | 亚洲一区二区三区含羞草 | av小次郎收藏 | 噜噜噜亚洲色成人网站 | 中文字幕色婷婷在线视频 | 日韩少妇内射免费播放 | 久久午夜夜伦鲁鲁片无码免费 | 国产 精品 自在自线 | 无码av最新清无码专区吞精 | 中文精品无码中文字幕无码专区 | 又粗又大又硬又长又爽 | 乱码午夜-极国产极内射 | 天天躁日日躁狠狠躁免费麻豆 | 风流少妇按摩来高潮 | 久久天天躁夜夜躁狠狠 | 国产精品久久久久久无码 | 国产精华av午夜在线观看 | 午夜无码人妻av大片色欲 | 欧美日韩综合一区二区三区 | 乌克兰少妇xxxx做受 | 久久久中文久久久无码 | 欧美猛少妇色xxxxx | 久久 国产 尿 小便 嘘嘘 | 免费看少妇作爱视频 | 天天综合网天天综合色 | 无码人妻精品一区二区三区不卡 | 人人妻人人澡人人爽欧美一区 | 亚洲一区二区三区无码久久 | 波多野结衣高清一区二区三区 | 精品一二三区久久aaa片 |