Hi 大家好,今天想要分享有關搜尋引擎的 Cognitive Service。Microsoft 自家的搜尋引擎 Bing
,也是世界上最好的搜尋引擎之一。如果我們把這搜尋引擎整合至開發的專案、產品中,我們豈不是直接擁有一個巨人的肩膀了,那就讓我們繼續看下去吧!
其實,非常宏觀的來說,只能算是一種,核心都是Bing
,差別在於要把Bing
的哪個功能整合至專案、產品裡面。不過,這樣講好像有點不負責任,所以根據官網的分類,再加上我自己見解,我覺得可以分成五種。如下圖:
用大家常用的 Google 搜尋引擎來解釋,如果是在 Google 首頁搜尋,則會出現所有的搜尋結果。
若是將選項調成影片,則只會出現所有影片的搜尋結果。
所以,如果沒有要查詢特定種類的搜尋結果,就直接使用Bing Web Search
,若是要查詢特定種類,像是新聞、影片、圖片等等,就再使用Bing 其他 Search
。若要改為以圖搜尋,則可以使用Bing Visual Search
。
0.1 準備好一個 Azure Account
0.2 建立好 Python 環境
0.3 打開 terminal (Powershell or CMD),輸入以下指令
pip install requests
1.1 前往 Azure Portal,並搜尋 Bing Search
1.2 自己完成以下的設定
1.3 待建立完成後,找到你的資源,複製 key
2.1 打開 Visual Studio Code (VS Code)
2.2 新增一個 Python 程式檔,命名為bing-image-search-test.py
,並將以下程式碼複製貼上
import json
import os
import requests
# Add your Bing Search V7 subscription key and endpoint to your environment variables.
endpoint = "https://api.cognitive.microsoft.com/bing/v7.0/images/search"
subscriptionKey = '<你複製的 Key>'
# 查詢的關鍵字
query = "台灣大學"
# Construct a request
mkt = 'zh-tw'
params = {'q': query, 'mkt': mkt}
headers = {'Ocp-Apim-Subscription-Key': subscriptionKey}
# Call the API
try:
response = requests.get(endpoint, headers=headers, params=params)
response.raise_for_status()
# 看部分Response
for i in range(2):
print('')
print(f"搜尋到的圖片網址 : {response.json()['value'][i]['contentUrl']}")
print(f"搜尋到的圖片所在的網站名稱 : {response.json()['value'][i]['name']}")
except Exception as ex:
raise ex
2.3 打開terminal,確認位置為程式檔案的位置後,輸入以下指令
python bing-image-search-test.py
2.4 若是想要實作以圖搜尋,則再新增一個 Python 程式檔,命名為bing-visual-search-test.py
,並將以下程式碼複製貼上
import json
import os
import requests
# Add your Bing Search V7 subscriptionKey and endpoint to your environment variables.
endpoint = 'https://api.cognitive.microsoft.com/bing/v7.0/images/visualsearch?mkt=zh-tw&setLang=zh-tw'
subscription_key = '<你複製的 Key>'
# 圖片的檔案名稱及附檔名(若是程式檔與圖片檔為同一個資料夾,則只需要相對位置即可)
image_path = 'picture2.png'
# Construct the request
headers = {'Ocp-Apim-Subscription-Key': subscription_key}
file = {'image' : ('MY-IMAGE', open(image_path, 'rb'))} # MY-IMAGE is the name of the image file (no extention)
# Call the API
try:
response = requests.post(endpoint, headers=headers, files=file)
response.raise_for_status()
# 看部分Response
for i in range(2):
print('')
print(f"相似圖片所在的網站名稱 : {response.json()['tags'][0]['actions'][2]['data']['value'][i]['name']}")
print(f"相似圖片所在的網址 : {response.json()['tags'][0]['actions'][2]['data']['value'][i]['hostPageUrl']}")
except Exception as ex:
raise ex
2.5 打開terminal,確認位置為程式檔案的位置後,輸入以下指令
python bing-visual-search-test.py
以上是今天想要分享的內容,雖然上面搜尋到的結果,都是顯示在 terminal 上,不過,後面的文章就會介紹如何將 Web Search Service 結合 chatbot了,請大家等待一下。明天我將會介紹一個關於 FAQ 的服務,我們明天見。