iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 5
1

Hi 大家好,今天想要分享有關搜尋引擎的 Cognitive Service。Microsoft 自家的搜尋引擎 Bing,也是世界上最好的搜尋引擎之一。如果我們把這搜尋引擎整合至開發的專案、產品中,我們豈不是直接擁有一個巨人的肩膀了,那就讓我們繼續看下去吧!/images/emoticon/emoticon62.gif

Web Search Service 有哪幾種 ?

其實,非常宏觀的來說,只能算是一種,核心都是Bing,差別在於要把Bing的哪個功能整合至專案、產品裡面。不過,這樣講好像有點不負責任,所以根據官網的分類,再加上我自己見解,我覺得可以分成五種。如下圖:
https://ithelp.ithome.com.tw/upload/images/20200920/20129689pzJ9ts7jYu.png

  • Bing Web Search: 將整個 Bing 搜尋引擎加進你的應用程式,後面內容會對這個種類多著墨。
  • Bing Custom Search: 針對關心的主題建立一個量身定制的無廣告搜索體驗。
  • Bing Entity Search: 根據搜尋的字詞識別最相關的實體。
    • 實體: 名人、地方、電影、電視節目、電玩遊戲、書籍、當地企業等等。
  • Bing Autosuggest: 輸入關鍵詞的部分內容後,就有提示詞供使用者選擇。這功能就像在coding時,一個很長的 function name,輸入幾個字後,就有推薦列供開發人員選擇。
  • Bing Spell Check: 如果有打錯字的情況發生,自動修正輸入的字詞。

給 Bing Web Search 一個解釋

用大家常用的 Google 搜尋引擎來解釋,如果是在 Google 首頁搜尋,則會出現所有的搜尋結果。
https://ithelp.ithome.com.tw/upload/images/20200920/2012968908gSXeSx0J.jpg

若是將選項調成影片,則只會出現所有影片的搜尋結果。

https://ithelp.ithome.com.tw/upload/images/20200920/201296892WCplFHLcQ.jpg

所以,如果沒有要查詢特定種類的搜尋結果,就直接使用Bing Web Search,若是要查詢特定種類,像是新聞、影片、圖片等等,就再使用Bing 其他 Search。若要改為以圖搜尋,則可以使用Bing Visual Search
https://ithelp.ithome.com.tw/upload/images/20200920/20129689ER69lo7dmp.png

用 Python 程式碼簡單實作一個範例

前置步驟

0.1 準備好一個 Azure Account

0.2 建立好 Python 環境

0.3 打開 terminal (Powershell or CMD),輸入以下指令

pip install requests

在 Azure Portal 上建立 Bing Search Service

1.1 前往 Azure Portal,並搜尋 Bing Search
https://ithelp.ithome.com.tw/upload/images/20200920/20129689RgNnTHWwHw.jpg

1.2 自己完成以下的設定
https://ithelp.ithome.com.tw/upload/images/20200920/201296895fEPOmmB4Q.jpg

1.3 待建立完成後,找到你的資源,複製 key
https://ithelp.ithome.com.tw/upload/images/20200920/20129689alqXo0b42v.jpg

寫一個簡單的小程式

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 的服務,我們明天見。/images/emoticon/emoticon29.gif


上一篇
【Day04】Speech Service
下一篇
【Day06】QnA Maker (1/2)
系列文
利用Python開發一個以Azure服務為基底的Chat Bot30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言