Building a Text Categorization API with TensorFlow.NET in ASP.NET Core

Construindo uma API de categorização de texto com TensorFlow.NET no ASP.NET Core

Construindo uma API de categorização de texto com TensorFlow.NET no ASP.NET Core

Introdução

No design de aplicações web modernas, a categorização de texto é um recurso crucial que pode ajudar a organizar, filtrar e compreender grandes volumes de dados textuais. Este tutorial guiará você na criação de uma API de categorização de texto poderosa usando TensorFlow.NET e ASP.NET Core. Ao final, você terá uma API funcional que pode categorizar texto usando um modelo TensorFlow pré-treinado.

Pré-requisitos

Antes de entrarmos, certifique-se de ter o seguinte:

  • Conhecimento básico do ASP.NET Core.
  • Uma instalação funcional do .NET SDK.
  • Python (para treinar o modelo TensorFlow).

Etapa 1: Configurar seu projeto de API Web ASP.NET Core

Comece criando um novo projeto ASP.NET Core Web API:

 dotnet new webapi -n TextCategorizationApi
 cd TextCategorizationApi

Abra o projeto no seu IDE preferido (por exemplo, Visual Studio ou Visual Studio Code).

Etapa 2: Adicionar os pacotes necessários

Em seguida, instale o TensorFlow.NET e as dependências necessárias:

dotnet add package TensorFlow.NET
 dotnet add package SciSharp.TensorFlow.Redist

Etapa 3: Prepare seu modelo TensorFlow

Se você não tiver um modelo TensorFlow pré-treinado, poderá treinar um usando Python. Aqui está um script de exemplo para treinar e salvar um modelo de classificação de texto:

 import tensorflow as tf 
de tensorflow . keras . pré-processamento . importação de texto Tokenizer
 de tensorflow . keras . pré-processamento . sequência importar pad_sequences
 de tensorflow . keras . modelos importar sequencial 
de tensorflow . keras . camadas importar Incorporação , LSTM , Denso
 importar numpy como np

 # Dados de treinamento de exemplo 
textos = [ "Isto é positivo" , "Isto é negativo" , "Muito feliz" , "Muito triste" ] 
rótulos = [ 1 , 0 , 1 , 0 ]

 tokenizer = Tokenizador ( num_words = 1000 ) 
tokenizador . fit_on_texts ( textos )
 sequências = tokenizador . textos_para_sequências ( textos )
 dados = pad_sequences ( sequências , maxlen = 10 )
 
rótulos = np . array ( rótulos )

 modelo = Sequencial ( [ 
Incorporação ( 1000 , 64 , input_length = 10 ) ,
 LSTM ( 64 ) , 
Denso ( 1 , ativação = 'sigmoide' )
 ] )
 
modelo . compilar ( otimizador = 'adam' , perda = 'binary_crossentropy' , métricas = [ 'precisão' ] ) 
modelo . ajuste ( dados , rótulos , épocas = 5 )

 # Salvar o modelo
 modelo . salvar ( 'modelo_de_categorização_de_texto' )

Converta e salve o modelo no formato TensorFlow SavedModel:

model . save ( 'saved_model' )
 

Etapa 4: implementar o serviço TensorFlow no ASP.NET Core

Crie um serviço para carregar e usar o modelo TensorFlow:

 // Services/TensorFlowService.cs
 using System ; 
usando System . Linq ;
 usando NumSharp ;
 usando Tensorflow ;
 usando Tensorflow estático . Vinculação ; 
usando TextCategorizationApi . Modelos ;

 classe pública TensorFlowService
 {
 string privada somente leitura _modelPath ; 
Sessão privada somente leitura _session ;
 privado somente leitura Gráfico _gráfico ;

 TensorFlowService público ( string modelPath )
 { 
_modelPath = caminho do modelo ;
 _graph = novo gráfico ( ) . como padrão ( ) ; 
_session = tf . Sessão ( _graph ) ; 
TF . trem . import_meta_graph ( $" { _modelPath } /saved_model.meta" ) ; 
TF . trem . Economizador ( ) . restaurar ( _session , _modelPath ) ;
 }
 
string pública PredictCategory ( string texto )
 {
 // Tokenize e preencha o texto de entrada como no script de treinamento 
var tokens = TokenizeAndPad ( texto ) ; 
var inputTensor = _graph . OperationByName ( "input_1" ) ; // Ajuste de acordo com o nome de entrada do seu modelo 
var outputTensor = _graph . OperationByName ( "dense_2/Sigmoid" ) ; // Ajuste de acordo com o nome de saída do seu modelo
 
var resultado = _session . executar ( outputTensor , novo FeedItem ( inputTensor , tokens ) ) ;
 
// Assume classificação binária: 0 ou 1 
retornar resultado [ 0 ] . ToString ( ) == "1" ? "Positivo" : "Negativo" ;
 }
 
NDArray privado TokenizeAndPad ( string texto )
 {
 // Implemente a mesma lógica de tokenização e preenchimento do script Python
 // Esta é uma versão simplificada, você pode precisar ajustá-la com base no seu tokenizador atual 
var tokens = texto . Dividir ( '' ) . Selecionar ( palavra => ( float ) palavra . ObterHashCode ( ) % 1000 ) . ToArray ( ) ; 
var paddedTokens = new float [ 10 ] ; // Ajuste para o comprimento máximo da sua sequência 
Matriz . Copiar ( tokens , paddedTokens , Math . Min ( tokens . Length , paddedTokens . Length ) ) ; 
retornar np . array ( novo [ ] { paddedTokens } ) ;
 }
 }

Etapa 5: Registre o serviço TensorFlow em Startup.cs

Adicione o seguinte código para registrar o serviço TensorFlow:

 public void ConfigureServices ( IServiceCollection services )
 { 
serviços . AddControllers ( ) ;
 var modelPath = "caminho_para_seu_modelo" ; 
serviços . AddSingleton ( novo TensorFlowService ( modelPath ) ) ;
 } 

Etapa 6: Crie um controlador para usar o serviço TensorFlow

Crie um controlador para lidar com previsões:

// Controllers/PredictController.cs
using Microsoft.AspNetCore.Mvc;
using TextCategorizationApi.Models;
using TextCategorizationApi.Services;
 
[ Rota ( "api/[controlador]" ) ]
 [ ApiController ] 
classe pública PredictController : ControllerBase
 {
 TensorFlowService privado somente leitura _tensorFlowService ;
 
público PredictController ( TensorFlowService tensorFlowService )
 {
 _tensorFlowService = tensorFlowService ;
 }

 [ HttpPost ] 
public ActionResult Predict ( [ FromBody ] TextData entrada )
 { 
var categoria = _tensorFlowService . PredictCategory ( entrada . Texto ) ; 
retornar Ok ( novo { entrada . Texto , Categoria = categoria } ) ;
 }
 }

Etapa 7: Teste sua API

Execute sua API:

dotnet run

Use uma ferramenta como Postman ou cURL para enviar solicitações ao seu endpoint de API:

Exemplo de solicitação usando o Postman:

  • URL: http://localhost:5000/api/predict
  • Método: PUBLICAR
  • Corpo:
     {
     "text" : "This is a sample text to categorize."
     }
    

Conclusão

Neste artigo, explicamos como criar uma API de categorização de texto usando TensorFlow.NET e ASP.NET Core. Aproveitando o poder dos recursos de aprendizado de máquina do TensorFlow, você pode aprimorar seus aplicativos .NET com recursos avançados de análise de texto. Seja para organizar o feedback do usuário, filtrar conteúdo ou obter insights de dados textuais, esta API fornece uma base sólida para suas necessidades de categorização de texto.

Voltar para o blogue
  • ChatGPT Uncovered Podcast

    Podcast descoberto do ChatGPT

    Pedro Martins

    Podcast descoberto do ChatGPT Podcast descoberto do ChatGPT Explorando as fronteiras dos modelos de conversação de IA Episódio 1: Compreendendo o ChatGPT Publicado em: 15 de maio de 2023 Seu...

    Podcast descoberto do ChatGPT

    Pedro Martins

    Podcast descoberto do ChatGPT Podcast descoberto do ChatGPT Explorando as fronteiras dos modelos de conversação de IA Episódio 1: Compreendendo o ChatGPT Publicado em: 15 de maio de 2023 Seu...

  • Power Apps In-Depth Podcast

    Podcast detalhado do Power Apps

    Pedro Martins

    Podcast detalhado do Power Apps Podcast detalhado do Power Apps Explorando os recursos do Microsoft Power Apps Episódio 1: Introdução ao Power Apps Publicado em: 20 de abril de 2023...

    Podcast detalhado do Power Apps

    Pedro Martins

    Podcast detalhado do Power Apps Podcast detalhado do Power Apps Explorando os recursos do Microsoft Power Apps Episódio 1: Introdução ao Power Apps Publicado em: 20 de abril de 2023...

  • Exploring Power Pages Podcast

    Explorando o podcast Power Pages

    Pedro Martins

    Explorando o podcast Power Pages Explorando o podcast Power Pages Mergulhando no mundo das Power Pages da Microsoft Episódio 1: Primeiros passos com Power Pages Publicado em: 10 de março...

    Explorando o podcast Power Pages

    Pedro Martins

    Explorando o podcast Power Pages Explorando o podcast Power Pages Mergulhando no mundo das Power Pages da Microsoft Episódio 1: Primeiros passos com Power Pages Publicado em: 10 de março...

1 de 3