搭配使用機器學習模型與 Elasticsearch,以標記內容

目標

Databases for Elasticsearch 支援機器學習工作量。 在本指導教學中,您將學習如何將機器學習模型佈建至 Databases for Elasticsearch 實例,然後使用它從測試資料集擷取有意義的其他資訊。 僅需要終端機指令的部分基本知識,即可佈建並瞭解本指導教學。

機器學習 是人工智慧 (AI) 和電腦科學的分支,著重於使用資料和演算法來模擬人類學習的方式,逐漸提高其精確度。 透過使用統計方法,會訓練演算法進行分類或預測,以及揭露資料採礦專案中的重要見解。

這些學習演算法稱為「模型」。 在本指導教學中,我們使用預先建置的 Natural Language Processing (NLP) 模型,以書面 (Natural) 語言從句子中擷取意義。 具體而言,我們使用 distilbert-base-uncased-finetuned-conll03-english 模型,嘗試在文字內識別人員、位置及組織的名稱。

許多其他模型 專門分析其他形式的資料,例如從影像擷取文字、從語音轉換到文字,或在影像中識別物件。 如需 Elastic 堆疊支援模型的完整清單,請參閱 相容協力廠商 NLP 模型。 模型可以根據網域特定知識進行訓練,但新模型的訓練超出本指導教學的範圍。

本教學引導您完成以下過程:

  • 佈建 Databases for Elasticsearch 實例

  • 上傳機器學習模型

  • 從新聞文章上傳標題和摘要的資料集

  • 透過 NLP 模型傳遞資料集

  • 查詢擴增的資料,以查看資料上的模型結果。

請參閱下列 Elasticsearch 機器學習系列中的其他指導教學:

提高生產力

若要開始佈建程序,請安裝一些必須具有生產力的工具:

取得 API 金鑰以將基礎架構佈建給您的帳戶

遵循 這些步驟 來建立 IBM Cloud API 金鑰,以讓 Terraform 將基礎架構佈建至您的帳戶。 您可以建立最多 20 個 API 金鑰。

基於安全理由,只可在建立時複製或下載 API 金鑰。 如果 API 金鑰遺失,必須建立新的 API 金鑰。

複製專案

從 GitHub 儲存庫複製專案。

git clone https://github.com/IBM/elasticsearch-nlp-ml-tutorial.git
cd elasticsearch-nlp-ml-tutorial/terraform

安裝基礎架構

佈建 Databases for Elasticsearch 實例。

  1. 在機器上,建立名為 terraform.tfvars 的文件,並包含下列欄位:

    ibmcloud_api_key = "<your_api_key_from_step_1>"
    region = "<your_region>"
    es_password  = "<make_up_a_password>"
    

    terraform.tfvars 文件包含您可能想要保留密碼的變數,因此 GitHub 儲存庫會忽略它。

  2. 使用下列指令安裝基礎架構:

    terraform init
    terraform apply --auto-approve
    

    Terraform Script 會輸出執行應用程式所需的配置資料,因此將它複製到 scripts 資料夾:

    terraform output -json >../scripts/config.json
    cd ../scripts
    

安裝 Eland

Eland 是 Python Elasticsearch 用戶端,用於在 Elasticsearch中探索及分析資料。 請使用如下指令來安裝它:

   python3 -m pip install 'eland[pytorch]'

上傳並分析資料

本指導教學使用透過 RSS 資訊來源從 BBC 新聞 及 Guardian 網站取得的 132 個文章的小型資料集。

這些已轉換為 JSON 檔案,並根據 Elasticsearch 大量上傳方法的需要進行格式化。

執行 upload.sh Script,其會執行下列動作:

  • 將 NLP 模型上傳至 Elasticsearch。

  • 在 Elasticsearch 中建立資料處理管線,以採用任何送入的資料並對其進行分析,以取得有意義的術語。

  • 將預先格式化的資料上傳至 Elasticsearch,並透過管線進行分析。

因為這是示範,所以我們不安全地連接至您的資料庫。 若為正式作業,請使用 安全連線。

若要執行 Script,請確定您位於 scripts 目錄中,並使用下列指令:

ES_PASSWORD=`cat config.json | jq -r .es_password.value`
ES_PORT=`cat config.json | jq -r .es_port.value`
ES_HOST=`cat config.json | jq -r .es_host.value`
export ES="https://admin:${ES_PASSWORD}@${ES_HOST}:${ES_PORT}"
./upload.sh

查詢您的資料

您現在具有名為 test 的索引,其具有 132 筆記錄。 其中每筆記錄都包含新聞資料 (文章 ID、標題和摘要) 和稱為 tags 的其他物件。 這是機器學習模型在文字中插入任何人員 (PER)、位置 (LOC) 或組織 (ORG) 的位置。

索引也包含另一個物件 ml,其顯示模型的部分運作方式。 例如,它會告訴您它指派給它找到的每一個術語的精確度機率。

例如,使用此查詢來擷取要檢查的單一記錄:

curl -k "$ES/test/_search?size=1" | jq .

此機器學習模型已產生有價值的資訊。 例如,如果您執行新聞網站,則可能會產生標籤型內容的頁面。 例如,如果您的使用者跳至類似於 www.mynewssite.com/tag/rishi-sunak的頁面,則您的系統只需要在新聞文章索引中依該標籤搜尋,即可擷取提及 Rishi Sunak 的那些清單:

curl -kX POST -d@body.json -H "Content-Type: application/json" "$ES/test/_search" | jq .

scripts 目錄中有一個 body.json 檔案,您可以用來進行不同的搜尋。

總結

本指導教學顯示如何使用 Databases for Elasticsearch 來駕馭機器學習的力量,以從您的資料產生寶貴的其他資訊。 我們希望您可以使用它作為跳板來探索其他方法,以從您的資料擴增並創造價值。

若要停止產生費用,請不要忘記移除所有已部署的基礎架構。 在 terraform 目錄中,使用下列指令:

terraform destroy