Derivação e grafos dos tokens. Para a gente fechar a nossa visão geral sobre análise textual e consequentemente sobre full text search que nós vamos encontrar nos bancos de dados, precisamos sobre esses dois assuntos. Primeiro, vamos falar da derivação, que com frequência, ou se não, quase sempre, a gente vai encontrar como STEM ou STEMMING, tanto na documentação quanto nas ferramentas, nos bancos de dados. Então, a nossa derivação, no contexto de análise textual, de full text search, é o processo de redução de uma palavra à sua forma raiz. E, consequentemente, as variações das palavras terão uma correspondência na busca. Vamos aos nossos exemplos. Walking, em inglês, caminhando. E walk, caminhar. Quando a gente aplica o stemming dessas duas palavras, ou seja, a derivação dessas palavras, nós vamos encontrar a forma raiz, walk. E, mesma coisa, tendo exercício em português, caminhando e caminhada são derivadas para caminha que é a forma raiz aqui é importante ficar atento que nem sempre na derivação a gente vai encontrar uma palavra que exista na linguagem no idioma com o qual nós estamos trabalhando porém a ideia é encontrar um radical uma forma inicial raiz mesmo daquela palavra que consiga entender que conteúdos que se parecem com aquele radical consequentemente serão relevantes entre si e geralmente é isso aqui vai envolver a remoção de prefixos e sufixos das palavras. Então, neste exemplo aqui, a gente tirou o final do walking e também o final do caminhando e caminhada. Então, isso aí seria o sufixo das palavras, a gente manteve o radical. E este processo, essas regras de derivação, são dependentes do idioma. essas regras de derivação são dependentes do idioma então para cada idioma que você tiver que trabalhar na sua aplicação certamente vai trabalhar com o algoritmo de derivação específico para aquele idioma grafos de tolkien ou tolkien grátis antes de falar do topo em breves vamos só relembrar o que é o grafo. Aqui estou falando sempre de teoria matemática dos grafos. Então, o grafo é uma estrutura formada por vértices, também chamados de nós, e por arestas que conectam dois vértices. E os vértices podem ser qualquer tipo de objeto. O único requisito aqui é que esse objeto esteja conectado em pares. Ou seja, você tem um objeto na ponta da seta e outro objeto na outra ponta. Basicamente isso. Esse é o conceito fundamental, porque nós vamos agora, no contexto de full text search, de análise textual, precisar falar de um tipo específico de grafo, que é o grafo acíclico direcionado, o DAG. E aqui o que nós vamos observar é o seguinte, cada aresta é direcionada de um vértice para o outro, é direcionada de um vértice para o outro no mesmo sentido e de forma que essas direções nunca vão formar um círculo, nunca vão formar um loop fechado. Então, aqui a gente tem a estrutura fundamental, o grafo e o grafo acíclico direcionado. Vamos falar agora especificamente do token graphs que você vai entender por que primeiro a gente está falando da estrutura de dados fundamental, que é o grafo. Porque quando a gente utilizar o tokenizador que converte o texto em um fluxo de tokens, neste processo também é armazenado, também é identificada a posição de cada token neste fluxo e o número de posições que um token abrange. Então, com essas informações, quando nós estamos tokenizando, nós também estamos gerando um grafo acíclico direcionado, o DAG. E aqui nós vamos ver que cada posição é o nó e cada token tem o papel de aresta. Então, naquela nossa frase clássica, quick, brown, fox, nós vamos ter zero relacionando aresta, quick, um, brown, dois, fox, três. Brown, 2, Fox, 3. Então, este processo de tokenização monta esta estrutura fundamental de dados, que é o grafo acíclico direcionado. E com isso, nós vamos abranger casos de uso, como por exemplo, o uso de sinônimos. Então, a estrutura de dados vai entender, quando eu, por exemplo, utilizar um sinônimo, que a palavra fast também é um sinônimo para quick rápido ou veloz e com isso a gente consegue ter essa relevância nos nossos processos de busca