Amazon Netuno ML é um recurso de aprendizado de máquina (ML) de Amazon Netuno que ajuda você a fazer previsões precisas e rápidas sobre os dados do gráfico. Sob o capô, o Neptune ML usa Graph Neural Networks (GNNs) para aproveitar simultaneamente a estrutura do gráfico e as propriedades de nó/borda para resolver a tarefa em questão. Os métodos tradicionais usam apenas propriedades e nenhuma estrutura de grafo (por exemplo, XGBoost, Redes Neurais), ou apenas estrutura de grafo e nenhuma propriedade (por exemplo, node2vec, Label Propagation). Para manipular melhor as propriedades do nó/borda, os algoritmos de ML exigem que os dados sejam dados numéricos bem comportados, mas os dados brutos em um banco de dados podem ter outros tipos, como texto bruto. Para fazer uso desses outros tipos de dados, precisamos de etapas de processamento especializadas que os convertam de seu tipo nativo em dados numéricos, e a qualidade dos resultados de ML depende fortemente da qualidade dessas transformações de dados. Texto bruto, como frases, estão entre os tipos mais difíceis de transformar, mas o progresso recente no campo do Processamento de Linguagem Natural (PLN) levou a métodos fortes que podem lidar com texto proveniente de vários idiomas e uma ampla variedade de tamanhos.
A partir da versão 1.1.0.0, o Neptune ML suporta vários codificadores de texto (texto_fasttext, texto_sbert, texto_palavra2vec e text_tfidf), que traz os benefícios dos avanços recentes em NLP e permite suporte para propriedades de texto multilíngue, bem como requisitos adicionais de inferência em torno de idiomas e comprimento de texto. Por exemplo, em um caso de uso de recomendação de emprego, os postos de trabalho em diferentes países podem ser descritos em diferentes idiomas e a extensão das descrições de cargos varia consideravelmente. Além disso, o Neptune ML suporta um auto opção que escolhe automaticamente o melhor método de codificação com base nas características do recurso de texto nos dados.
Neste post, ilustramos o uso de cada codificador de texto, comparamos suas vantagens e desvantagens e mostramos um exemplo de como escolher os codificadores de texto certos para uma tarefa de recomendação de trabalho.
O que é um codificador de texto?
O objetivo da codificação de texto é converter as propriedades de borda/nó baseadas em texto no Neptune em vetores de tamanho fixo para uso em modelos de aprendizado de máquina downstream para tarefas de classificação de nó ou previsão de link. O comprimento do recurso de texto pode variar muito. Pode ser uma palavra, frase, frase, parágrafo ou até mesmo um documento com várias frases (o tamanho máximo de uma única propriedade é 55 MB no Neptune). Além disso, os recursos de texto podem estar em diferentes idiomas. Também pode haver frases que contenham palavras em vários idiomas diferentes, que definimos como mudança de código.
A partir da versão 1.1.0.0, o Neptune ML permite que você escolha entre vários codificadores de texto diferentes. Cada codificador funciona de forma ligeiramente diferente, mas tem o mesmo objetivo de converter um campo de valor de texto do Neptune em um vetor de tamanho fixo que usamos para construir nosso modelo GNN usando o Neptune ML. Os novos codificadores são os seguintes:
- texto_fasttext (novo) – Usos texto rápido codificação. FastText é uma biblioteca para aprendizagem de representação de texto eficiente.
text_fasttext
é recomendado para recursos que usam um e apenas um dos cinco idiomas suportados pelo fastText (inglês, chinês, hindi, espanhol e francês). otext_fasttext
método pode opcionalmente tomar omax_length
campo, que especifica o número máximo de tokens em um valor de propriedade de texto que será codificado, após o qual a string será truncada. Você pode considerar um token como uma palavra. Isso pode melhorar o desempenho quando os valores da propriedade de texto contêm strings longas, porque semax_length
não for especificado, fastText codifica todos os tokens, independentemente do comprimento da string. - texto_sbert (novo) – Usa a Frase BERT (SBERT) método de codificação. SBERT é um tipo de método de incorporação de sentenças usando os modelos de aprendizagem de representação contextual, BERT-Networks.
text_sbert
é recomendado quando o idioma não é suportado portext_fasttext
. O Neptune suporta dois métodos SBERT:text_sbert128
, que é o padrão se você apenas especificartext_sbert
etext_sbert512
. A diferença entre eles é o número máximo de tokens em uma propriedade de texto que são codificados. otext_sbert128
codificação codifica apenas os primeiros 128 tokens, enquantotext_sbert512
codifica até 512 tokens. Como resultado, usandotext_sbert512
pode exigir mais tempo de processamento do quetext_sbert128
. Ambos os métodos são mais lentos do quetext_fasttext
. - texto_palavra2vec - Usos Palavra2Old algoritmos originalmente publicados pelo Google para codificar texto. Word2Vec suporta apenas inglês.
- text_tfidf – Usa uma frequência de documento inversa de frequência de termo (TF-IDF) vetorizador para codificar texto. A codificação TF-IDF suporta recursos estatísticos que as outras codificações não suportam. Ele quantifica a importância ou relevância das palavras em uma propriedade de nó entre todos os outros nós.
Observe que text_word2vec
e text_tfidf
eram suportados anteriormente e os novos métodos text_fasttext
e text_sbert
são recomendados sobre os métodos antigos.
Comparação de diferentes codificadores de texto
A tabela a seguir mostra a comparação detalhada de todas as opções de codificação de texto suportadas (text_fasttext
, text_sbert
e text_word2vec
). text_tfidf
não é um método de codificação baseado em modelo, mas sim uma medida baseada em contagem que avalia a relevância de um token (por exemplo, uma palavra) para os recursos de texto em outros nós ou bordas, portanto, não incluímos text_tfidf
para comparação. Recomendamos o uso text_tfidf
quando você deseja quantificar a importância ou relevância de algumas palavras em um nó ou propriedade de borda entre todas as outras propriedades de nó ou borda.)
. | . | texto_fasttext | texto_sbert | texto_palavra2vec |
Capacidade do modelo | Idioma suportado | Inglês, chinês, hindi, espanhol e francês | Mais de 50 idiomas | Inglês |
Pode codificar propriedades de texto que contenham palavras em diferentes idiomas | Não | Sim | Não | |
Suporte de comprimento máximo | Sem limite máximo de comprimento | Codifica a sequência de texto com o comprimento máximo de 128 e 512 | Sem limite máximo de comprimento | |
Custo de tempo | Carregando | Aproximadamente 10 segundos | Aproximadamente 2 segundos | Aproximadamente 2 segundos |
Inferência | pomposidade | Devagar | Médio |
Observe as seguintes dicas de uso:
- Para valores de propriedade de texto em inglês, chinês, hindi, espanhol e francês,
text_fasttext
é a codificação recomendada. No entanto, ele não pode lidar com casos em que a mesma frase contém palavras em mais de um idioma. Para outras línguas além das cinco quefastText
suporta, usatext_sbert
codificação. - Se você tiver muitas strings de texto de valor de propriedade maiores que, por exemplo, 120 tokens, use o
max_length
campo para limitar o número de tokens em cada string quetext_fasttext
codifica.
Para resumir, dependendo do seu caso de uso, recomendamos o seguinte método de codificação:
- Se suas propriedades de texto estiverem em um dos cinco idiomas suportados, recomendamos usar
text_fasttext
devido à sua rápida inferência.text_fasttext
são as opções recomendadas e você também pode usartext_sbert
nas duas exceções seguintes. - Se suas propriedades de texto estiverem em idiomas diferentes, recomendamos usar
text_sbert
porque é o único método suportado que pode codificar propriedades de texto contendo palavras em vários idiomas diferentes. - Se suas propriedades de texto estiverem em um idioma que não seja um dos cinco idiomas suportados, recomendamos usar
text_sbert
porque suporta mais de 50 idiomas. - Se o comprimento médio de suas propriedades de texto for maior que 128, considere usar
text_sbert512
ortext_fasttext
. Ambos os métodos podem usar codificar sequências de texto mais longas. - Se suas propriedades de texto estiverem apenas em inglês, você pode usar
text_word2vec
, mas recomendamos o usotext_fasttext
por sua rápida inferência.
Demonstração de caso de uso: tarefa de recomendação de trabalho
O objetivo da tarefa de recomendação de emprego é prever para quais empregos os usuários se candidatarão com base em seus aplicativos anteriores, informações demográficas e histórico de trabalho. Esta postagem usa um conjunto de dados Kaggle aberto. Construímos o conjunto de dados como um gráfico do tipo três nós: trabalho, usuário e cidade.
Um trabalho é caracterizado por seu título, descrição, requisitos, cidade localizada e estado. Um usuário é descrito com as propriedades de especialização, tipo de graduação, número de histórico de trabalho, número total de anos de experiência de trabalho e muito mais. Para este caso de uso, o título do trabalho, a descrição do trabalho, os requisitos do trabalho e as especialidades estão todos na forma de texto.
No conjunto de dados, os usuários têm as seguintes propriedades:
- Estado – Por exemplo, CA ou 广东省 (chinês)
- Principal – Por exemplo, Gestão de Recursos Humanos ou Lic Cytura Fisica (espanhol)
- Tipo de grau – Por exemplo, bacharelado, mestrado, doutorado ou nenhum
- Contagem de histórico de trabalho – Por exemplo, 0, 1, 16 e assim por diante
- Total de anos de experiência – Por exemplo, 0.0, 10.0 ou NAN
Os trabalhos têm as seguintes propriedades:
- Título – Por exemplo, Assistente Administrativo ou Lic Cultura Física (espanhol).
- Descrição – Por exemplo, “Este cargo de Assistente Administrativo é responsável por desempenhar uma variedade de funções de apoio administrativo e administrativo nas áreas de comunicação, …” O número médio de palavras em uma descrição é de cerca de 192.2.
- Requisitos – Por exemplo, “REQUISITOS DO TRABALHO: 1. Atenção aos detalhes; 2.Capacidade de trabalhar em um ambiente de ritmo acelerado;3.Faturamento…”
- Estado: – Por exemplo, CA, NY e assim por diante.
O tipo de nó cidade como Washington DC e Orlando FL só tem o identificador para cada nó. Na seção a seguir, analisamos as características de diferentes recursos de texto e ilustramos como selecionar os codificadores de texto adequados para diferentes propriedades de texto.
Como selecionar diferentes codificadores de texto
Para o nosso exemplo, o Principal e Título as propriedades estão em vários idiomas e têm sequências de texto curtas, então text_sbert
é recomendado. O código de exemplo para o parâmetros de exportação é o seguinte. Para o text_sbert
tipo, não há outros campos de parâmetro. Aqui nós escolhemos text_sbert128
exceto text_sbert512
, porque o comprimento do texto é relativamente menor que 128.
A Descrição e Requisitos As propriedades geralmente estão em sequências de texto longo. O comprimento médio de uma descrição é de cerca de 192 palavras, que é maior do que o comprimento máximo de entrada de text_sbert
(128). Podemos usar text_sbert512
, mas pode resultar em inferência mais lenta. Além disso, o texto está em um único idioma (inglês). Portanto, recomendamos text_fasttext
com o en valor de idioma devido à sua inferência rápida e comprimento de entrada não limitado. O código de exemplo para o parâmetros de exportação é o seguinte. o text_fasttext
codificação pode ser personalizada usando língua e comprimento máximo. O language
valor é necessário, mas max_length
é opcional.
Mais detalhes dos casos de uso de recomendação de trabalho podem ser encontrados no Tutorial do notebook Netuno.
Para fins de demonstração, selecionamos um usuário, ou seja, o usuário 443931, que possui mestrado em 'Gestão e Recursos Humanos'. O usuário se candidatou a cinco empregos diferentes, intitulados “Gerente de Recursos Humanos (RH)”, “Generalista de RH”, “Gerente de Recursos Humanos”, “Administrador de Recursos Humanos” e “Especialista Sênior de Folha de Pagamento”. Para avaliar o desempenho da tarefa de recomendação, excluímos 50% dos trabalhos de aplicação (as bordas) do usuário (aqui excluímos “Administrador de Recursos Humanos” e “Gerente de Recursos Humanos (RH)) e tentamos prever os melhores 10 vagas para as quais este usuário provavelmente se candidatará.
Depois de codificar os recursos do trabalho e os recursos do usuário, realizamos uma tarefa de previsão de link treinando um modelo de rede convolucional de grafos relacionais (RGCN). O treinamento de um modelo Neptune ML requer três etapas: processamento de dados, treinamento de modelo e criação de endpoint. Após a criação do endpoint de inferência, podemos fazer recomendações para o usuário 443931. Dos 10 principais trabalhos previstos para o usuário 443931 (ou seja, "Generalista de RH", "Gerente de Recursos Humanos (RH)", "Especialista em Folha de Pagamento Sênior", " Administrador de Recursos”, “Analista de RH”, et al.), observamos que os dois trabalhos excluídos estão entre as 10 previsões.
Conclusão
Neste post, mostramos o uso dos codificadores de texto recém-suportados no Neptune ML. Esses codificadores de texto são simples de usar e podem suportar vários requisitos. Resumindo,
- text_fasttext é recomendado para recursos que usam um e apenas um dos cinco idiomas suportados por text_fasttext.
- text_sbert é recomendado para texto que text_fasttext não suporta.
- text_word2vec suporta apenas inglês e pode ser substituído por text_fasttext em qualquer cenário.
Para obter mais detalhes sobre a solução, consulte o GitHub repo. Recomendamos usar os codificadores de texto nos dados do gráfico para atender às suas necessidades. Você pode simplesmente escolher um nome de codificador e definir alguns atributos de codificador, mantendo o modelo GNN inalterado.
Sobre os autores
Jian Zhang é um cientista aplicado da AWS AI Research and Education (AIRE). Ela trabalha na solução de aplicativos do mundo real usando algoritmos de aprendizado de máquina, especialmente linguagem natural e problemas relacionados a gráficos.
- Avançado (300)
- AI
- arte ai
- gerador de arte ai
- ai robô
- Amazon Netuno
- inteligência artificial
- certificação de inteligência artificial
- inteligência artificial em bancos
- robô de inteligência artificial
- robôs de inteligência artificial
- software de inteligência artificial
- Aprendizado de máquina da AWS
- blockchain
- conferência blockchain ai
- Coingenius
- inteligência artificial conversacional
- conferência de criptografia ai
- dall's
- deep learning
- google ai
- aprendizado de máquina
- platão
- platão ai
- Inteligência de Dados Platão
- Jogo de Platão
- PlatãoData
- jogo de platô
- escala ai
- sintaxe
- zefirnet