[Música] Olá pessoal tudo bom sejam bem-vindos aí na nossa segunda videoaula da nossa disciplina de processamento de linguagem natural Hoje a gente vai falar um pouquinho sobre sequência de caracteres tokens e palavras né então os nossos tpicos que serão abordados nessa aula de hoje primeiro vamos falar sobre sequências de caracteres depois sobre tokens e e por fim então sobre as palavras né Eh lembra que eu mostrei para vocês né uma definição de o que que seria uma linguagem né e falei que aos poucos a medida que a gente fosse trabalhando durante a disciplina a gente
ia retomando e localizando né Em que parte né dessa definição que a gente a gente tá situado no momento né então a aula de hoje a gente tá eh situado na questão que fala sobre os símbolos de um vocabulário né porque é aí que entra o contexto dos da das palavras das sequências de caracteres e dos tokens né dentro dessa definição de que do que que seria uma linguagem né então quando a gente trabalha com sequência de caracteres pessoal a gente primeira coisa que a gente precisa definir aqui são as expressões regulares né que vocês
já leram já relembraram porque isso vocês Com certeza já viram no início do curso quando se trabalhou com teoria da Computação né Eh e as expressões regulares Então são aqueles mecanismos muito simples né que a gente utiliza para reconhecer para gerar linguagens né que seriam as nossas linguagens eh regulares né E que é muito útil né Muito poderoso pra gente manipular sequências de caracteres né tanto para geração quanto para reconhecimento né Então nesse caso no contexto de PLN para que onde que a gente utiliza muito isso alguns exemplos aqu elas são muito úteis né para
encontrar padrões de textos e auxiliar no fluxo de um chatbot por exemplo né encontrar e remover sequências de caracteres que são indesejáveis eh como por exemplo os emojis né que desejáveis em alguns contextos né em outros nem tanto né Por quê Porque os emojis eles também têm significado então quando a gente for trabalhar por exemplo com análise de sentimentos eh não é muito adequado a gente eliminar esses caras né mas é um exemplo pelo menos para reconhecer é importante a gente vai precisar e em algumas situações a gente reconhece e elimina outras situações a gente
reconhece e dá um significado trabalha com ele porque é importante para nós né mas de qualquer forma eh a expressão regular é importantíssima pra gente encontrar ela né Seja lá o que que a gente vai fazer depois não necessariamente remover né É então aqui a remoção é apenas um exemplo porque depende do contexto né mas não é algo que não é só para isso que é utilizado né encontrar e substituir por exemplo sequências de caracteres né para diversas outras finalidades como a tokenização né então como é que a gente vai determinar o que que seria
um token a gente precisa por exemplo definir qual é um separador Quais são os separadores né e as nossas eh sentenças as nossas sequências de caracteres elas vão ser divididas de acordo com esses separadores então Eh vai ser necessário trabalhar com uma linguagem eh regular né que é muito útil Por exemplo quando a gente for trabalhar com o nosso parsing né né que que da mesma forma que nas linguagens de programação que Possivelmente vocês também já devem ter visto isso numa numa disciplina de compiladores ou algo parecido né se utiliza muito dessas dessas expressões né
para fazer uma análise sintática também né E também separar esses tokens né Então aqui tem alguns exemplos de de expressões regulares pessoal à medida que sempre vai ter um sempre que tiver um ícone aqui para vocês como por exemplo agora colab er de expressão regular vai ter um link para vocês entrarem e conseguir eh ter exemplos práticos assim embora a gente vai ter nossas aulas práticas vocês já conseguem acessar o notebook do collab e começar a perceber eh alguns exemplos que a gente tá utilizando eh com esse conceito né então o link tá aí vocês
podem acessar e e começar a brincar um pouco ver como é que isso pode ser feito utilizando a linguagem Python tá mas aqui tem alguns exemplos de funções regulares né Eh alguns padrões Por exemplo quando a gente tem lá José né é um é um termo fixo né Ele é um casamento exato vamos dizer assim string então só vai reconhecer justamente o que o que que seria o resultado Quais são as as palavras né que representam essa linguagem o conjunto de palavras representad por essa linguagem é só a ocorrência da única palavra José porque aqui
tá fixo né diferente por exemplo do segundo padrão que a gente tá vendo ali embaixo né que a gente tem uma uma uma disjunção né entre colchetes ali e maiúsculo ou e minúsculo e seguido de agora José né então ali a gente teria pelo menos duas ocorrências né pelo menos duas palavras que fazem parte dessa lingua agem que seria E agora José com a letra maiúscula e o E agora José o primeiro e com a letra minúscula né e assim a gente vai vendo várias outras e possibilidades né então ali a gente teria entre colchetes
a traços e tudo minúsculo a gente tá representando o intervalo então qualquer caracter minúsculo faz faria parte da nossa linguagem então a gente teria o a o b o c o d todo alfabeto né faria parte daa Nossa linguagem Então a gente vai aumentando né Eh o quanto a gente consegue representar né O que que faz parte da linguagem represent ada por esse tipo de expressão né então se a gente tiver um a tracinho Z entre colchetes e um mais significa que a gente pode ter Z uma ou mais caracteres minúsculos né um ou mais
caracteres minúsculos quando a gente coloca por exemplo A negação o chapeuzinho ali antes né então o que não é caracter qualquer coisa que não seja caracter minúsculo faz parte da nossa linguagem então eh a gente vê que tem vários níveis né da gente poder eh expressar né poder representar criar a nossa linguagem eh nesse nesse contexto aqui de expressão regulares né Então aqui tem alguns outros exemplos também de padrão que a gente pode utilizar né Eh para tratar caracteres especiais ocorrência de interrogação ou exclamação quando se trabalha com esse múltiplo padrão de busca caracteres de
de de padrão para início e fim né busca no início do texto ou buscado no final do texto por exemplo tudo isso vocês eh Com certeza já já leram né Eh outros tipos de de funções aí né como ocorrência opcional quando a gente tem uma interrogação s é algo que pode ocorrer zero ou uma vez pode ocorrer quando a gente tem um asterisco pode ocorrer qualquer número de vezes né zero ou várias vezes né o mais que significa uma ou mais mais vezes o diferente do do do do asterisco é que o mais ele precisa
no mínimo uma ocorrência o asterisco não não necessariamente então ele vai incluir eh mais coisas né porque incluir tá incluído na linguagem Inclusive a não ocorrência vamos dizer assim né Mais uma ou várias vezes a ocorrência daquele padrão que a gente tá representando ali que pode ser um cara ou pode ser uma sequência de caracteres então a gente pode montar expressões aí como vocês já viram de diferen diferentes eh eh contextos e diferentes amplitudes vamos dizer né bom os nossas sequênci de carteras E tokens então né a tokenização a gente viu um exemplinho né Vamos
falar com mais detalhe agora né na na na aula anterior né que seria então a utilização da expressão regular e a sua memória né para salvar um padrão encontrado para um uso posterior né como eu disse né a gente utiliza a expressão regular para poder encontrar esses tokens né e baseado nessa expressão regular a gente vai reconhecendo Então a gente vai criar uma expressão que por exemplo e qualquer coisa espaço então aquilo a gente vai dividir em tokens encontrou um espaço vai ser um token ou encontrou um ponto vai ser um token também como a
gente colocou ali né e tudo isso a gente consegue definir com expressões regulares né e aqui a gente ter alguns exemplos né também de padronização para isso né utilizado em expressão regular né um barra invertida w por exemplo representa qualquer caracter alfa numérico o Barra invertida w maiúsculo É Não alfanumérico então qualquer caracter não alfa numérico barra invertida D é um dígito Então significa qualquer de Então a gente vai ter alguns padrões para representar o que que tá sendo eh diferentes diferentes funções que a gente quer representar aqui na nossa expressão regular né barra invertida
D maiúsculo é um não dígito o espaço então é um barra vertida s minúsculo o tudo que não for espaço é S maiúsculo e assim por diante Tá bom também é importante a gente eh tomar alguns cuidados né com forse trabalhar né com essas eh expressões regulares para detecção de tokens né e definir um conjunto né eem ilustrando alguns casos de falsos positivos e falsos negativos por exemplo né então aqui a gente tem algum exemplo de falso negativo falso positivo se a gente for fazer uma uma busca do do do da do tokem luta dentro
dessa expressão que tá aqui né luta que se luta na absoluta certeza de vencer e quando a gente for fazer essa busca por essa por esse tokem por essa palavra luta a gente viu que o primeiro caso ali né a luta com letra com l maiúsculo porque tá iniciando uma frase não foi retornado né então esse aqui seria caracterizado como um falso negativo que que seria isso ele foi ele negativ ele falsamente foi classificado como não sendo o resultado da busca enquanto ele deveria ser o resultado da busca né então a gente chama isso de
falso negativo eh depois foi encontrado o luta que deveria ter sido encontrado de fato ali né e depois ele encontrou e também detectou como sendo token como resultado da nossa busca a sub palalavra vamos dizer né é luta dentro da palavra absoluta então isso aqui caracterizaria um falso positivo ele falsamente detectou essa palavra detectou esse token aqui né mas não deveria ser detectado porque ele tá dentro de uma outra palavra né então isso aqui também é importante pra gente construir aí os nossos padrões né de de tokens para poder depois fazer esse tipo de reconhecimento
né bom o que que a gente pode fazer para que que é bastante importante a gente trabalhar com tokens pessoal ele é muito importante no pré-processamento né na normalização dos dados né então a gente tem aqui de novo para lustrar para vocês onde que a gente tá no nosso nível linguístico né tá no nível de morfologia né então o objetivo por exemplo aqui seria uma sequência de caracteres eles são padronizados para representar Algo que faça sentido na linguagem e quando a gente faz isso eh a gente quer encontrar essas esses tokens esses esses essas representatividades
que são importantes né para caracterizar o nosso texto para definir a nossa linguagem só que ao mesmo tempo Às vezes a gente pode eh a gente acaba tendo muitas representações do mesmo sentido né E então a partir do momento que a gente faz essa tokenização a gente pode trabalhar também com a Lema e com a radicalização que é o que a gente vai ver também mais adiante tá então a tokenização nada mais é do que aquilo que a gente já teve um exemplinho na aula anterior né que a gente vai tentar distinguir essas diferentes unidades
linguísticas de um texto Então seria aqui essas nossas unidades seri os nossos tokens né que nesse caso aqui normal Noro que a gente faz eles são definidos como palavras né do nosso texto né mas pode ser sentenças também né então esses tokens eles tradicionalmente eles utilizam né base de baseado em regras linguísticas né que a gente tem de uma determinada língua né que pode variar de uma língua para para outra né Então essas regras elas são codificadas por meio de novo das expressões regulares que a gente viu ali né Então aqui tem um exemplo de
uma de uma expressão regular para representar a nossa língua portuguesa né É só um exemplinho aqui pra gente pode ter uma sequência de valores numéricos que tá representado ali pelos digitos né bartida D por exemplo que pode ocorrer uma ou mais vezes né dentro do do dentro dessa nossa expressão ou um bar invertido w que é aquele padrão de palavra que a gente viu né E também ou então os caracteres né que a gente colocou lá com bar revertida S que não são espaços né e em vários níveis de caracteres número grande de ocorrências aí
determinado então aqui é só um exemplinho de uma expressão regular que representando aí a nossa eh palavra sentenças da nossa língua portuguesa tá com o nltk que nós vamos ver um pacote do pai do que a gente vai começar a trabalhar eh a partir da próxima aula tá aí vocês vão ver com mais detalhes né e a gente pode trabalhar com essa tocan Isa né então trabalhar com a quantidade de tokens né os tokens que seriam todas as ocorrências desses nossos tokens né e os types também a gente coloca aí né que são apenas uma
ocorrência né que é igual o tamanho do vocabulário né seria uma ocorrência desses tokens né seria esse tamanho desse vocabulário que a gente tem tem aí do nosso do nosso texto vamos dizer né e a gente pode também segmentar né Essas palavras raras em partes mais frequentes por exemplo aqui tem alguns métodos que a gente pode umas técnicas que são bastante utilizadas como o bpe o byit level bpe o Word Peace e o unigram tá isso tudo tem disponível nessa nessa nessa nesse pacote que a gente vai trabalhar com mais detalhes mais adiante nas nossas
aulas práticas tá e o que que a gente trabalha com isso com essas palavras pessoal a gente tem algumas algumas algumas alguns conceitos importantes aqui que que a gente vai entender Ender a importância deles também pro eh para para essa pré-processamento dessas nossos textos né então o conceito de lexema por exemplo né que seria a nossa unidade né abstrata de significado então ele corresponde a um conjunto de formas relacionadas Então aqui tem um exemplo o que que são essas formas relacionadas menino menina meninão menininha meninos tudo isso a gente poderia utilizar um lema para representar
isso né O que que seria esse um lema para isso um um vamos escolher porque isso aqui tudo tá querendo dizer a mesma coisa é um menino uma criança jovem vamos dizer né então vamos colocar aqui e dizer que tudo é menino Porque daí a gente consegue ter eh simplificar um pouco mais né O que a gente tá querendo por porque em termos de significado é a mesma coisa vamos dizer assim considera-se a mesma coisa né então a gente poderia utilizar escolher por convenção uma delas para representar esse lema né o lema dessas de todas
essas palavras que estão aqui outro eh nível importante que a gente chama de raiz né que é esse morfema básico né semha fixos derivacionais ou flexionais então o que que seria raiz de todas essas expressões que estão aqui seria Menin né Não interessa o gênero e nesse caso aqui a gente estaria tirando até o gênero né então uma forma de representar né dar o significado a todas essas mesmas palavras aqui dá um únic significado né E aí que a gente entra nessas nessas nesses processos de lema por exemplo né então a gente pode pegar um
texto nosso depois de fazer depois de tokenizar pegar os nossos tokens aqui e começar em vez de utilizar os tokens diretamente utilizar os lemas então aqui por exemplo a gente teria nossa nossa frase aqui o foi para tudo que foi para o e o que o que interessa aqui o significado seria ir para né ou escola porque o não a gente tá tirando o gênero aqui quando trabalha com com lema né então não não faria diferença o a pro o né enfim não seria o menino a escola e ir para E se a gente for
um pouco mais radical vamos dizer assim a gente vai trabalhar com a nossa radicalização né que aí o que que a gente vai fazer né Eh vai fazer esse stemming que a gente chama ou stação né em vez de utilizar os lemas a gente vai utilizar as raízes né então aqui seria aquelas Raízes que a gente viu ali né tirando inclusive o gênero né e Menin par scol né ônibu Então são aquelas tirando aquelas aquelas questões que a gente que a gente viu ali né daquela definição de raiz né outro conceito importante aqui são os
conceitos de Stop Words né que que seria o stop Words né em muitos textos a gente tem muitas palavras que se repetem muito muito e a gente sempre vai ver em todos os textos o a por exemplo para muitas palavras que não vão fazer diferença nenhuma de um texto para outro e que às vezes elas acabam atrapalhando a parte do processamento né não são determinantes para para encontrar um significado realizar a tarefa que a gente tá se propondo a realizar né Essas palavras são conhecidas como stopwords então a gente pode também trabalhar com a remoção
de stopwords é bastante comum né então a gente pegaria essa frase aqui por exemplo que que nos interessa aqui menino foi escola ônibus Então por quê Porque quando a gente quiser enciar um texto de outro todos todos os textos vai ter esses pronomes né vai ter o o vai ter a vai ter o d né então a gente acaba tirando e mantendo só aquelas palavras que realmente dão mais significado né pro nosso texto né Então essas são toop Words Ok então o que que a gente viu na aula de hoje pessoal falamos um pouquinho sobre
sequências de caracteres os tokens e palavras tá na próxima vídeoaula a gente vai ter a nossa aula prática né de PLN nossa primeira aula prática de de processamento de linguagem natural utilizando Python Diferentemente das próximas semanas essa primeira semana eh vocês vão ter os notebooks para vocês trabalharem e utilizarem na prática mas eu vou fazer uma videoaula apresentando né com imagens dessas dessas práticas o que que vocês podem fazer como que vocês podem utilizar essas operações esses conceitos que a gente viu nessa semana agora né Eh mas não vou utilizar diretamente a plataforma vou fazer
uma videoaula para vocês mas a partir da semana que vem eh as aulas vão ser gravadas eh utilizando mesmo os notebooks e executando ali eh o código para ficar mais parecido com o que vocês realmente vão fazer na hora de praticar eh as aulas Ok muito obrigado então até a próxima [Música] h [Música]