Reconhecimento de Entidade de Código Aberto para Línguas Indianas (NER) | Blog da Haptik Tech

Haptik em Tutoriais bot seguir mar 20 · 4 min ler

Um dos principais componentes dos aplicativos de PNL mais bem-sucedidos é o módulo de Reconhecimento de Entidade Nomeada (NER, Named Entity Recognition), que identifica precisamente as entidades em texto, como data, hora, local, quantidades, nomes e especificações do produto. Existem sistemas sofisticados já existentes para NER como SPACY , Stanford NER , etc. mas a maioria deles são construídos com propósito geral para uma ampla gama de aplicações de PNL como Information Retrieval, classificação de documentos e outras aplicações de análise de dados não estruturados. Na Haptik, nos concentramos em melhorar continuamente as capacidades de PNL de nossa plataforma de conversação, que movimenta mais de alguns milhões de transações diariamente. Essas conversas estão espalhadas por centenas de bots corporativos construídos para diferentes casos de uso, como suporte ao cliente, e-commerce, etc. Portanto, construir um sistema NER preciso e confiável sob medida para IA de conversação sempre foi uma das principais áreas de foco do equipe de engenharia no Haptik.

Há cerca de 3 anos abrimos um dos nossos principais frameworks, o Chatbot NER , que é personalizado para suportar o reconhecimento de entidades em mensagens de texto. Você pode ler mais sobre isso aqui . Depois de fazer uma pesquisa minuciosa sobre os sistemas de reconhecimento de entidade nomeada (NER) existentes, sentimos a forte necessidade de construir uma estrutura que possa apoiar o reconhecimento de entidades para idiomas indianos. Isso nos levou a atualizar nosso próprio módulo NER, ou seja, o Chatbot NER para a versão V2 para dimensionar suas funcionalidades em idiomas locais. O foco principal deste blog é ajudá-lo a começar a usar os recursos básicos do Chatbot NER para o inglês e outros 5 idiomas indianos e seu código de forma mista.

Na versão 1, fornecemos suporte para os seguintes tipos de entidade:

  1. Numeral : Entidades que lidam com o numeral ou números como temperatura, orçamentos, tamanho, quantidades etc.
  2. Padrão : Entidades que usam padrões ou expressões regulares, como email, phone_number, PNR.
  3. Temporal : Entidades para detecção de hora e data.
  4. Textual : Detecção de entidades observando o dicionário ou a estrutura da sentença. Esta detecção contém principalmente a detecção de entidades como cozinha, pratos, restaurantes, cidade, localização, etc.

Na versão 2, estendemos o suporte para todos os tipos de entidades acima (exceto entidades de padrão, pois são independentes de idioma) nos cinco idiomas indianos a seguir:

  • hindi
  • Marathi
  • Gujarati
  • Tâmil
  • bengali

A seleção dos idiomas acima foi baseada na disponibilidade de especialistas lingüísticos em idiomas indianos que nos ajudaram na organização de dados de treinamento para dimensionar entidades.

Etapas de instalação

Temos uma configuração baseada no Docker para o módulo Chatbot NER , que pode ser configurada em seu sistema em menos de 5 minutos, apenas seguindo as etapas de instalação fornecidas aqui .

Exemplos de API

Abaixo estão os exemplos de shell do Django de detecções de datas em hindi em Devanagari e script em latim:

Detecção no script Devanagari:

 >> de ner_v2.detector.temporal.date.date_detection import DateDetector 
>> detector = DateDetector (entity_name = 'data', idioma = 'oi') # aqui o idioma será o código ISO 639-1
>> detector.detect_entity (text = '???? ??????? ?? ???? ?????? ??')
>> {'entity_value': [{'dd': 12, 'mm': 10, 'yy': 2018}], 'original_text': ['???? ???????']}

Detecção de roteiro latino:

 >> de ner_v2.detector.temporal.date.date_detection import DateDetector 
>> detector = DateDetector (entity_name = 'data', idioma = 'oi') # aqui o idioma será o código ISO 639-1
>> detector.detect_entity (texto = 'agla mangalvar ko mera aniversário hai')
>> {'entity_value': [{'dd': 12, 'mm': 10, 'yy': 2018}], 'original_text': ['agla mangalvar']}

Você pode seguir a estrutura abaixo para fazer uma solicitação de onda para o exemplo acima:

 >> curl 'http: // localhost: 8081 / v2 / data? mensagem = ???? ??????? ?? ???? ?????? ?? & source_language = hi' 

Qual é o próximo?

Nossa equipe está trabalhando ativamente e ampliaremos o suporte para mais idiomas indianos nos próximos meses, conforme mencionado em nosso marco de repositório. Também planejamos adicionar processamento em lote, mais otimizações e melhores modelos daqui para frente.

Esperamos que o Chatbot NER ajude você a adicionar mais utilitários ao seu Bot e facilitar o processo de detecção de entidades. Compartilhe seus comentários para que possamos melhorar o mesmo. Além disso, se você deseja entender os detalhes da estrutura e contribuir com dados ou código para ela, consulte nossas diretrizes de contribuição. Vamos esperar que este repositório surja como um recurso poderoso e contribua para a comunidade de pesquisa e engenharia.

Para qualquer dúvida ou suporte relacionado a este repositório, deixe seus comentários abaixo.

Além disso, não se esqueça de que estamos contratando ativamente pesquisadores e engenheiros. Então, se você estiver interessado, confira nossa página de carreiras.