A resolução de entidades (ER) é o processo de desambiguação de uma entidade. É alcançada mapeando uma menção textual ao nome real mais adequado presente em uma base de conhecimento de consulta (KB, knowledge base). Por exemplo, resolver `madrid fc` para `Real Madrid Club de Fútbol,` no qual o primeiro nome é um dos jeitos de mencionar o segundo. A resolução de entidades é frequentemente conhecida por outros nomes, como correspondência de entidades, vinculação de entidades, vinculação de registros ou desduplicação de registros. A resolução de entidades está disponível como parte da Pipeline NLP da MindMeld e é usada para eliminar a ambiguidade de qualquer entidade identificada na inserção de usuários, comparando com uma KB pré-preenchida. Consulte a documentação oficial para saber como criar uma KB para resolver entidades e trabalhar com ela ao desenvolver um aplicativo MindMeld. Até recentemente, a MindMeld oferecia duas opções para resolução de entidades: uma baseada no mecanismo de pesquisa de texto e análise do Elastic Search e outra baseada em um algoritmo de correspondência exata simples, como uma opção alternativa. Com a crescente diversidade nos aplicativo MindMeld, essas opções podem nem sempre ser viáveis. Para dar suporte estendido, a MindMeld agora oferece duas opções adicionais para resolução de entidades: uma baseada em TF-IDF e outra baseada em representações de modelo neural pré-treinado (BERT, GloVe,fastText etc.). Vale ressaltar que essas novas opções não têm nenhuma dependência do Elastic Search (e dos serviços dele). Antes de entrar em mais detalhes sobre essas novas opções, vamos relembrar rapidamente como uma base de conhecimento de entidade é estruturada no MindMeld. O seguinte é um exemplo de blueprint de pedido de refeição com a base de conhecimento criada para eliminar a ambiguidade entre nomes de itens do cardápio:
Imagem de uma base de conhecimento para resolução de entidades
Como observamos, o campo `cname` (nome canônico) junto com o campo `whitelist` exemplificam alguns usos populares de cada item de refeição, juntamente com o campo `id` se referindo a um registro único e oficialmente reconhecível na base de conhecimento. Esses três campos constituem principalmente um objeto de entidade na KB. O texto no campo `cname` é normalmente usado em respostas de conversas e o texto no campo `whitelist`, junto com o nome canônico, servem como apelidos durante a eliminação da ambiguidade. Frequentemente, os melhores resultados de um solucionador de entidades são obtidos quando o campo `whitelist` é preenchido com detalhes (p. ex., incluindo usos alternativos, erros ortográficos, abreviações etc.). Esse tipo de curadoria pode se tornar um processo tedioso em alguns aplicativos, mas é inevitável ao lidar com entidades em um domínio altamente especializado.
Saiba mais sobre os solucionadores recém-adicionados
Em outros solucionadores além da correspondência exata, a primeira etapa é obter uma representação vetorial para o texto de entrada, que precisa ter a desambiguidade eliminada, e para todas as entradas na KB (cnames mais whitelists) que servem como apelidos para a desambiguação. Em seguida, usando alguma forma de correspondência de similaridade de vetor (por exemplo, similaridade de cosseno), os apelidos são pontuados e classificados. Nas opções de resolução de entidades recém-adicionadas, o solucionador baseado em TF-IDF seleciona uma variedade de recursos de n-gram (ou seja, recursos de texto de nível superficial) antes de calcular semelhanças de cosseno nos poucos vetores. Por outro lado, um solucionador baseado em incorporador pré-treinado combina o uso da similaridade de cosseno em representações vetoriais densas de texto. Aproveitar incorporadores pré-treinados para resolução de entidades tem algumas vantagens em relação a outras abordagens. Por exemplo, eles oferecem compreensão semântica de texto sem ter que preencher extensivamente as listas de permissões (p. ex., `performed below expectations` é equivalente a `poor performance`) e fornecer uma transição fácil para a correspondência de entidades multilíngues (p. ex., deduzir que `tercio` em espanhol é a mesma coisa que `third` em inglês). No entanto, as discrepâncias entre o pré-treinamento e a inferência, como a diferença no comprimento dos textos de entrada, colocam os incorporadores pré-treinados em desvantagem. Além disso, os tempos de inferência de modelos incorporadores podem ser maiores do que outras opções de resolução devido aos cálculos de vetor denso subjacentes. No entanto, quando ajustados de forma adequada, os modelos incorporadores podem superar outras opções de solucionador com base principalmente em recursos de texto de nível superficial. Na análise abaixo, os solucionadores baseados em incorporadores pré-treinados são comparados com os solucionadores de entidades Elastic Search e TF-IDF. Os conjuntos de dados selecionados para essa comparação envolvem a correspondência de texto de nível superficial, além da correspondência semântica.
Desempenho em diferentes solucionadores
Após testar vários conjuntos de dados criados internamente, a seguir estão os desempenhos médios de diferentes solucionadores de entidades para correspondência de entidades de texto curto. A melhor pontuação de recuperação é relatada como a medida de precisão aqui:
Desempenho em diferentes solucionadores de entidades
As variantes BERT pré-treinadas estão disponíveis como parte dos modificadores de frase Huggingface, e o gráfico apresenta as pontuações apenas das 5 variantes com melhor desempenho. Modelos de incorporação de palavras pré-treinados, como fastText, geralmente têm desempenho pior do que modelos de incorporação de BERT ou solucionadores baseados em TF-IDF. Esses baixos desempenhos podem ser atribuídos à mudança de domínio e à falta de ajuste fino. Uma análise adicional usando diferentes configurações da variante BERT com melhor desempenho (‘distilbert-base-nli-stsb-mean-tokens’) obteve os seguintes resultados:
Desempenho de diferentes configurações durante o uso da variante BERT com melhor desempenho
Os resultados mostram que as pontuações de similaridade alternadas, como BERTScore, não são concorrentes. Além disso, usar a similaridade de cosseno ao concatenar diferentes camadas do modelo BERT promove ganhos de desempenho correspondentes ao desempenho do Elastic Search. Isso é intuitivo, pois diferentes camadas BERT podem registrar informações complementares. Mesmo após a quantificação da variante BERT para menor consumo de memória e menor complexidade de tempo, o desempenho cai apenas em 2-3%. Além disso, quando avaliado em relação a dados com ruído aleatório contendo erros de ortografia no registro, o solucionador baseado em TF-IDF supera os outros. Isso pode ser devido ao conjunto diversificado de n-grams registrado por esse solucionador. (Para este experimento, os textos da lista de permissões são reutilizados como instâncias de teste e os erros de ortografia são colocados nelas. Portanto, com 0% de ruído, uma precisão de 100% é observada, pois todas as entidades de teste também estão presentes nas listas de permissões!)
Desempenho na correspondência de texto induzida por erros ortográficos
Por fim, o gráfico a seguir ilustra as diferenças nas complexidades do tempo de inferência entre as diferentes opções de solucionador: (Da direita para a esquerda: mais preciso BERT, TF-IDF, Elastic Search) Tempo de inferência por entidade quando medido em bases de conhecimento de tamanhos diferentes. O eixo X mostra o tamanho da base de conhecimento, enquanto o eixo Y mostra o tempo por entidade em milissegundos. A parte em amarelo é o tempo de inferência para codificar o texto de entrada e em verde é o tempo de inferência para o cálculo de similaridade. As complexidades de tempo do TF-IDF e Elastic Search são bastante comparáveis, enquanto a melhor variante BERT, embora quantificada, é 20 vezes mais lenta. Isso melhora para uma desaceleração de 10x quando não concatenamos as 4 camadas superiores, mas leva a uma perda de precisão.
Escolhendo e configurando um solucionador de entidades
As configurações do solucionador de entidades MindMeld consideram uma variedade de parâmetros configuráveis com base no solucionador usado. O snippet a seguir, quando colocado no `config.py` de um aplicativo, utiliza um modelo BERT pré-treinado de sua escolha a partir do Huggingface: ENTITY_RESOLVER_CONFIG = { ‘model_type’: ‘resolver’, ‘model_settings’: { ‘resolver_type’: ‘sbert_cosine_similarity’, ‘pretrained_name_or_abspath’: ‘distilbert-base-nli-stsb-mean-tokens’, … }} Você pode usar outros modelos de incorporadores ao modificar o parâmetro `embedder_type`: ENTITY_RESOLVER_CONFIG = { ‘model_type’: ‘resolver’, ‘model_settings’: { ‘resolver_type’: ‘embedder_cosine_similarity’, ‘embedder_type’: ‘glove’, … }} Você também pode especificar configurações de tempo de execução como `batch_size` ao usar um modelo incorporador, junto com configurações específicas do modelo incorporador. Para carregar um solucionador baseado em TF-IDF, você pode fazer o seguinte: ENTITY_RESOLVER_CONFIG = { ‘model_type’: ‘resolver’, ‘model_settings’: { ‘resolver_type’: ‘tfidf_cosine_similarity’, … }} Para cada objeto de entidade na KB, incorporadores especiais, que são o pool médio/máximo de todos os incorporadores de apelidos, também são calculados e usados para resolução, se configurados. Esses incorporadores especiais geralmente melhoram a precisão dos solucionadores com apenas um ligeiro aumento no custo computacional. Para ver os detalhes completos e todas as configurações possíveis, consulte a seção `Configurations` na documentação oficial.
Conclusões e trabalho futuro
No geral, o solucionador baseado no Elastic Search é recomendado, a menos que um cenário especial não permita sua utilização. Como alternativa, use solucionadores baseados em modelo incorporador quando houver um requisito para mais correspondência semântica, ou um solucionador baseado em TF-IDF se esse requisito não existir. O módulo ER no MindMeld ainda não oferece APIs para avaliar qual solucionador funciona melhor para o seu aplicativo. Fique ligado, pois planejamos adicionar esse suporte, junto com maneiras de ajustar os solucionadores baseados em modelos incorporadores. Inscreva-se no Webex Acesse nossa página inicial ou entre em contato direto conosco para obter assistência. Clique aqui para saber mais sobre as ofertas do Webex e para se inscrever em uma conta grátis.
About The Author
Sai Muralidhar JayanthiMachine Learning EngineerCisco
Sai Muralidhar Jayanthi is a Machine Learning Engineer on the MindMeld team at Cisco, where he builds production-level conversational interfaces.