機器學習項目(六)醫療知識圖譜構建(一)

NLP中的兩大流派

知識圖譜

用三元組來表示知識:對領域的特定知識進行結構化存儲和表示
模型算法:利用圖譜關係進行推導,進行實現自主學習

深度學習

利用機器提取的特徵來表述數據:自動提取內在特徵
模型算法:優化特徵的權重進行非線性映射

深度學習對比知識圖譜能夠實現端到端的模型,中間減少人爲的參與,知識圖譜通過三元組的關係表示,可以最大限度的獲得自然世界中的相互聯繫

發展方向

Pretrain+finetune

預訓練:大語料、無監督、深模型獲得語義表示
微調:在下游任務中添加具體語義信息實現任務
強化學習
訓練:自動獲得更深的語義信息
測試:可面對複雜語境自動找到合適的表達

爬蟲獲取

利用正則和結構化處理公開數據集、人工整理數據、爬蟲獲得數據
什麼是爬蟲:通過解析網頁資源自動化的獲得網頁數據的手段
在各個子領域內的專業網站內,獲得網頁內容、解析網頁內容、保存獲得資源

爬蟲相關的類庫

urilib:網絡獲得html文件
re:正則表達式
bs4:簡單邊界的處理html
selenium:自動化測試

import urllib
import urllib.request
response = urllib.request.urlopen('http://www.baidu.com')  # 返回HTML5文件
print(response.read().decode('utf-8'))

# 修改頭文件,打開網頁
from urllib import request, parse
url = 'http://httpbin.org/post'
headers = {
    'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',
    'Host': 'httpbin.org'
}
dict = {
    'name': 'zhaofan'
}
data = bytes(parse.urlencode(dict), encoding='utf8')
req = request.Request(url=url, data=data, headers=headers, method='POST')
response = request.urlopen(req)
print(response.read().decode('utf-8'))

# 設置代理,打開網頁
import urllib.request
proxy_handler = urllib.request.ProxyHandler({
    'http': 'http://127.0.0.1:9743',
    'https': 'https://127.0.0.1:9743'
})
opener = urllib.request.build_opener(proxy_handler)
# response = opener.open('http://httpbin.org/get')
response = opener.open("http://yao.xywy.com/")
print(response.read())
from bs4 import BeautifulSoup

html = '''
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>bs4
<p class="story">...</p>
'''
soup = BeautifulSoup(html,'lxml')
print(soup.prettify())
print(soup.title)  # 通過這種soup.標籤名 我們就可以獲得這個標籤的內容
print(soup.title.name)  # 當我們通過soup.title.name的時候就可以獲得該title標籤的名稱,即title
print(soup.title.string)  # 獲取第一個title標籤的內容:
print(soup.title.parent.name)   # 獲取第一個title標籤的內容:
print(soup.p)  # 獲取第一個p標籤的內容:
print(soup.p["class"])  # 獲取p標籤的name屬性值
print(soup.a)
print(soup.find_all('a'))  # 可以根據標籤名,屬性,內容查找文檔
print(soup.find(id='link3'))  # 獲得屬性
from selenium import webdriver
# 聲明瀏覽器
browser = webdriver.Chrome()
browser = webdriver.Firefox()
url = 'https:www.baidu.com'
browser.get(url)#打開瀏覽器預設網址
print(browser.page_source)#打印網頁源代碼
browser.close()#關閉瀏覽器  
input_first = browser.find_element_by_id('q')  #通過id的方式獲得相應元素
input_two = browser.find_element_by_css_selector('#q')  # 通過CSS的方式獲得相應元素
print(input_first)
print(input_two)
from selenium.webdriver.common.by import By  # 通過By的方式獲得元素
input_1 = browser.find_element(By.ID, 'q')
print(input_1)
# selenium的強項在於它的交互動作
browser.switch_to.frame('iframeResult')
source = browser.find_element_by_css_selector('#draggable')
target = browser.find_element_by_css_selector('#droppable')
actions = ActionChains(browser)
actions.drag_and_drop(source, target)
actions.perform()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章