搭配使用機器學習模型與 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 機器學習系列中的其他指導教學:
提高生產力
若要開始佈建程序,請安裝一些必須具有生產力的工具:
- 您需要有 IBM Cloud 帳戶。
- Terraform-編纂及佈建基礎架構。
- Python
- jq-處理配置檔。
取得 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 實例。
-
在機器上,建立名為
terraform.tfvars的文件,並包含下列欄位:ibmcloud_api_key = "<your_api_key_from_step_1>" region = "<your_region>" es_password = "<make_up_a_password>"terraform.tfvars文件包含您可能想要保留密碼的變數,因此 GitHub 儲存庫會忽略它。 -
使用下列指令安裝基礎架構:
terraform init terraform apply --auto-approveTerraform 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