Use modelos de aprendizado de máquina com Elasticsearch para identificar o conteúdo
Objetivos
Databases for Elasticsearch suporta cargas de trabalho de aprendizado de máquina. Neste tutorial, você aprende a provisionar um modelo de aprendizado de máquina para uma instância do Databases for Elasticsearch e, em seguida, usa-o para extrair informações adicionais significativas de um conjunto de dados de teste. Apenas algum conhecimento básico de comandos de terminal é necessário para provisionar e entender este tutorial
Aprendizado de máquina é uma ramificação de inteligência artificial (IA) e ciência da computação que foca no uso de dados e algoritmos para imitar a maneira como os humanos aprendem, melhorando gradualmente sua precisão. Usando métodos estatísticos, os algoritmos são treinados para fazer classificações ou previsões e para descobrir insights chave em projetos de mineração de dados.
Estes algoritmos de aprendizagem são conhecidos como "modelos". Neste tutorial, usamos um modelo de Processamento de Linguagem Natural (NLP) pré-construído, que extrai o significado de sentenças em linguagem escrita (Natural). Especificamente, usamos o modelo distilbert-base-uncased-finetuned-conll03-english que tenta identificar os nomes de pessoas, locais e organizações no texto.
Muitos outros modelos são especializados na análise de outras formas de dados, como extração de texto de imagens, conversão de fala para texto ou identificação de objeto em imagens. Para obter uma lista completa de modelos suportados pela pilha Elástica, consulte Modelos NLP de terceiros compatíveis. Os modelos podem ser treinados em conhecimento específico de domínio, mas o treinamento de novos modelos está além do escopo deste tutorial.
Este tutorial o orienta no processo de:
-
Fornecimento de uma instância do Databases for Elasticsearch
-
Carregamento de um modelo de aprendizado de máquina
-
Fazendo upload de um conjunto de dados de títulos e resumos de artigos de notícias
-
Passando o conjunto de dados por meio do modelo NLP
-
Consultar os dados aumentados para ver os resultados do modelo nos dados.
Consulte os outros tutoriais nesta série de aprendizado de máquina Elasticsearch:
Entrando em ação
Para iniciar o processo de fornecimento, instale algumas ferramentas de produtividade obrigatórias:
Obter uma chave de API para provisionar a infraestrutura em sua conta
Siga estas etapas para criar uma chave de API do IBM Cloud que permite que o Terraform provisione a infraestrutura em sua conta. É possível criar até 20 chaves API.
Por motivos de segurança, a chave API está disponível apenas para ser copiada ou transferida por download no momento da criação. Se a chave API for perdida, uma nova chave API deverá ser criada.
Clonar o projeto.
Clone o projeto do repositório doGitHub.
git clone https://github.com/IBM/elasticsearch-nlp-ml-tutorial.git
cd elasticsearch-nlp-ml-tutorial/terraform
Instalar a infraestrutura
Provisione sua instância do Databases for Elasticsearch.
-
Em sua máquina, crie um documento denominado
terraform.tfvars, com os campos a seguir:ibmcloud_api_key = "<your_api_key_from_step_1>" region = "<your_region>" es_password = "<make_up_a_password>"O documento
terraform.tfvarscontém variáveis que talvez você queira manter em segredo, portanto, ele é ignorado pelo repositório GitHub. -
Instale a infraestrutura com o seguinte comando:
terraform init terraform apply --auto-approveO script do Terraform gera os dados de configuração necessários para executar o aplicativo, portanto, copie-os na pasta
scripts:terraform output -json >../scripts/config.json cd ../scripts
Instalar Eland
Eland é um cliente Python Elasticsearch para explorar e analisar dados em Elasticsearch.. Instale-o com um comando como:
python3 -m pip install 'eland[pytorch]'
Fazer upload e analisar dados
Este tutorial usa um pequeno conjunto de dados de 132 artigos que são obtidos dos websites BBC News e Guardian por meio de seus feeds RSS.
Eles foram transformados em um arquivo json que é formatado conforme necessário para o Elasticsearch método de upload em massa
Execute o script upload.sh, que faz o seguinte:
-
Faz upload do modelo NLP para Elasticsearch.
-
Cria um pipeline de processamento de dados no Elasticsearch que obtém quaisquer dados recebidos e os analisa para termos significativos
-
Faz upload dos dados pré-formatados para o Elasticsearch e os passa pelo pipeline para análise.
Como esta é uma demonstração, conectamos de forma insegura ao seu banco de dados. Para produção, use conexões seguras..
Para executar o script, certifique-se de estar no diretório scripts e use o comando:
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
Consultar seus dados
Agora você tem um índice chamado test que possui 132 registros. Cada um desses registros contém os dados de notícias (ID do artigo, título e resumo) e um objeto adicional chamado tags. É onde o modelo de aprendizado
de máquina inseriu quaisquer pessoas (PER), locais (LOC) ou organizações (ORG) que ele localizou no texto.
O índice também contém outro objeto, chamado ml, que mostra como o modelo funciona. Por exemplo, ele informa qual probabilidade de precisão ele atribuiu a cada um dos termos localizados.
Por exemplo, utilize esta consulta para recuperar um único registro para inspecionar:
curl -k "$ES/test/_search?size=1" | jq .
Esse modelo de aprendizado de máquina gerou informações valiosas. Por exemplo, se você executar um Web site de notícias, poderá gerar páginas de conteúdo baseado em tag. Se, por exemplo, seus usuários acessarem uma página como www.mynewssite.com/tag/rishi-sunak, tudo o que seu sistema teria que fazer é procurar por essa tag no índice de artigos de notícias para recuperar uma lista daqueles que mencionam Rishi Sunak:
curl -kX POST -d@body.json -H "Content-Type: application/json" "$ES/test/_search" | jq .
Há um arquivo body.json no diretório scripts que você pode contornar para fazer procuras diferentes.
Conclusão
Este tutorial mostra como usar o Databases for Elasticsearch para aproveitar o poder do aprendizado de máquina para gerar informações adicionais valiosas de seus dados. Esperamos que você possa usá-lo como trampolim para explorar outras formas de aumentar e criar valor a partir de seus dados.
Para parar de incorrer em encargos, não se esqueça de remover toda a infraestrutura implementada. Em seu diretório terraform, use o comando:
terraform destroy