Os sistemas de recomendação são uma das tecnologias de aprendizado de máquina (ML) mais amplamente adotadas em aplicações do mundo real, desde redes sociais até plataformas de comércio eletrônico. Os usuários de muitos sistemas online contam com sistemas de recomendação para fazer novas amizades, descobrir novas músicas de acordo com listas de músicas sugeridas ou até mesmo tomar decisões de compra no comércio eletrônico com base nos produtos recomendados. Nas redes sociais, um caso de uso comum é recomendar novos amigos a um usuário com base nas outras conexões dos usuários. Usuários com amigos em comum provavelmente se conhecem. Portanto, eles deveriam ter uma pontuação mais alta para um sistema de recomendação propor, caso ainda não estejam conectados.
As redes sociais podem naturalmente ser expressas num gráfico, onde os nós representam pessoas, e as ligações entre pessoas, como amizade ou colegas de trabalho, são representadas por arestas. O seguinte ilustra uma dessas redes sociais. Vamos imaginar que temos uma rede social com os membros (nós) Bill, Terry, Henry, Gary e Alistair. Seus relacionamentos são representados por um link (aresta), e os interesses de cada pessoa, como esportes, artes, jogos e quadrinhos, são representados por propriedades de nós.
O objetivo aqui é prever se existe um potencial elo perdido entre os membros. Por exemplo, deveríamos recomendar uma conexão entre Henry e Terry? Olhando o gráfico, podemos ver que eles têm dois amigos em comum, Gary e Alistair. Portanto, há uma boa chance de que Henry e Terry já se conhecessem ou possam se conhecer em breve. E quanto a Henry e Bill? Eles não têm amigos em comum, mas têm alguma conexão fraca por meio das conexões de seus amigos. Além disso, ambos têm interesses semelhantes em artes, quadrinhos e jogos. Devemos promover essa conexão? Todas essas questões e intuições constituem a lógica central dos sistemas de recomendação de redes sociais.
Uma maneira possível de fazer isso é recomendar relacionamentos com base na exploração de gráficos. Em linguagens de consulta de gráficos, como Apache TinkerPop Gremlin, a implementação de conjuntos de regras, como contar amigos em comum, é relativamente fácil e pode ser usada para determinar a ligação entre Henry e Terry. No entanto, esses conjuntos de regras serão muito complicados quando quisermos levar em conta outros atributos, como propriedades do nó, força da conexão, etc. Vamos imaginar um conjunto de regras para determinar o vínculo entre Henry e Bill. Este conjunto de regras deve levar em conta os seus interesses comuns e as suas ligações fracas através de determinados caminhos no gráfico. Para aumentar a robustez, talvez seja necessário adicionar um fator de distância para favorecer as conexões fortes e penalizar as fracas. Da mesma forma, gostaríamos de ter um fator que favorecesse os interesses comuns. Em breve, os conjuntos de regras que podem revelar padrões ocultos complexos tornar-se-ão impossíveis de enumerar.
A tecnologia ML nos permite descobrir padrões ocultos aprendendo algoritmos. Um exemplo é o XGBoost, amplamente utilizado para tarefas de classificação ou regressão. No entanto, algoritmos como o XGBoost usam uma abordagem convencional de ML baseada em um formato de dados tabular. Essas abordagens não são otimizadas para estruturas de dados gráficos e exigem engenharia de recursos complexa para lidar com esses padrões de dados.
No exemplo de rede social anterior, as informações de interação gráfica são críticas para melhorar a precisão da recomendação. Graph Neural Network (GNN) é uma estrutura de aprendizado profundo (DL) que pode ser aplicada a dados gráficos para realizar tarefas de previsão em nível de borda, nível de nó ou nível de gráfico. GNNs podem aproveitar as características individuais dos nós, bem como as informações da estrutura do gráfico ao aprender a representação do gráfico e os padrões subjacentes. Portanto, nos últimos anos, os métodos baseados em GNN estabeleceram novos padrões em muitos benchmarks de sistemas de recomendação. Veja informações mais detalhadas em artigos de pesquisa recentes: Uma pesquisa abrangente sobre redes neurais gráficas e Sistemas de recomendação baseados em aprendizado de gráficos: uma revisão.
A seguir está um exemplo famoso desse caso de uso. Pesquisadores e engenheiros do Pinterest treinaram Redes neurais convolucionais gráficas para sistemas de recomendação em escala web, chamado PinSage, com três bilhões de nós representando pinos e placas e 18 bilhões de arestas. PinSage gera embeddings de alta qualidade que representam pins (marcadores visuais para conteúdo online). Eles podem ser usados para uma ampla variedade de tarefas de recomendação downstream, como pesquisas do vizinho mais próximo no espaço de incorporação aprendido para descoberta de conteúdo e recomendações.
Nesta postagem, orientaremos você sobre como usar GNNs para casos de uso de recomendação, classificando isso como um problema de previsão de link. Também ilustraremos como o Neptune ML pode facilitar a implementação. Também forneceremos código de exemplo no GitHub para treinar seu primeiro GNN com Neptune ML e fazer inferências de recomendação no gráfico de demonstração por meio de tarefas de previsão de link.
Previsão de links com redes neurais gráficas
Considerando o exemplo anterior da rede social, gostaríamos de recomendar novos amigos ao Henry. Tanto Terry quanto Bill seriam bons candidatos. Terry tem amigos mais comuns (Gary, Alistair) com Henry, mas nenhum interesse em comum. Enquanto Bill compartilha interesses comuns (artes, quadrinhos, jogos) com Henry, mas não tem amigos em comum. Qual seria a melhor recomendação? Quando enquadrado como um problema de previsão de enlace, a tarefa é atribuir uma pontuação a qualquer enlace possível entre os dois nós. Quanto maior a pontuação do link, maior a probabilidade de convergência desta recomendação. Ao aprender estruturas de links já presentes no gráfico, um modelo de previsão de links pode generalizar novas previsões de links que 'completam' o gráfico.
Os parâmetros da função f
que prevê que a pontuação do link é aprendida durante a fase de treinamento. Já que a função f
faz uma previsão para quaisquer dois nós no gráfico, os vetores de características associados aos nós são essenciais para o processo de aprendizagem. Para prever a pontuação do link entre Henry e Bill, temos um conjunto de recursos de dados brutos (artes, quadrinhos, jogos) que podem representar Henry e Bill. Transformamos isso, junto com as conexões no grafo, usando uma rede GNN para formar novas representações conhecidas como embeddings de nós. Também podemos complementar ou substituir os recursos brutos iniciais por vetores de uma tabela de pesquisa incorporada que pode ser aprendida durante o processo de treinamento. Idealmente, os recursos incorporados de Henry e Bill deveriam representar seus interesses, bem como suas informações topológicas do gráfico.
Como funcionam as GNNs
Um GNN transforma os recursos iniciais do nó em embeddings de nós usando uma técnica chamada passagem de mensagem. O processo de passagem de mensagens é ilustrado na figura a seguir. No início, os atributos ou características do nó são convertidos em atributos numéricos. No nosso caso, fazemos a codificação one-hot das características categóricas (interesses de Henry: artes, quadrinhos, jogos). Então, a primeira camada do GNN agrega todos os recursos brutos dos vizinhos (Gary e Alistair) (em preto) para formar um novo conjunto de recursos (em amarelo). Uma abordagem comum é a transformação linear de todos os recursos vizinhos, depois agregá-los por meio de uma soma normalizada e passar os resultados para uma função de ativação não linear, como ReLU, para gerar um novo conjunto de vetores. A figura a seguir ilustra como funciona a passagem de mensagens para o nó Henry. H, o algoritmo de passagem de mensagens GNN, calculará representações para todos os nós do gráfico. Posteriormente, eles são usados como recursos de entrada para a segunda camada.
A segunda camada de um GNN repete o mesmo processo. Ele pega o recurso previamente calculado (em amarelo) da primeira camada como entrada, agrega todos os novos recursos incorporados dos vizinhos de Gary e Alistair e gera vetores de recursos da segunda camada para Henry (em laranja). Como você pode ver, ao repetir o mecanismo de passagem de mensagens, estendemos a agregação de recursos para vizinhos de 2 saltos. Em nossa ilustração, nos limitamos a vizinhos de 2 saltos, mas a extensão para vizinhos de 3 saltos pode ser feita da mesma maneira, adicionando outra camada GNN.
Os embeddings finais de Henry e Bill (em laranja) são usados para calcular a pontuação. Durante o processo de treinamento, a pontuação do link é definida como 1 quando existe a aresta entre os dois nós (amostra positiva) e 0 quando as arestas entre os dois nós não existem (amostra negativa). Então, o erro ou perda entre a pontuação real e a previsão f(e1,e2)
é retropropagado nas camadas anteriores para ajustar os pesos. Assim que o treinamento for concluído, podemos contar com os vetores de recursos incorporados de cada nó para calcular suas pontuações de link com nossa função f
.
Neste exemplo, simplificamos a tarefa de aprendizagem em um gráfico homogêneo, onde todos os nós e arestas são do mesmo tipo. Por exemplo, todos os nós no gráfico são do tipo “Pessoas” e todas as arestas são do tipo “amigos de”. No entanto, o algoritmo de aprendizagem também suporta gráficos heterogêneos com diferentes tipos de nós e arestas. Podemos estender o caso de uso anterior para recomendar produtos a diferentes usuários que compartilham interações e interesses semelhantes. Veja mais detalhes neste artigo de pesquisa: Modelagem de dados relacionais com redes convolucionais de grafos.
No AWS re:Invent 2020, apresentamos Amazon Netuno ML, que permite que nossos clientes treinem modelos de ML em dados gráficos, sem necessariamente ter profundo conhecimento em ML. Neste exemplo, com a ajuda do Neptune ML, mostraremos como construir seu próprio sistema de recomendação em dados gráficos.
Treine sua rede de convolução gráfica com o Amazon Neptune ML
Neptune ML usa tecnologia de rede neural gráfica para criar, treinar e implantar automaticamente modelos de ML em seus dados gráficos. O Neptune ML oferece suporte a tarefas comuns de previsão de gráficos, como classificação e regressão de nós, classificação e regressão de bordas e previsão de links.
É alimentado por:
- Amazon Netuno: um banco de dados gráfico rápido, confiável e totalmente gerenciado, otimizado para armazenar bilhões de relacionamentos e consultar o gráfico com latência de milissegundos. O Amazon Neptune oferece suporte a três padrões abertos para a criação de aplicativos gráficos: Apache TinkerPop Gremlin, RDF SPARQL e openCypher. Saiba mais em Visão geral dos recursos do Amazon Neptune.
- Amazon Sage Maker: um serviço totalmente gerenciado que fornece a cada desenvolvedor e cientista de dados a capacidade de preparar, construir, treinar e implantar modelos de ML rapidamente.
- Biblioteca de gráficos profundos (DGL): An de código aberto, pacote Python escalonável e de alto desempenho para DL em gráficos. Ele fornece primitivas de passagem de mensagens rápidas e com uso eficiente de memória para treinar redes neurais de grafos. Neptune ML usa DGL para escolher e treinar automaticamente o melhor modelo de ML para sua carga de trabalho. Isso permite que você faça previsões baseadas em ML em dados gráficos em horas, em vez de semanas.
A maneira mais fácil de começar a usar o Neptune ML é usar o Modelo de início rápido do AWS CloudFormation. O modelo instala todos os componentes necessários, incluindo um cluster de banco de dados Neptune, e define as configurações de rede, funções IAM e instância de notebook SageMaker associada com amostras de notebook pré-preenchidas para Neptune ML.
A figura a seguir ilustra as diferentes etapas do Neptune ML para treinar um sistema de recomendação baseado em GNN. Vamos ampliar cada etapa e explorar o que ela envolve:
-
Configuração de exportação de dados
A primeira etapa em nosso processo Neptune ML é exportar os dados gráficos do cluster Neptune. Devemos especificar os parâmetros e a configuração do modelo para a tarefa de exportação de dados. Usamos o ambiente de trabalho Neptune para todas as configurações e recomendações. O ambiente de trabalho nos permite trabalhar com o cluster de banco de dados Neptune usando notebooks Jupyter hospedados pelo Amazon SageMaker. Além disso, fornece uma série de comandos mágicos nos notebooks que economizam muito tempo e esforço. Aqui está nosso exemplo de parâmetros de exportação:
In export_params
, devemos configurar a configuração básica, como o cluster Neptune e a saída Serviço de armazenamento simples da Amazon (S3) caminho para armazenamento de dados exportados. A configuração especificada em additionalParams
é o tipo de tarefa de ML a ser executada. Neste exemplo, a previsão de link é opcionalmente usada para prever um tipo de borda específico (Usuário—AMIGO—Usuário). Se nenhum tipo de destino for especificado, o Neptune ML assumirá que a tarefa é Link Prediction. Os parâmetros também especificam detalhes sobre os dados armazenados em nosso gráfico e como o modelo ML interpretará esses dados (temos “Usuário” como nó e “interesses” como propriedade do nó).
Para executar cada etapa do processo de construção de ML, basta usar os comandos do ambiente de trabalho Neptune. O Bancada de Netuno contém uma mágica de linha e uma mágica de célula que podem economizar muito tempo no gerenciamento dessas etapas. Para executar a exportação de dados, use o comando do ambiente de trabalho Neptune: %neptune_ml export start
Assim que o trabalho de exportação for concluído, teremos o gráfico do Neptune exportado para o formato CSV e armazenado em um bucket S3. Haverá dois tipos de arquivos: nodes.csv
e edges.csv
. Um arquivo chamado training-data-configuration.json
também será gerado o que possui a configuração necessária para que o Neptune ML realize o treinamento do modelo.
See Exportar dados do Neptune para Neptune ML para obter mais informações.
-
Pré-processamento de dados
O Neptune ML realiza extração e codificação de recursos como parte das etapas de processamento de dados. Os tipos comuns de pré-processamento de propriedade incluem: codificação de recursos categóricos por meio de codificação one-hot, agrupamento de recursos numéricos ou uso de word2vec para codificar uma propriedade de string ou outros valores de propriedade de texto de formato livre.
Em nosso exemplo, usaremos simplesmente a propriedade “interesses”. Neptune ML codifica os valores como multicategóricos. No entanto, se um valor categórico for complexo (mais de três palavras por nó), o Neptune ML infere que o tipo de propriedade é texto e usa a codificação text_word2vec.
Para executar o pré-processamento de dados, use o seguinte comando mágico do notebook Neptune: %neptune_ml dataprocessing start
No final desta etapa, um gráfico DGL é gerado a partir do conjunto de dados exportado para uso na etapa de treinamento do modelo. O Neptune ML ajusta automaticamente o modelo com trabalhos de ajuste de otimização de hiperparâmetros definidos em training-data-configuration.json
. Podemos baixar e modificar este arquivo para ajustar os hiperparâmetros do modelo, como tamanho do lote, num-hidden, num-epochs, dropout, etc. arquivo de configuração.json de amostra.
See Processando os dados gráficos exportados do Neptune para treinamento para obter mais informações.
-
Treinamento de modelo
A próxima etapa é o treinamento automatizado do modelo GNN. O treinamento do modelo é feito em duas etapas. O primeiro estágio usa um trabalho de processamento do SageMaker para gerar uma estratégia de treinamento de modelo. Este é um conjunto de configurações que especifica que tipo de modelo e intervalos de hiperparâmetros de modelo serão usados para o treinamento do modelo.
Em seguida, um trabalho de ajuste de hiperparâmetros do SageMaker será iniciado. O Trabalho de otimização de ajuste de hiperparâmetros do SageMaker executa um número pré-especificado de testes de trabalho de treinamento de modelo nos dados processados, tenta diferentes combinações de hiperparâmetros de acordo com o model-hpo-configuration.json
arquivo e armazena os artefatos do modelo gerados pelo treinamento no local de saída do Amazon S3.
Para iniciar a etapa de treinamento, você pode usar o %neptune_ml training start
comando.
Depois que todos os trabalhos de treinamento forem concluídos, o trabalho de ajuste de hiperparâmetros salvará os artefatos do modelo com melhor desempenho, que será usado para inferência.
No final do treinamento, o Neptune ML instruirá o SageMaker a salvar o modelo treinado, os embeddings brutos calculados para os nós e arestas e as informações de mapeamento entre os embeddings e os índices dos nós.
See Treinando um modelo usando Neptune ML para obter mais informações.
-
Crie um endpoint de inferência no Amazon SageMaker
Agora que a representação gráfica foi aprendida, podemos implantar o modelo aprendido atrás de um endpoint para realizar solicitações de inferência. A entrada do modelo será o usuário para o qual precisamos gerar recomendações de amigos, junto com o tipo de borda, e a saída será a lista de prováveis amigos recomendados para aquele usuário.
Para implantar o modelo na instância do endpoint SageMaker, use o %neptune_ml endpoint create
comando.
-
Consultar o modelo de ML usando o Gremlin
Assim que o endpoint estiver pronto, podemos usá-lo para consultas de inferência de gráficos. Neptune ML oferece suporte a consultas de inferência de gráficos em Gremlin ou SPARQL. Em nosso exemplo, agora podemos verificar a recomendação de amigos com Neptune ML no usuário “Henry”. Requer quase a mesma sintaxe para atravessar a borda e lista os outros usuários que estão conectados a Henry por meio da conexão FRIEND.
Neptune#ml.prediction
retorna a conexão determinada pelas previsões do Neptune ML usando o modelo que acabamos de treinar no gráfico social. Bill é devolvido exatamente como nossa expectativa.
Aqui está outro exemplo de consulta de previsão usada para prever os oito principais usuários com maior probabilidade de se conectar com Henry:
Os resultados são classificados da conexão mais forte para a mais fraca, onde o link Henry — FRIEND — Colin and Henry — FRIEND — Terry
também é proposto. Esta proposição é por meio de ML baseado em gráficos, onde padrões complexos de interação no gráfico podem ser explorados.
See Consultas de inferência do Gremlin no Neptune ML para obter mais informações.
Transformação ou retreinamento do modelo quando os dados do gráfico mudam
Outra pergunta que você pode fazer é: e se minha rede social mudar ou se eu quiser fazer recomendações para usuários recém-adicionados? Nesses cenários, em que há gráficos em constante mudança, pode ser necessário atualizar as previsões de ML com os dados gráficos mais recentes. Os artefatos do modelo gerados após o treinamento estão diretamente vinculados ao gráfico de treinamento. Isso significa que o ponto final de inferência deve ser atualizado assim que as entidades no gráfico de treinamento original forem alteradas.
No entanto, não é necessário treinar novamente todo o modelo para fazer previsões no gráfico atualizado. Com um fluxo de trabalho de inferência de modelo incremental, você só precisa exportar os dados do banco de dados Neptune, executar um pré-processamento de dados incremental, executar um trabalho de transformação em lote de modelo e, em seguida, atualizar o endpoint de inferência. A etapa de transformação do modelo utiliza o modelo treinado do fluxo de trabalho principal e os resultados da etapa incremental de pré-processamento de dados como entradas. Em seguida, ele gera um novo artefato de modelo para usar para inferência. Este novo artefato de modelo é criado a partir de dados gráficos atualizados.
Um foco especial aqui é para o comando model-transform step. Ele pode calcular artefatos de modelo em dados gráficos que não foram usados para treinamento de modelo. As incorporações de nós são recalculadas e quaisquer incorporações de nós existentes são substituídas. Neptune ML aplica o codificador GNN aprendido do modelo treinado anterior aos novos nós de dados gráficos com seus novos recursos. Portanto, os novos dados gráficos devem ser processados usando as mesmas codificações de recursos e devem aderir ao mesmo esquema gráfico que os dados gráficos originais. Veja mais detalhes de implementação do Neptune ML em Gerando novos artefatos de modelo.
Além disso, você pode treinar novamente todo o modelo se o gráfico mudar drasticamente ou se o modelo treinado anteriormente não puder mais representar com precisão as interações subjacentes. Neste caso, a reutilização dos parâmetros do modelo aprendidos em um novo gráfico não pode garantir um desempenho semelhante do modelo. Você deve treinar novamente seu modelo no novo gráfico. Para acelerar a pesquisa de hiperparâmetros, o Neptune ML pode aproveitar as informações da tarefa de treinamento de modelo anterior com inicialização a quente: os resultados dos trabalhos de treinamento anteriores são usados para selecionar boas combinações de hiperparâmetros para pesquisar no novo trabalho de ajuste.
See fluxos de trabalho para lidar com dados gráficos em evolução para mais detalhes.
Conclusão
Nesta postagem, você viu como Neptune ML e GNNs podem ajudá-lo a fazer recomendações sobre dados gráficos usando uma tarefa de previsão de link, combinando informações de padrões de interação complexos no gráfico.
A previsão de links é uma forma de implementar um sistema de recomendação no gráfico. Você pode construir seu recomendador de muitas outras maneiras. Você pode usar os embeddings aprendidos durante o treinamento de previsão de link para agrupar os nós em diferentes segmentos de maneira não supervisionada e recomendar itens para aquele que pertence ao mesmo segmento. Além disso, você pode obter os embeddings e alimentá-los em um sistema de recomendação downstream baseado em similaridade como um recurso de entrada. Agora, esse recurso de entrada adicional também codifica as informações semânticas derivadas do gráfico e pode fornecer melhorias significativas na precisão geral do sistema. Saiba mais sobre o Amazon Neptune ML visitando o site do Network Development Group ou fique à vontade para fazer perguntas nos comentários!
Sobre os autores
Yanwei Cui, PhD, é arquiteto de soluções especialista em aprendizado de máquina na AWS. Ele começou a pesquisa de aprendizado de máquina no IRISA (Instituto de Pesquisa de Ciência da Computação e Sistemas Aleatórios) e tem vários anos de experiência na criação de aplicativos industriais movidos por inteligência artificial em visão computacional, processamento de linguagem natural e previsão do comportamento do usuário online. Na AWS, ele compartilha a experiência de domínio e ajuda os clientes a desbloquear potenciais de negócios e a gerar resultados acionáveis com aprendizado de máquina em escala. Fora do trabalho, ele gosta de ler e viajar.
Will Badr é um SA principal especialista em AI/ML que trabalha como parte da equipe global do Amazon Machine Learning. Will é apaixonado por usar a tecnologia de maneiras inovadoras para impactar positivamente a comunidade. Nas horas vagas, gosta de mergulhar, jogar futebol e explorar as ilhas do Pacífico.
- '
- "
- 100
- 2020
- 7
- Sobre
- Segundo
- Conta
- Adição
- Adicional
- algoritmo
- algoritmos
- Todos os Produtos
- já
- Amazon
- Aprendizado de máquina da Amazon
- Amazon Sage Maker
- apache
- aplicações
- artificial
- inteligência artificial
- Artes
- Automatizado
- AWS
- AWS re: Invent
- Começo
- MELHOR
- Projeto de lei
- bilhão
- Preto
- construir
- Prédio
- negócio
- casos
- desafios
- classificação
- código
- comum
- comunidade
- integrações
- Computar
- Ciência da Computação
- Visão de Computador
- computação
- Configuração
- da conexão
- Coneções
- cônsul
- conteúdo
- Convergem
- poderia
- Clientes
- dados,
- cientista de dados
- armazenamento de dados
- banco de dados
- acordo
- deep learning
- Developer
- diferente
- descoberta
- distância
- Loja virtual
- borda
- Ponto final
- Engenharia
- Engenheiros
- etc.
- exemplo
- vasta experiência
- exploração
- exportar
- Extração
- RÁPIDO
- Característica
- Funcionalidades
- Figura
- Primeiro nome
- Foco
- formulário
- formato
- Quadro
- Gratuito
- Amizade
- função
- Games
- gerar
- Global
- Bom estado, com sinais de uso
- redes neurais de grafos
- ótimo
- Manipulação
- ajudar
- ajuda
- SUA PARTICIPAÇÃO FAZ A DIFERENÇA
- Como funciona o dobrador de carta de canal
- Como Negociar
- HTTPS
- IAM
- Impacto
- implementação
- melhorar
- Incluindo
- Crescimento
- Individual
- industrial
- INFORMAÇÕES
- inovadores
- Inteligência
- interação
- interesses
- IT
- Trabalho
- Empregos
- língua
- Idiomas
- APRENDER
- aprendido
- aprendizagem
- Alavancagem
- Biblioteca
- Line
- LINK
- Lista
- listas
- localização
- procurando
- pesquisa
- aprendizado de máquina
- Membros
- milissegundo
- ML
- modelo
- Música
- Linguagem Natural
- Processamento de linguagem natural
- necessário
- vizinhos
- rede
- redes
- Neural
- rede neural
- redes neurais
- Novos Recursos
- nós
- laptops
- online
- aberto
- Outros
- Pacífico
- Papel
- Pessoas
- atuação
- fase
- Plataformas
- Jogar
- Precisão
- predição
- Previsões
- presente
- Diretor
- Problema
- processo
- Produtos
- Perfil
- a promover
- propriedade
- oferece
- fornecer
- fornece
- compra
- Python
- questão
- alcance
- Cru
- dados não tratados
- RE
- Leitura
- regressão
- Relacionamentos
- substituir
- pesquisa
- Resultados
- reciclagem
- Retorna
- Execute
- sábio
- Escala
- Ciência
- Pesquisar
- conjunto
- Partilhar
- ações
- semelhante
- simples
- pequeno
- futebol
- Redes Sociais
- gráfico social
- rede social
- redes sociais
- Soluções
- Espaço
- Esportes
- Etapa
- padrões
- começo
- começado
- armazenamento
- lojas
- Estratégia
- completar
- suportes
- Vistorias
- .
- sistemas
- Target
- Tecnologias
- Equipar
- The Graph
- Através da
- tempo
- topo
- Training
- Transformar
- Transformação
- Atualizar
- us
- usuários
- valor
- visão
- O Quê
- QUEM
- largamente
- Wikipedia
- sem
- palavras
- Atividades:
- de gestão de documentos
- trabalho
- seria
- anos
- zoom