Resumos de aula: PLN - 2019


Nota: Arquivo gerado por um programa.

Nome Resumo
Jair Edipo Jeronimo Iniciamos a aula com uma atividade, contendo três questões relacionadas ao assunto que iriamos abordar, mas com o principal intuito de entender a nossa compreensão sobre o que é uma palavra, além de conceitos novos como stopwords e palavras candidatas. Em uma expressão regular, cada sub-expressão contida entre parênteses é chamada de grupo, sendo que cada grupo é enumerado da esquerda para a direita, de acordo com a ordem em que aparecem na expressão (onde 0 é a expressão inteira). Dessa forma, isso facilita quando é necessário escrever novamente aquele grupo, pois é só utilizarmos a expressão \n, onde n é o número do grupo. Para iniciar o processamento de um texto, é necessário primordialmente identificar as palavras (ou tokens) que ele contém. Entretanto, para a língua portuguesa a expressão regular que identifica as palavras não é tão simples, uma vez que temos que levar em consideração a acentuação das palavras. Em PLN, um conjunto de frases ou documentos é chamado de corpus e é utilizado para verificações e análise. Vimos em aula que, em uma análise empírica seguindo a Lei de Herdan e a Lei de Heaps, concluiu-se que o crescimento do número de palavras diferentes, ou seja, o vocabulário utilizado em um corpus cresce de maneira logarítmica, tendo como parâmetro a quantidade de tokens do corpus. Durante a aula, foi apresentado também, alguns exemplos de códigos na linguagem Python para abrir arquivos de texto, identificar e contar a quantidade de palavras presentes, além de analisar as palavras mais frequentes. Com isso, chegamos ao conceito do que é uma stopword, que seriam palavras que aparecem com grande frequência, mas que são irrelevantes para uma análise textual, quando as observamos individualmente e que podem ser eliminadas antes ou depois do processamento do texto. Assim, foi adaptado o exemplo visto em Python para desconsideramos as stopword e analisarmos, das palavras restantes, as mais frequentes. Porém, com o resultado obtido, ainda não era possível entender diretamente sobre o que se tratava o texto em análise, uma vez que, muitas das stopword quando são removidas, retiram o sentido semântico das outras expressões. Existem diversos artigos e discussões sobre stopwords/stoplists, que vem ocorrendo desde a década de 60, muitos relacionados com estes problemas. Também foi visto o conceito do algoritmo de Maximum Mathing, que recebe uma frase sem espaços e, através de um dicionário, realiza uma busca gulosa para segmentar a frase em palavras, entretanto, nem sempre ele consegue desmembrar a frase de maneira correta. Outro conceito importante é a normalização de palavras, que é o tratamento relacionado a redução ou simplificação de palavras, já que, na língua portuguesa, temos palavras flexionadas em gênero, número, grau e tempo verbal, mas que ao observá-las podemos identificar que estão relacionadas ou que possuem o mesmo significado. Assim, foi abordado duas técnicas importantes. A primeira é o processo de stemming, uma heurística que reduz a palavra à sua raiz, cortando as extremidades sem levar em conta a classe gramatical, identificando o termo mais comum, ou atém mesmo utilizando regras já existentes da linguagem. Já a outra técnica vista é o processo de lemmatisation, que utiliza uma heurística mais sofisticada com apoio de um dicionário, para aplicar um conjunto de técnicas de maneira a reduzir a palavra a sua forma de dicionário. Por fim, essas operações são comuns e bastante utilizadas em sistemas de recuperação de informações, como stemming para buscas e lemmatisation para tradução. O importante é ressaltar que, um menor vocabulário pode até auxiliar no processo de busca devido a complexidade já abordada em outras aulas.
Igor Neres Trindade A aula de hoje, 10/06/2019, abordou o tema de normalização de texto e, para isso, aprendemos os conceitos de palavras e stopwords. Como referência bibliográfica, recomenda-se a leitura do segundo capítulo do livro “Speech and Language Processing”, de Dan Jurafsky. De início, revisamos expressões regulares. Do teste de avaliação da aula anterior, verificamos como é possível referenciar grupos em ERs especificando o n-ésimo grupo através da sintaxe “\n”. Grupos são sub-expressões entre parênteses e a numeração deles é feita da esquerda para a direita, seguindo a ordem de abertura de parênteses. Em seguida, começamos a explorar o uso de expressões regulares para identificar palavras. Ao usar a expressão “\w+” para filtrar qualquer cadeia de caracteres alfanuméricos, um problema foi observado: palavras como “preᔠe “porquinho-da-índia” não foram integralmente extraídas. Analisando a tabela ASCII estendida, verificamos que os intervalos a-z e A-Z, de fato, não contemplam caracteres acentuados. Além disso, “\w” não contempla hífen. Uma solução para isso seria uma expressão regular ainda mais específica: “[-'a-zA- ZÀ-ÖØ-öø-ÿ]”. Tal problema possibilitou a reflexão sobre a tokenização e de como, dadas expressões regulares diferentes, podemos obter separações diferentes de palavras. Dependendo da ER, podemos ter mais palavras. Isso ocorreria, por exemplo, se considerássemos os sinais de pontuação. E se considerássemos palavras diferentes? Essa última pergunta nos apresentou o conceito de tipo/vocabulário e nos introduziu a uma forma de analisar corpora textuais. Mas antes, definamos o que é um corpus textual. Trata-se de um conjunto de documentos geralmente anotados e utilizados para análise e verificação. Um texto de Shakespeare é um ótimo exemplo. Fazendo uma tokenização e buscando também por palavras nele, uma proporção curiosa pôde ser aferida: 844 mil tokens para 31 mil tipos. Muitas palavras estariam repetidas, então? Sim! E isso evidencia a Lei de Heaps, que diz que o crescimento de um vocabulário não é linear, aproximando de uma curva de raiz. Poderíamos, inclusive, usar esse texto para a análise. Possivelmente, encontraremos o mesmo resultado! Uma análise prática em python da coleção “A Semana”, de Machado de Assis, foi realizada em sala. E novamente tal proporção foi encontrada: 267618 tokens para 25374 tipos. Dada a curiosidade dessa diferença em quantidade, analisamos melhor os tipos mais frequentes e percebemos, ao listar os 20 primeiros, que essas palavras não trazem nenhuma idéia da obra. São palavras irrelevantes para análise, mas que desenrolam um papel importante para a construção de textos, unindo frases, palavras, fazendo a ponte entre ideias: em geral, mas não somente, conjunções. Essas são as stopwords. Alterando o programa em python para filtrar as palavras mais frequentes, retirando stopwords, podemos verificar uma maior coerência no resultado. Foi discutido, ainda, como deslizar o intervalo um pouco para baixo traria melhores resultados e como o tamanho da lista de stopwords possivelmente reduz a efetividade de uma busca. Por fim, estudamos como simplificar as diversas formas pelas quais uma palavra pode ser expressada. Esse processo é chamado de normalização e possui duas técnicas principais. A primeira, Stemming, possui uma heurística de guilhotina, cortando os extremos da palavra, de acordo com um conjunto de regras que dependem do idioma-base. A segunda, Lemmatization, mais lento, usa técnicas para deflexionar as palavras com auxílio de um dicionário de palavras. Recomenda-se o Stemming para busca e Lemmatization para tradução.
Michelle Kaori Hamada O tema dessa aula foi “Normalização de texto: Palavras e stopwords”. Iniciou- se a aula com um teste de avaliação contendo três perguntas para respondermos conforme o nosso parecer: 1. Indicando o número de palavras (tokens) para as linhas dadas; 2. Responder o que é uma stopword e uma stoplist; 3. Transformar os conjuntos de palavras fornecidos em uma palavra candidata (uma palavra/parte dela que melhor representa o conjunto dado). Para determinar a quantidade de tokens basta contarmos quantas palavras existem, como no exemplo: “Muito longo para os que lamentam, muito curto para os que festejam” - nela temos 12 palavras, ou seja tokens, enquanto que existem apenas 8 palavras diferentes, estes chamamos de tipo/vocabulário. Veja bem, se pegarmos um Corpus, uma coletânea/documentos/frases sobre um determinado assunto anotados e utilizados para aprendizado (análise) e validação (verificação), ele terá N tokens e |V| tipos. De acordo com uma análise empírica utilizando a lei de Herdan (1960) e a lei de Heaps (1978) pode-se concluir que o crescimento de um vocabulário tem comportamento exponencial |V| = k*N^b, sendo 0 < b < 1. Observamos uma execução em python sobre o livro “A Semana” de Machado de Assis (1839-1908) em que como saída podemos ter as x palavras que mais aparecem, quantidade de tokens e vocabulário e a frequência com que elas aparecem. Entretanto, algumas línguas não separam as palavras por espaço, para isso são necessários métodos alternativos de segmentação, por exemplo, os algoritmos de segmentação como o Maximum Matching. Para a execução dele é requerido um dicionário e é realizado uma busca gulosa. Em algumas línguas, como chinês, ele funciona muito bem, enquanto que em outra não possui a mesma eficiência, como inglês. Os algoritmos de segmentação mais sofisticados usam modelos estatísticos (aprendizado supervisionado). Existem as palavras com pouco sentido semântico que são irrelevantes para análise, como os artigos e preposições, estas são denominadas stopwords. Dependendo do texto que processarmos com as stopwords, elas poderão ter uma maior frequência e a saída da análise não ter significado para o que precisamos. A eliminação das stopwords podem ocorrer antes ou depois da leitura do texto. Devemos avaliar o seu uso em cada aplicação pois existem casos em que sem as stopwords as informações não fazem sentido enquanto que em outras, como em muitas aplicações de motores de busca, não utilizam as stopwords, pois o tamanho da lista de stopwords pode reduzir a efetividade em uma busca. Normalizar uma palavra é reduzi-la ou simplificá-la utilizando, por exemplo, o steaming que consiste em reduzir a palavra à sua raiz (sem levar em conta a classe gramatical), um processo de heurística que corta as extremidades das palavras (remoção de afixos derivacionais). Existem diferentes algoritmos que executam esse processo, podemos citar como exemplo: Levins stemmer, Porter stemmer e Paice steammer. Outro método é o processo de lemmatisation que aplica uma técnica para deflexionar as palavras, ou seja, retira a conjugação verbal e altera os substantivos e adjetivos para o singular masculino objetivando reduzir a palavra até a sua forma de dicionário, para isso sua aplicação requer um dicionário de palavras. Quanto menor for o vocabulário melhor pode ser o desempenho na busca. As operações citadas anteriormente de stemming e lemmatization são comuns e iniciais que são aplicadas em sistemas de recuperação de informação (busca - stemming, tradução - lemmatisation).
Renato de Avila Lopes Normalização de textos: Palavras e stopwords Esta aula começou com uma explicação da resolução do sexto exercício da última aula sobre expressões regulares Foi uma explicação sobre o que são e como funcionam os grupos Em seguida foi demonstrada que a expressão regular para encontrar palavras \w+ não funciona perfeitamente para o idioma português, não considera palavras compostas ligadas por hifen, como por exemplo porquinho-da- índia e nem palavras com acentos ou apóstrofes Foram feitas alterações até chegar em uma expressão regular para palavras em português [-'a-zA-ZÀ-ÖØ- öø-ÿ]. Os intervalos nessa expressão correspondem à tabela ASCII e compreendem os acentos usados na língua portuguesa. A expressão poderia ser escrita de outra forma, adicionando os acentos, mas ficaria muito mais extensa Tokenização Exemplo quantas palavras na frase: Extremamente adaptável, pode ocorrer em ambientes altamente alterados pelo ser humano Onze palavras, treze se considerar a pontuação Muito longo para os que lamentam, muito curto para os que festejam Doze palavras (tokens), oito palavras diferentes (tipo/vocabulário) Corpus é um conjunto de documentos ou frases, geralmente anotados, utilizados para aprendizado (análise) e validação (verificação) Crescimento de um vocabulário: |V| = kN^? onde 0 < ? < 1 Quantidade de palavras na obra "A semana" de Machado de Assis: 267618 Vocabulário (palavras diferentes): 25374. Foi demonstrado o algoritmo em python utilizado para contar as palavras e vocabulário Discussão da folha de avaliação da aula: O algoritmo utiliza pontos como separador e também o símbolo $ Stopword/stoplist - palavra irrelevante para a análise Geralmente artigos, preposições Stopwords e stoplist - sinônimos. Foram demonstradas as alterações para incluir stopwords no algoritmo e o resultado para as 20 palavras mais frequentes após essa alteração. O resultado não foi muito melhor que o primeiro que incluia as stopwords Stopwords podem ser retiradas antes ou depois do processamento do texto, mas deve-se avaliar o uso para cada caso. Por exemplo a palavra Rio de Janeiro perde o sentido se a preposição "de" for retirada Aplicações como motores de busca não usam stopwords. O tamanho da lista de stopwords pode afetar negativamente a efetividade de uma busca Normalizando as palavras Em português as palavras flexionam em gênero, número e grau, além de infinitos tempos verbais distintos Trabalhador - Trabalhadora Degrau - Degraus Amigo - Amigão Normalização de palavras busca a redução ou simplificação de palavras Métodos: Stemming - reduzir a palavra a sua raiz amig: amigo, amiga, amigão gat: gato, gata, gatos, gatas Processo de heurística que corta as extremidades das palavras. Conjunto de regras que dependem da linguagem, geralmente utilizado para busca Diferentes algoritmos (Sample text, Lovins stemmer, Porter stemmer, Paice stemmer) Lemmatisation - de flexionar palavras (retirar a conjugação verbal, no caso de um verbo, e altera os substantivos e os adjetivos para o singular masculino, para reduzira palavra até sua forma de dicionário) Geralmente utilizado para traduçãoamigo: amigo, amiga, amigão gato: gato, gata, gatos, gatas ter: tinha, tenho, tive, tem Heurística é mais sofisticada, geralmente utiliza diciionários Vocabulário menor pode resultar em melhor desempenho na busca Stemming e lemmatisation são operações comuns e iniciais utilizadas em sistemas de recuperação de informação
Mauro Mascarenhas de Araujo Resumo da aula de 10/06: A aula iniciou-se com um teste com 3 perguntas: a primeira consistia em indicar o número de palavras (tokens) para cada cadeia (string) do conjunto fornecido; a segunda perguntava a respeito da definição de stopwords e stoplist; por fim, a terceira pergunta pedia para escolher uma palavra que melhor representava determinado conjunto de palavras semelhantes. Logo após, foi retomado da aula anterior o assunto de Expressões Regulares, onde o professor explicou como funcionava a resposta ao último desafio do teste (também da aula anterior) -> Dado que cada sub-expressão entre parênteses de expressões regulares (modernas) é um grupo e cada grupo possui um número (incrementado da esquerda para a direita), é possível buscar por repetições. [Exemplo: ((\w+)\\.(\w+))@\1 identifica "emails" onde o nome da caixa de email deve ser a parte inicial do domínio, além de ter ao menos um ponto entre duas palavras (abc.com@abc.com.net); neste caso, o grupo 1 é todo o conteúdo contido no maior parêntese, o grupo 2 é o primeiro (\w+) e o grupo 3 é o segundo (\w+), logo, o "\1" buscará por recorrências do primeiro grupo]. Depois, foi discutido a identificação de palavras latinas, uma vez que o \w+ não contém palavras acentuadas e especiais, como o cedilha, por exemplo. Para resolver tal problema foi apresentado a expressão [-'a-zA-ZÀ-ÖØ-öø-ÿ], que corresponde a todas as letras do alfabeto latino (de acordo com a tabela ASCII estendida). O próximo assunto foi sobre a tokenização de textos, onde foi apresentado a definição de tokens (palavras = token, na literatura), de tipos/vocabulários (conjunto de palavras distintas) e corpus (Em PLN um corpus é um conjunto de documentos ou de frases geralmente anotados e utilizados para aprendizado (análise) ou validação (verificação)). Depois foram apresentados algoritmos escritos em Python que realizam a contagem de palavras (tokenização), contagem de frequência de cada palavra, e do vocabulário de textos livres (raw txt). Também foi apresentado a ideia do algoritmo de segmentação Maximum Matching, que realiza busca gulosa, normalmente com o auxílio de um dicionário, para separar diversas palavras concatenadas "de volta ao seu estado original". Logo após, apresentou-se a definição de stopwords e stoplists, que são, resumidamente, "palavras irrelevantes para a análise do texto", além de apresentar um algoritmo de contagem de frequência de palavras que "ignorava as stopwords" em python. Também foi mostrado que palavras consideradas stopwords podem ter muita importância no significado, como é o caso de "Rio de Janeiro". Quanto a de normalização de palavras, foram apresentados dois algoritmos, o Stemming, que consiste no uso de heurísticas para truncar/podar a palavra reduzindo-a a sua raíz, de modo a classificá-las como todas pertencentes ao mesmo grupo, e o Lemmatization [focaremos no algoritmo de Porter], que aplica técnicas para deflexionar palavras, retirando a conjugação e alterando as palavras para o masculino), normalmente utiliza um dicionário, e tem uma heurística mais sofisticada, levando mais tempo para executar -> Operações de Busca normalmente usam Stemming, enquanto operações de tradução, normalmente usam Lemmatizaton.
Renan Baisso Como avanco do estudo de processamento de linguagem natural, e de grande relevancia ter conhecimento da lingua em questao, como as palavras e como elas se relacionam. Sabendo disso, faz-se a aplicacao de tecnicas como expressoes regulares, sumarizacao e corpora. Entao, pode-se definir diversas expressoes para proposistos especificos, como Regex para o portugues, frances ou japones, a fim de ter maior precisao ao normalizar ou analisar os contextos de estudo. Com isso, e possível fazer contagem de Tokens, ou realizar a tokenizacao de um texto, que e a contagem de palavras para analizar um texto. Sendo assim, pode- se contar a quantidade de palavras totais em uma frase (tokens) e tambem a quantidade de palavras unicas (vocabulario), como na frase “Muito longo para os que lamentam, muito curto para os que festejam” que tem 12 tokens e 8 palavras como vocabulario. Assim sendo, define-se corpus ou corpora (no plural) como o conjunto de documentos ou frases para realizacao de estudos e validacao de algoritmos de PLN. A quantidade de corpus que existem de uma determinada lingua é proporcional a quantidade de falantes nativos do idioma, por isso, para alguns idiomas a pesquisa sobre PLN é mais restrita. Mas para analisar o quao complexo e um idioma ou um texto, é necessaria a definicao de relacao entre vocabulario e tokens, assim surgiu, atraves de estudos empiricus, as Leis de Herdan (1960) e de Heaps (1978), as quais descrevem a relacao entre as duas variaveis. A relacao entre o numero de palavras totais e o numero de palavras unicas e descrito por uma funcao que evolui com caracteristicas de uma funcao logaritmica assistotica. Logo, para textos pequenos, usa-se poucas palavras, mas conforme o tamanho aumenta é necessário a utilização de mais palavras, porém, quando o tamanho de um texto se aproxima da quantidade de palavras em um vocabulário, fazer uso de repetições é algo comum. Sendo assim, para analisar um documento de texto em relação às palavras, utiliza-se este conjunto de técnicas para extrair o informações quais as stopwords, a quantidade de palavras e qual o conjunto de palavras que definem o assunto do texto. Para isso, pode-se utilizar de algoritmos mais sofisticados, como os da classe de aprendizado não supervisionado, para aprender a ler um texto e gerar análises mais precisas. Pois, algoritmos mais complexos fazem uso de dicionário para classificar tokens comuns, atingindo melhores resultados, pelo fato de já possuir quais palavras são stopwords e podem ser eliminadas. Entretanto, nem sempre a eliminação de stopwords é requerida, pois podem fazer parte de um contexto maior ao qual dão sentido. Como, por exemplo, no nome “Rio de Janeiro” que sem o de ficaria apenas “Rio Janeiro” que não traduz o contexto que gostaria de ser interpretado. Por último, para extração e estudo de palavras de um documento, também há um tratamento que consiste em agrupar palavras de significado e grafia semelhantes. Por exemplo, o agrupamento de amigo, amiguinho e amigão em um objeto só para otimizar o processamento. Na literatura há dois algoritmos muito utilizados para executar esta ação. Através do stemming, que faz cortes nas palavras, como num substring (aplicado ao exemplo anterior seria “amig”). Ou através da lemmatization, que faz uma transformação das palavras para sua forma masculina sem flexão, encontrada no dicionário (aplicado ao exemplo anterior seria “amigo”). O stemming é muito utilizado em algoritmos de busca, enquanto a lemmatization é eficiente para sistemas de tradução automática.
Leonardo Nascimento Cadeias com duas palavras repetidas consecutivas podem ser encontradas com a expressão regular “\b(\w+)\W+\1”. A sequência “\1” representa o conteúdo encontrado no grupo 1. Cada sequência de caracteres entre parênteses representa um grupo, onde o grupo 0 é o casamento completo e os demais grupos recebem a numeração conforme sua ocorrência, da esquerda para a direita. Encontrar palavras em um texto em inglês é relativamente fácil, pois a expressão regular “\w+” seria capaz de capturá-las sem maiores problemas. Todavia, se consideramos um texto em português, espanhol ou francês não poderíamos utilizar esta expressão para reconhecer palavras, uma vez que as letras com diacríticos não seriam reconhecidas. Assim, uma expressão regular mais adequada para reconhecer palavras em português seria “[-'a-zA-ZÀ-ÖØ-öø-ÿ]”, onde, usando a tabela ASCII estendida, letras com diacríticos seriam reconhecidas como parte da palavra. O pacote Natural Language Toolkit (NLTK) já inclui as particularidades de cada idioma suportado. Com isso já é possível realizar a tokenização, processo que consiste na divisão de um texto em palavras. A quantidade de palavras encontradas representa o número de tokens e a quantidade de palavras diferentes é o tamanho do vocabulário. Um corpus textual é uma coletânea sobre um determinado assunto e, no contexto de PLN é um conjunto de documentos utilizado para aprendizado e validação. O crescimento do vocabulário de uma língua é parecido com o crescimento logarítmico. Em linguagens naturais esse comportamento é conhecido como Lei de Heaps e Lei de Herdan. A expressão regular “[-'a-zA-ZÀ-ÖØ-öø-ÿ0-9]” e recursos da linguagem Python foram utilizados para avaliar os tokens e o vocabulário da obra “A Semana”, de Machado de Assis. A análise foi feita com a criação de um dicionário, ou tabela de hash, onde cada palavra encontrada foi associada à quantidade de ocorrências no documento. Quando não existe um separador entre as palavras, como no chinês, são necessários algoritmos de busca gulosa guiados por dicionário ou outros mais sofisticados, que usam modelos estatísticos e aprendizado supervisionado. Ao avaliar as vinte palavras mais frequentes no vocabulário da obra “A Semana”, percebemos que elas são artigos, preposições ou palavras que não trazem informação sobre o texto, ou seja, têm pouco significado semântico. Essas palavras são chamadas de stopwords ou stoplists, e podem variar de acordo com o corpus que está sendo analisado. Stopwords podem ser eliminadas antes ou depois do processamento de um texto, mas devemos ter cuidado, haja vista que existem casos onde uma palavra é relevante ou irrelevante dependendo do contexto. A normalização de palavras pode ser entendida como a redução ou simplificação de palavras. As duas técnicas mais importantes são stemming e lemmatization. Stemming é a redução da palavra à sua raiz. Consiste em uma heurística que corta as extremidades das palavras. Lemmatization é a redução da palavra até o que podemos chamar de sua forma no dicionário. Consiste em retirar a conjugação verbal, caso seja um verbo, e transformar para o singular masculino. A recomendação é utilizar stemming para busca e lemmatization para tradução.
Caique de Camargo A aula de Processamento de Linguagem Natural, ministrada pelo Prof.Dr. Jesus P. Mena Chalco, do dia 10 de junho de 2019 tratou-se do tema "Normalização de Texto: Palavras e Stowords". A aula baseia-se no capítulo 2 do livro "Speech and language processing: An introduction to natural language processing, computational linguistics,and speech recognition" de Daniel Jurafsky & James H. Martin. Expressões regulares, quando não atômicas, possuem sub-expressões, que quando separadas por parênteses são chamadas de grupos. Grupos, em interpretadores mais modernos, possuem numerações, que são iniciadas em 0 e contadas da esquerda para a direita conforme um novo parenteses é aberto, e podem ser referenciados por essa numeração. Com relação a palavras, temos algumas abreviaturas como o \w que abrange todos os caracteres de a-zA-Z e _, mas que tem grandes problemas quando trata de línguas não inglesas e que possuem acentuação, não sendo preciso nesses casos. Uma forma de contornar esse problema é utilizando a tabela ASCII estendida (como da forma [-'a-zA-ZÀ- ÖØ-öø-ÿ]) reconhecendo assim caracteres com acento. Aí então introduz-se o conceito de token, que nada mais é do que uma palavra e também o de vocabulário que é uma palavra única (ou a quantidade de palavras únicas), não contando o número de vezes que ela se repete. Foi expressado a lei de Herdan (1960) e a lei de Heaps (1978) que tentam expressar matematicamente o crescimento de um vocabulário ao longo do tempo. Dentro da parte prática foram testadas algumas aplicações de PLN tendo como base uma coleção de Crônicas de Machado de Assis (1839 - 1908) chamada de "A Semana". Foram testadas três aplicações, uma que devolvia a quantidade de tolkens do livro (palavra1.py), uma melhoria desta que devolve também o tamanho do vocabulário e as 20 palavras mais utilizadas (palavra2.py) e um terceiro que utiliza o conceito de stopwords para eliminar palavras que tragam pouco sentido de análise ao texto e as elimina do processamento, mostrando também as 20 palavras mais utilizadas (palavra2.py atualizado). Entrando no conceito de stopwords (ou stoplists) são palavras, como pronomes, artigos, preposições, que são muito utilizadas dentro da linguística mas que sozinhas não trazem algum entendimento sobre o contexto do que é escrito ou falado, tendo pouca utilidade na hora de se interpretar ou analisar algo. Não é um conceito novo, começou a ser estudado por volta de 1960, e muito menos irrelevante e que tem que ser tratado com cuidado pois pode tirar características importantes de certas palavras (Rio de Janeiro por exemplo). Tendo o conceito de stopwords entramos em normalização (palavra3.py) que pode ser entendido como a simplificação ou redução de palavras, tendo duas técnicas importantes: a stemming, que reduz a palavra a sua raiz (utiliza heurística de guilhotina e é mais utilizado em buscas) e lemmatization que retira a conjugação verbal (em caso de verbo) e altera os substantivos e adjetivos para o seu singular masculino (é mais lento, pois precisa de dicionário, e mais utilizado em traduções).
Luiz Gabriel Correia No início da aula o professor explicou como a expressão regular mostrada na aula anterior para reconhecer palavras repetidas funciona, usando \1. Nesta notação \0 seria todo o casamento, \1 o primeiro grupo a ser encontrado entre parênteses, \2 o segundo, etc. A ER \w padrão nos pacotes de expressão regular não é suficiente para línguas como português ou francês, já que \w reconhecerá somente caracteres do alfabeto da tabela ASCII, sem acento ou símbolos especiais. A ER adequada combina o intervalo de caracteres do \w mais símbolos especiais da ASCII estendida, excluindo-se apenas alguns símbolos que nunca são incluídos em palavras. Uma ER assim: [-'a-zA-ZÀ-ÖØ-öø-ÿ]. Tokenização é o processo de identificar as palavras em um texto. Palavras são caracteres alfabéticos seguidos de separados como espaço, vírgula, entre outros. Corpus é um coleção ou conjunto de de documentos relacionados a um assunto, geralmente anotados utilizados para análise (aprendizado de máquina) e validação de modelos. Um corpo típico possui bem mais tokens (palavras) do que tipos de tokens ou vocabulário (palavras diferentes) de tal forma que uma análise empírica como sumarizado pela Lei de Herdan (1960) e Lei de Heaps (1978), demonstra que o vocabulário cresce apenas de forma logarítmica conforme o número de tokens cresce. Um bom exemplo deste resultado é encontrado na coleção "A Semana" de Machado de Assis, onde veremos 267618 tokens mas apenas 25374. Vimos uma programa em Python para analisar o texto de Machado de Assis, através do uso da expressão regular para achar palavras da língua portuguesa, podemos iterar sobre cada palavra encontrada e criar um dicionário de frequências contanto as vezes que cada palavra aparece. Assim o vocabulário é o número de chaves no dicionário assim o número de tokens é o tamanho da lista total de palavras encontradas. No fim ordenamos e mostramos as 10 mais frequentes. Dividir o texto em palavras pode ser uma tarefa não-trivial quando não é símbolos exclusivos que indicam a separação (como em japonês ou mandarim) casos em que é necessário usar abordagens estatísticas para com aprendizado supervisionado para obter um algoritmo de segmentação adequado. Nesses casos é necessário consultar um dicionário para determinar os possíveis candidatos a segmentação. Stopwords/stoplists são palavras com pouco significado semântico que podem ser removidas antes ou depois da análise para tornas os resultados mais significativos. Exemplos comuns são artigos, conjunções, ou substantivos, verbos e adjetivos muito comuns. Deve-se avaliar seu uso para cada aplicação. Normalizar as palavras significa a redução ou simplificação das palavras para um único padrão. Duas técnicas comumente utilizados para isso são stemming, onde apenas truncamos ou cortamos a extremidade das palavras para um radical comum a todas (geralmente usa uma heurística gulosa e rápida), e o processo de lemmatisation, onde utilizamos um dicionário de palavras para tentar deflexionar conjugação verbal, ou trazer substantivos e adjetivos para o singular masculino, ou seja, suas formas de dicionário. É preciso uma heurística mais sofisticada e lenta. Geralmente recomenda-se stemming para busca e lemmatisation para tradução.
Fabio Figueiredo Rodrigues A terceira aula de processamento de linguagem natural foi abordado o tema “normalização de texto: palavras e stopwords”, além de retomar as expressões regulares. A aula teve como base o capítulo 2 do livro Speech and Language Processing. No final da segunda aula foi apresentada uma lista de exercícios contendo 6 questões, e na solução do exercício 6 apareceu uma nova expressão das ERs, o conceito de referência a grupos, onde os grupos são representados por parêntesis e enumeradas da esquerda para direita, e a referência é representado por uma barra invertida seguido por um número, referenciando o grupo correspondente. Por exemplo, a expressão regular “((\w+)\\.(\w+))@\1” representa duas palavras separadas por um ponto seguido de arroba e então a repetição das mesmas palavras separadas pelo ponto (Ex: fabio.figueiredo@fabio.figueiredo). Caso o grupo referenciado fosse o grupo 2 (\2), a repetição seria apenas da primeira palavra (Ex: fabio.figueiredo@fabio). A ER que seleciona palavras é representada por “\w+”, porém foi desenvolvida para ser utilizada em textos e palavras em inglês. Como essa abordagem não contempla os acentos, hífens e apóstrofes ela não é eficiente para português, e como forma de contornar isso, a ER utilizada para palavras em português é “[-‘a-zA-ZÀ-ÖØ-öø-]+”, onde se utiliza dos caracteres da tabela ASCII estendida. Quando vamos analizar um texto, podemos dividi-lo em palavras, fazer a “tokenização” do mesmo. A quantidade de Tokens é o número total de palavras, já o vocabulário é o número de palavras diferentes contidas no texto, e corpus é um conjunto de documentos/frases geralmente anotados e utilizados para aprendizado e/ou validação. Como exemplo prático, foi apresentado a analise do livro “A semana” de Machado de Assis, que consiste de 267618 tokens e um vocabulário de 25374 palavras. Das top 20 palavras que apareciam mais frequentemente no texto, elas não significavam nada para o livro, eram irrelevantes para análise, pois constituíam de artigos e preposições. Essas palavras são chamadas de stopwords, e o conjunto delas é chamado de stoplists. As stopwords podem ser eliminadas antes ou depois do processamento do texto, porém sempre devemos avaliar seu uso para cada aplicação, pois muitas das vezes a utilização dessas listas podem reduzir a efetividade da busca. Na análise, verificamos que muitas das palavras são variações de uma mesma palavra. Na língua portuguesa temos muitas variações, e para simplificar, podemos utilizar a “normalização de palavras” para reduzir/simplificar palavras. As duas técnicas mais importantes são stemming e lemmatization. A primeira consiste em reduzir a palavra à sua raiz, sem levar em conta a classe gramatical, cortando as extremidades das palavras. Já o processo de lemmatisation consiste em aplicar técnicas para deflexionar as palavras, onde se retira a conjugação verbal, caso seja um verbo, e altera os substantivos e os adjetivos para o singular masculino, de maneira a reduzir a palavra até a sua forma de dicionário. Geralmente esse processo utiliza um dicionário de palavras, e é mais lenta do que a técnica de stemming.
Willian Teruya Kimura Na aula referente ao dia 10/06, foi explicado sobre palavras e stopwords. Palavras, para PLN, dependem muito do contexto em que a linguagem é definida pelo ser humano, assim, ela se torna altamente adaptável, podendo levar sinais de pontuação em consideração ao contabilizar a quantidade de palavras ou não. Existem formas de classificar as palavras, podendo os contabilizar de maneiras diferentes: existem os tokens, que se referem à quantidade de palavras que se contém dentro de um texto, e há os tipos, a qual se referem à quantidade de palavras diferentes dentro do contexto analisado. No contexto de PLN, é utilizado o termo corpus, que se trata de conjuntos de documentos ou frases que são geralmente anotados e usados para realizar procedimentos como aprendizado (análise) ou validação. Para verificar a evolução da criação de novos vocábulos, foi realizado estudos que levaram à Lei de Herdan (1960) e Lei de Heaps (1978), em que se trata exatamente do crescimento de um vocabulário, dado por uma equação |V| = kN*b, onde 0 < b < 1. Para compreender de maneira prática o conceito de palavras, foi mostrado um exemplo prático para verificar de maneira técnica a quantidade de palavras existentes em um documento de texto, imprimindo em cada linha cada palavra contida no texto, e no final imprimindo a quantidade total de palavras encontradas. Houve outros exemplos de execução de algoritmo, em que é possível calcular um ranking das palavras que aparecem com maior frequência dentro de um texto, e, a partir desse contexto, foi importante ressaltar a definição de stopwords. Stopwords são palavras que são consideradas irrelevantes para análise, tendo como exemplos artigos ou preposições. A partir disso, foi executado outro algoritmo que criava uma condição em que não contabilizava a quantidade de stopwords a partir de uma validação feita numa stoplist que era processada antes da leitura do texto, porém nem sempre essa estratégia é adequada, sendo importante avaliar a necessidade da aplicação. Em casos em textos que tenham palavras com bases muito similares como: outro, outros, outras e outra, ou seja, que possuem diferentes termos flexionados em gênero, número, grau, e diferentes tempos verbais. Para tratar esse tipo de situação, é usado normalização de palavras, que pode ser interpretado como simplificação de palavras. Para isso, é normalmente utilizado duas técnicas: 1. Stemming – Técnica que consiste em reduzir a palavra a sua raíz (pode ser visto como a “radical” de uma palavra), não levando em consideração sua classe gramatical. Stemming, em geral, se refere a um processo de heurística que corta as extremidades das palavras e inclui com frequência a remoção de afixos derivacionais; 2. Lemmatisation – Técnica que consiste em deflexionar as palavras por meio de, por exemplo, remoção da conjugação verbal ou alteração de substantivos e adjetivos para o singular masculino, a fim de reduzir até a forma de um dicionário. Geralmente se utiliza de um dicionário de palavras. Ambas as técnicas são operações comuns utilizadas em recuperação de informação, sendo possível interpretar o Stemming como busca e Lemmatization como tradução.
Paula Keiko Miyashita A aula 3 abordou o tema de Palavras e Stopwords. De início foi realizada uma revisão do último exercício da aula anterior, explicando o funcionamento dos grupos em expressões regulares e depois uma breve explicação sobre acentuação em Regex, como mapeá-las utilizando a tabela ASCII. O tópico seguinte foi tokens e palavras. Enquanto tokens consideram todas as palavras e, dependendo da abordagem, pontuações; pode-se analisar as palavras como vocabulário, considerando palavras únicas. Assim pode-se analisar um corpus textual (conjunto de documentos ou frases) para aprendizado (análise) e validação (verificação). A Lei de Herdan e a Lei de Heaps diz que o vocabulário pode ser definido como kN^(beta), onde N é o número de tokens e beta é um valor entre 0 e 1. A aula seguiu demonstrando alguns códigos em python que passavam corpus textual por expressões regulares e depois dividiam as palavras em tokens e vocabulários, permitindo contabilizar a quantidade de palavras total no texto (tokens) e a quantidade total de palavras diferentes no texto (vocabulário), assim como suas frequências. Tornou-se possível listar as dez palavras mais frequentes, mas quando o fizemos, obtivemos palavras que não poderiam descrever o conteúdo do texto analisado. Estas são chamadas de stopword (stoplist), palavras que em muitos contextos podem ser consideradas irrelevantes, normalmente artigos e preposições. Já existem bibliotecas que ajudam a tratar stopwords, mas pode-se facilmente criar sua própria lista de stopwords, como no exemplo mostrado em sala. Ao rodar o script novamente, excluindo as stopwords, tivemos um resultado mais coerente. Foi lembrado que em alguns contextos as stopwords são vitais para o entendimento do texto, então seu uso deve ser avaliado para cada aplicação. Houve até uma pesquisa sobre a efetividade de uma busca em relação ao tamanho da lista de stopwords utilizada. Um tópico citado brevemente foi de como definir quantos tokens existem em palavras sem espaço ou divisão aparente, como idiomas asiáticos ou mesmo o alemão, essa divisão de tokens pode ser realizada utilizando um dicionário e uma busca gulosa, onde o algoritmo tenta segmentar sempre pela maior palavra presente no dicionário que pode ser encaixada no texto. O tópico seguinte foi a normalização, forma de tentar juntar palavras de mesma origem e significado, mas conjugadas de modo diferente, por meio de redução ou simplificação. Em geral, estas podem ser consideradas como um único item de vocabulário. As duas técnicas mencionadas foram Stemming e Lemmatisation. Stemming tenta reduzir a palavra à sua raiz cortando as extremidades da palavra, existem diferentes tipos de Stemming (Lovins Stemmer, Porter Stemmer e Paice Stemmer foram os três tipos citados). Lemmatisation aplica técnicas para deflexionar (retirar conjugações verbais, e alterar substantivos e adjetivos para o singular masculino) as palavras e reduzi-las a sua forma de dicionário. Normalmente são necessários dicionários de palavras, mas é uma operação mais demorada. Em geral, aconselha-se o uso de Stemming para buscas e Lematisation para traduções. Por fim, foi comentando um pouco sobre o método utilizado para classificar os resumos de aula.
Yago Sorrilha Revisão da Aula 2 Expressões Regulares Cada sub-expressão entre parênteses em uma ER é um grupo, os operadores númericos em uma ER, como “\1” referem-se ao grupo precedente. Aula 3 Normalização de texto: Palavras e stopwords Para podermos aceitar caracteres em português (como acentos e hífens) temos que utilizar a tabela ASCII estendida. Palavras (Tokenização) Podemos divergir ao contar palavras de um texto, dependendo dos critérios utilizados, por exemplo, se consideramos palavras com hífen como uma palavra só ou duas palavras, ou se considerarmos pontuação como palavras. Além disso, é importante contarmos o número de palavras no texto mas destacar também o número de palavras diferentes que aparecem (vocabulário) * A Tokenização é dividir o texto em palavras * Token é uma palavra, total = N * Vocabulário é o número de palavras diferentes = V * Corpus (corpora no plural): coletânea sobre um assunto determinado No contexto de PLN, corpus é um conjunto de documentos ou de frases, geralmente anotados e utilizados para: * Aprendizado (análise) * Validação (verficiação) Lei de Herdan, Lei de Heaps Crescimento de um vocabulário |V| = kN^b, 0 < b < 1 Ou seja o tamanho de um vocabulário cresce proporcionalmente ao número de palavras Algoritmo: Maximum Matching Nesse algoritmo é requerido um dicionário e ele utiliza busca gulosa Algoritmos de segmentação mais sofisticados usam modelos estatísticos (aprendizado supervisionado) Palavras com pouco sentido semântica: stopword/stoplist * Em muitos contextos uma stopword pode ser considerada uma palavra irrelevante para análise (artigos, preposições) * As stopwords podem ser eliminadas antes ou depois do processamento/leitura do texto * Devemos avaliar seu uso para cada aplicação * Muitas aplicações, como motores de busca, não usam stopwords * O tamanho da stoplist pode reduzir a efetividade da busca, acarretando em um trade-off entre remover palavras com pouco significado e obter efetividade Normalizando as palavras Em texto da língua portuguesa temos diferentes palavras flexionadas em gênero, número e grau, além de inúmeros tempos verbais distintos A normalização de palavras pode ser entendida como a redução ou a simplificação de palavras Stemming O processo de stemming consiste em reduzir a palavra à sua raiz (sem levar em conta a classe gramatical) Ex.: amig (amigo, amiga, amigão) * Stemming geralmente refere-se a um processo de heurística que corta as extremidades das palavras e inclui frequentemente a remoção de afixos derivacionais * Pode ser representado por um conjunto de regras que dependem da linguagem Lemmatisation O processo de lemmatisation consiste aplicar uma técnica para deflexionar as palavras (retira a conjugação verbal, caso seja um verbo, e altera os substantivos e os adjetivos para o singular masculino, de maneira a reduzir a palavra até a sua forma de dicionário) EX.: amigo (amigo, amiga, amigão) Ter (tinha, tenho, tiver, tem) Lemmatisation geralmente usa um dicionário de palavras (a heurística é mais sofisticada) Os melhores resultados semânticos são obtidos com lemmatisation Recuperação de Informação Um vocabulário menor pode levar a um melhor desempenho na busca As operações de stemming e lemmatisation são operações comuns e iniciais utilizadas em sistemas de recuperação de informação. Busca: stemming Tradução: lemmatisation
Giselle Silva de Santana Na aula 3, do dia 10/06, foi abordado o assunto “Normalização de texto: Palavras e Stopwords”. A aula teve início com uma atividade para que os alunos respondessem algumas questões utilizando apenas seu conhecimento do assunto da aula até aquele momento. Depois retomou-se um dos exercícios da aula anterior sobre Expressões Regulares e vimos um pouco sobre o funcionamento da tabela ASCII estendida. Em seguida iniciou-se o novo assunto, que se encontra presente no segundo capítulo do livro texto do autor, Dan Jurafsky. As palavras são tokens, portanto cada palavra presente em um texto representa um token. A contagem da quantidade de tokens pode mudar conforme sua forma de avaliação (ou criação das Expressões Regulares), pois em algumas situações somente as palavras serão contabilizadas, por exemplo, na frase “Boa noite, durma bem.” seriam contadas 4 palavras. Mas a mesma frase poderia ser contabilizada com 6 palavras caso a pontuação (nesse caso, vírgula e ponto final) também fizesse parte da Expressão Regular responsável pela detecção. Os tokens são todas as palavras presentes, mesmo as repetidas. Já os types (vocabulários) são as palavras diferentes presentes no texto, como por exemplo, em “Muito longo para os que lamentam, muito curto para os que festejam” existem 12 tokens, porém apenas 8 types. Em PLN existe a denominação Corpus, que se trata de um conjunto de documentos ou frases, geralmente anotados, que são utilizados para validação (verificação) e aprendizado (análise). Também vimos que muitas vezes as palavras mais frequentes em um texto não trazem nenhuma informação sobre o mesmo. As Stopwords podem ser consideradas palavras que são irrelevantes para a análise e entendimento do texto e podem ser eliminadas antes ou depois do processamento/leitura do texto. Porém, nem sempre remover as stopwords é a melhor opção, conforme apresentado em aula, muitas vezes elas complementam o sentido da expressão, como por exemplo, ”Viagem casa” não é uma expressão muito informativa, enquanto a versão com a stopword, “Viagem para casa” faz mais sentido. Vimos que o tamanho da lista de stopwords pode reduzir a efetividade em uma busca e o assunto sobre a importância da stopwords é discutido desde aproximadamente 1960 e ainda hoje não se há um consenso. Também foi apresentado o conceito de “Normalização das Palavras”, que pode ser entendido como a simplificação (ou redução) de palavras e as principais técnicas para isso são Stemming e Lemmatization. Stemming consiste em reduzir a palavra a sua raiz, normalmente cortando as extremidades como, por exemplo, gat se referiria a gato, gata, gatão e existem diferentes algoritmos para isso. Lemmatization retira a conjugação verbal dos verbos e altera adjetivos e substantivos para seu singular masculino (ex.: ter: tinha, tenho, tem; aluno: aluna, aluno, alunos) e geralmente utiliza um dicionário de palavras. Tais técnicas são comuns em sistemas de recuperação de informação e além disso, um menor vocabulário pode ajudar com que a busca tenha um melhor desempenho. Além disso, códigos Python foram apresentados ao longo da aula como exemplos práticos.
Laura Cestavo Borges Dos Santos Na última aula, foi visto sobre expressões regulares (ER). Nessa aula, houve a continuação do assunto, aprofundando-o um pouco e foram vistos diversos tópicos, os quais serão relatados a seguir. As ERs podem ter parênteses, dividindo a expressão em sub-expressões. Cada uma dessas sub-expressões são conhecidas como grupos. Por, exemplo, a expressão ((\w+)\\.(\w+)) contém 3 grupos. Muitas vezes, ERs são utilizadas para buscar palavras em um texto, dessa forma podendo contabilizar o total de palavras (tokens) e também o total dentro do vocabulário do texto, ou seja, a quantidade de palavras distintas dentro de um texto. Na aula anterior, vimos que o “\w+” consegue identificar qualquer alfanumérico e _, porém essa expressão tem um problema. Em línguas como o inglês ela funciona perfeitamente, porém em línguas como o português, que possui letras acentuadas e hifens, por exemplo, ela não é suficiente. Para conseguir identificar as palavras em português é preciso estender essa expressão, de acordo com a tabela ASCII, para conseguir agregar os caracteres acentuados e adicionar os outros caracteres como - e ‘. No contexto de PLN, existe um termo chamado corpus, que é um conjunto de documentos (ou frases) geralmente anotados e utilizados para aprendizado (análise) e validação (verificação). É possível fazer um código em python, passando a expressão regular que busca por tokens, e que inclui caracteres acentuados e hifens, para contar o número de tokens e a quantidade de palavras dentro de um vocabulário. Também é possível buscar pelas palavras que mais aparecem no texto, porém ao fazer isso, foi visto que as palavras mais usadas são stopwords/stoplists. Stopwords/stoplists são palavras de pouco significado semântico, como artigos e preposições, porém não é possível descarta-las em todos os casos, pois em alguns contextos elas podem ser importantes, como no caso da palavra Rio de Janeiro. Um outro problema na busca de tokens dentro de um texto é que a língua portuguesa tem diferentes palavras flexionadas em gênero, número ou grau, além dos diversos tempos verbais distintos. Para solucionar isso é utilizado a normalização de palavras, que nada mais é que a redução ou simplificação de palavras. A normalização tem duas técnicas mais importantes: stemming e lemmatisation. Stemming consiste em reduzir a palavra a sua raiz, dessa forma mantendo só aquilo que é comum a todas as suas variações. Geralmente, refere-se a um processo de heurística que corta as extremidades das palavras e inclui frequentemente a remoção de afixos derivacionais. Suponha as palavras: amigo, amiga, amigão, amigos, amigas. Um algoritmo de stemming acharia como raiz “amig”. Lemmatisation consiste em técnicas para deflexionar as palavras, por exemplo, retirar a conjugação verbal e alterar os substantivos e os adjetivos para o singular masculino, dessa forma reduzindo a palavra até sua forma de dicionário. Usando o exemplo anterior das diversas variações da palavra amigo, todas elas seriam “convertidas” em amigo. Os dois métodos citados acima são utilizados pois diminuem o vocabulário e isso pode levar um melhor desempenho na busca.
Ramon Neres Teixeira Jardim No início da aula foi abordado o uso de grupos em expressões regulares que permitem que uma expressão regular encontre uma cadeia igual à alguma outra já encontrada anteriormente. Para utilizá-los, deve-se colocar alguma expressão entre parênteses, de forma que a expressão mais externa e mais a esquerda será será indicada por um "\1", a segunda por um "\2" e assim por diante. Estes símbolos encontraram uma cadeia idêntica à encontrada pelo grupo à qual ela representa, por exemplo, utilizar a expressão "((\w+)\\.(\w+))@\2" na string "joao.costa@joao.costa.com" retornaria a string "joao.costa@joao". Posteriormente foi falado sobre expressões regulares utilizadas para reconhecimentos de palavras em idiomas que utilizam acentos, cedilha e outros caracteres especiais que não não reconhecidos pela expressão "\w+" e que causavam inconsistências na hora tokenizar um texto. Foi visto que as sequências do tipo "[a-z]" são baseados na tabela ASCII estendida, ou seja, a expressão "[a-z]" encontrará qualquer caractere que esteja entre a e z na tabela ASCII. Dessa forma, podemos aproveitar o fato de os caracteres com acento estarem dispostos em alguns conjuntos e montar uma expressão regular para também encontrá-los e dessa forma reconhecer palavras em português sem problemas com acentuação. A expressão é a seguinte "[-'a-zA-ZÀ-ÖØ-öø-ÿ]+". Também foi visto o conceito de token, vocabulário e corpus, no qual tokens são as palavras de um dado texto, o vocabulário é o conjunto das palavras únicas neste texto e o copus é um conjunto de documento utilizado para validação do texto ou aprendizado a partir do texto. No início da aula foi feita uma pequena avaliação que abordou temas como tokenização (que já foi citado aqui) stopwords/stoplists e normalização de palavras. Ao final da aula, estes dois últimos termos foram especificados. Uma stopword é uma palavra que aparece muitas vezes em um texto e que sozinha não agrega muito significado, fazendo com que ao obter a lista com as palavras mais comuns em um texto, seja obtido uma lista de palavras que não ajudam a estudar o texto, para resolver este problema, são utilizadas stoplists, que são listas de stopwords que serão ignoradas na análise do texto, removendo estas palavras sem significado do estudo. Após a remoção das stopwords outro problema aparece. Muitas palavras parecidas começam a aparecer, por exemplo, amigo/amiga/amigos/amigão, outro/outra/outros, trabalhador/trabalhadoras/trabalhadora, carrego/carrega etc. e para resolver este novo problema, é necessário fazer uma normalização das palavras do texto. As duas técnicas mais importantes são o Stemming e a Lemmatisation. O stemming consiste em reduzir a palavra a sua raiz, removendo sua parte final de forma a igualar todas estas palavras parecidas, por exemplo, amig, outr, trabalhador, carreg. O Lemmatisation tenta reduzir estas palavras à sua forma de dicionário, ou seja, remover a conjugação verbal e transformar os substantivos e adjetivos para o singular no masculino, por exemplo, amigo, outro, trabalhador, carregar.
Lucas Kenzo Kurokawa A aula começa com a apresentação da bibliografia recomendada, o livro “Speech and language processing“ do Jurafsky. Com isto, seguimos para uma revisão da aula passada, expressões regulares(regex), e aprofundamos sobre uso de tabelas ASC e grupos em regex. Após, seguimos com o tópico de palavras e tokenização, e como podemos contar- nos dependendo do uso de acentos, letras maiúsculas ou pontuações. Com isso, introduziu-se o conceito de corpus, que é um conjunto de documentos (frases) usualmente anotados para aprendizado ou verificação. Com isso, estudamos sobre as leis de Herdan e Heaps, que definem uma função para cálculo de crescimento de tamanho do vocabulário como k*N^B. Ao plotarmos esta função, isso nos dá um gráfico de tamanho de Vocabulário x Tokens, que forma uma curva do tipo logarítmica. Dado esta introdução de corpus, seguimos para uma breve parte prática, onde vimos um algoritmo na linguagem Python um exemplo de corpus de Machado de Assis. Neste script, vimos como usar a biblioteca “re” (regular expression) para aplicarmos os conceitos teóricos aprendidos, por exemplo: como definir uma regex e usar para contar o número de palavras existentes neste corpus. Também vimos como implementar um dicionário em python para contarmos qual a frequência de ocorrências de cada palavra neste corpus, e observamos que as palavras mais frequentes do corpus eram as stop-words. Entretanto, quando contamos palavras temos que ter alguns cuidados, pois dependendo da regex que definirmos, teremos problemas ao lidarmos com números, valores monetários, palavras estrangeiras (alemão, por exemplo) ou compostas e alfabetos distintos (japonês, chinês, árabe, etc). Um algoritmo usado para esta finalidade é o “Maximum Matching”, que requer um dicionário e realiza uma busca gulosa, onde ele pega a maior string possível que exista no dicionário e segmenta como uma palavra (por exemplo, “wecanonlyseeashortdistanceahead” deveria ser segmentado como “we can only see a short [...]”, mas acaba segmentando como “we canon l y... [...]” pois a palavra canon está no dicionário. Por isso, quando queremos usar para alguma aplicação prática (e não didática) geralmente usamos algoritmos mais sofisticados, que usam modelos estatísticos (aprendizado de máquina supervisionado). Voltando para analisarmos as palavras mais frequentes do corpus, percebemos que as stopwords não possuem muito valor semântico e geralmente são preposições e artigos, apesar de existir pronomes e alguns verbos. Após a remoção das stopwords da lista e ver a lista novamente, podemos inferir muito mais sobre o assunto do texto, mas temos que ter alguns cuidados. Por exemplo, se removermos stopwords de palavras como: Rio de Janeiro, internet das coisas e vitamina A, ficaremos com Rio Janeiro, internet coisas e vitamina, o que altera a semântica da frase. Geralmente os motores de busca (como google) não usam stopwords, somente palavras chave. Esse tema é debatido desde os anos 60 e existem artigos que debatem a eficiência e eficácia de remover ou incluir stopwords dependendo da finalidade. No fim da aula, vimos também uma introdução à normalização das palavras (lemmatization, stemmization).
Marcelo Schirbel Gomes Aula03 Palavras e Stopwords Grupos Imagine que precisamos identificar dois termos identicos, dentro da mesma expressão. Para isso, podemos definir um grupo, e fazer uma comparação posterior com os grupos que definimos. Temos a expressão \w+ para identificar qualquer caractere alfanumérico, mas ele não considera uma palavra como 'calção', pois o 'ç' e o 'ã' não são considerados para o portugues. Para corrigir isso, podemos usar alguns caracteres especiais, da tabela ASCII do A-O(com trema) do vazio até o o(com trema) do vazio minusculo até o y(com trema) Para ver os caracteres, precisamos ver a tabela ASCII, para outras linguas essa tabela pode não servir. Para incluir os números, podemos colocar um '0-9' no fim da expressão. Tokenização Tokens são palavras, e o número de palavras diferentes são vocabulário. Tokens são referidos pela letra *N*. Vocabulário é referido por |V| Corpus textual No contexto de PLN um corpus é um conjunto de documentos ou de grases geralmente anotados e utilizados para aprendizado(análise) ou de validação. Análise empírica Lei de Herdan diz que 'crescimento de um vocabulario é dado por |V| = k * N^b Sendo k uma constante, N o número de palavras e b um número de 0 a 1. Palavras em Python E assim temos o número de palavras diferentes, basta termos um dicionário e comparar cada nova palavra com as entradas do dicionário. Para imprimir as 20 palavras mais frequentes: E vai existir uma grande diferença entre o número total de palavras e o número de palavras únicas. E outra coisa interessante é que as palavras que mais são usadas são as *stopwords*, palavras que não trazem muita informação sobre o texto. Por exemplo, 'que', 'de', 'se' e outras, como preposições, conjunções e etc. Estratégias para dividir palavras Existe um algoritmo sofisticado, chamado de Maximum Matching, é um algoritmo guloso, que requere um dicionário. A saída depende muito de um dicionário. Os algoritmos de segmentacao usam muitos modelos estatísticos(aprendizado supervisionado). Mas todas elas podemos reduzir para 'outro' no masculino e no singular. Isso se chama de normalização, ou seja, a simplificação de palavras. Temos duas técnicas mais importantes, como o 'Stemming' e a 'Leammatization'. Stemming Stemming consistem em reduzir a palavra a sua raíz. Por exemplo: Ele não usa informação de contexto ou de dicionário. Apenas corta as extremidades das palavras e inclui frequentemente a remoção de afixos derivacionais. Existem alguns algoritmos Todos eles aplicam os artefatos de stemmer sobre alguns textos. Lemmatisation Consiste em aplicar uma técnica para deflixionar as palavras(retira a conjugação verbal), caso seja um verbo, altera os substantivos para o singular e masculino. Lemmatisation geralmente usa um dicionário de palavras(ou seja, é mais sofisticado). E por isso, o algoritmo é mais lento. Mas obtém os melhores resultados. Recuperação de Informação Um vocabulario menor pode levar a um melhor desempenho na busca. Mas geralmente os algoritmos são usados para tarefas diferentes: Busca: Stemming Tradução: Lemmatisation
Lucas Zanoni de Oliveira Ainda referente às expressões regulares, temos o conceito de grupos que possuem como característica a formatação de uma expressão entre parênteses, tendocomo função principal possibilitar a identificação de segmentos de um determinado elemento, como por exemplo um e-mail de formato lucas.zanoni[@gmail.com](mailto:teste.123@gmail.com). Com a aplicação de expressões regulares para grupos, podemos identificar, por exemplo, o nome próprio do e-mail (“lucas”), e o sobrenome (“zanoni”). Para que isso seja possível, formatamos duas ER, divididas pelo elemento que as separa, da seguinte forma: ((/w+(/.(/w+))@; possibilitando a extração de ambas as informações. Outro conceito visitado, foi o de ER para as palavras. Para que seja possível a identificação de qualquer caractere alfanumérico, podemos utilizar /w+. Já para a identificação de palavras formadas apenas por letras, temos a ER [a-zA-Z]+, seja maiúsculas ou minúsculas. Por final, para a formatação de uma expressão regular para a tabela ASCII estendida, podemos utilizar a ER [-'a-zA-ZÀ-ÖØ-öø-ÿ], onde podemos observar dois intervalos característicos nela. O primeiro ocorre entre o caractere “À” e o “Ö”, que utilizando uma tabela ASCII, podemos ver que na posição 215, uma após o “Ö”, temos o sinal de multiplicação, que por sua vez não é utilizada e nem categorizado como um elemento de nosso alfabeto. O segundo intervalo ocorre entre “Ø” e “ö”, devido ao sinal de divisão localizado na posição posterior (247) ao caractere “ö”, que assim como a multiplicação, não faz parte do nosso alfabeto, e logo pode ser desconsiderado. Vale ressaltar, que todos esses “caracteres especiais” são variações do nosso alfabeto original, porém com alguma alteração ortográfica, como por exemplo um acento. Trazendo para o âmbito da língua portuguesa, poderíamos restringir ainda mais a lista citada anteriormente, de tal forma que apenas as letras acentuadas utilizadas, fossem consideradas. Os tokens por sua vez, podem ser considerados palavras, visto que em uma frase, por exemplo “oi, tudo bem?”, podemos obter 3 tokens sendo as 3 palavras (mesmo considerando o “?” e a “,”). Seguindo essa linha, temos a distinção de “tokens”, que são palavras irrestritas, para “tipo/vocabulário” que são as palavras diferentes, onde em “a a a”, temos 3 tokens, porém 1 tipo/vocabulário. Considerando a análise empírica, baseada na Lei de Herdan e Heapes, temos que a relação “tipo/vocabulário” (y) e “tokens” (x) é logarítmica, sendo expressa pela fórmula |V|=kN^(B), onde quanto mais tokens temos, menor é a taxa de crescimento do volume de vocabulários. Além disso temos o algoritmos Maximum Matching que realiza a segmentação de frases, as stopwords/stoplists que são palavras com pouco sentido semântico (Ex: que, para), e as técnicas stemming e lemmatization, de normalização/redução de palavras (Ex: gato, gata ? gat) e deflexionamento de palavras (Ex: tinha, tenho ? ter), respectivamente. Temos também que o corpus é um conjunto de frases utilizados, normalmente, para análise e verificação, enquanto de corpora será o conjunto de corpus (plural).
Amanda Cruz Francesconi A primeira parte da aula tratou o assunto da última aula de expressões regulares, respondendo o último exercício do teste em que deveria ser criada uma expressão regular que identificasse no texto duas palavras repetidas consecutivas, a resposta dada foi: \b (\w+)\W+\1 A parte entre parenteses da expressão configura um grupo, uma sub-expressão identificável pelo \1, cada parenteses aberto é um grupo. O próximo assunto tratado foi sobre como identificar corretamente palavras num texto, considerando por exemplo a língua portuguesa que tem acentos e caracteres especiais nas palavras (como por exemplo D'água), se o comando \w+ só identifica letras e underline. A solução encontrada é a utilização da Tabela ASCII (estendida), que contém as letras com acento utilizadas pela língua. Assim uma das maneiras corretas de se identificar corretamente palavras para o português é a ER: [-'a-zA-ZÀ-ÖØ- öø-y]. O processo de dividir o texto em palavras é conhecido como tokenização, cada token é uma palavra do texto que pode aparecer inúmeras vezes. Já o conceito de vocabulário (ou tipos) indica quantas palavras diferentes existem nesse texto. Corpus (plural corpora) são coletâneas sobre um determinado assunto em que se pode analisar o número de tokens (N) e o vocabulário (V), por exemplo, no corpus de Shakespeare há 884 milhares de tokens e somente 31 milhares de tipos. Corpus são normalmente utilizados para aprendizado e validação. Uma análise empírica mostrou que a relação entre tokens e tipos segue uma regra logarítmica, de V= kN^beta, onde beta é um número entre zero e um. Para essa análise é possível importar uma biblioteca pronta em Phyton (import re) que abre o documento, le da maneira especificada pelo código (leitura inteira, de linha a linha) e executa a expressão regular de palavra em palavra. É possível também criar uma espécie de dicionário onde são elencadas todas as palavras contidas no texto e a quantidade de vezes em que essas aparecem. Ao rodar esse programa e identificar as palavras mais utilizadas, percebe-se que são todas palavras "sem significado", pronomes, conectivos, artigos, preposições), essas são as stopwords ou stoplists como por exemplo: que, do, mas, aquele, etc. É possível remover essas palavras da análise utilizando o código em Phyton. Entretando é necessário ter cuidado com a remoção das stopwords, pois algumas expressões podem perder o sentido, como Rio DE janeiro, internet DAS coisas, vitamina A, entre outros. Esse é um assunto de interesse e vem sendo estudado desde 1960. O último tema tratado foi o de normalização das palavras, que consiste em reduzir as palavras buscando a simplificação. Existem duas técnicas principais, a primeira é a Stemming (poda ou truncamento), que reduz a palavra a sua raiz. Existem 3 principais algoritmos que realizam essa técnica, estudaremos a Porter Stremmer. A segunda é a Lemmatisation que leva a palavra para a forma encontrada no dicionário, o singular masculino), este geralmente leva a um melhor desempenho na busca.
Felipe Rigo Yoshimura A terceira aula de processamento de linguagem natural teve como conteúdo a normalização de texto, tanto na transformação de palavras como na quebra do texto em tokens. A bibliografia é baseada no capítulo 2 do [Speech and language processing](https://web.stanford.edu/~jurafsky/slp3/). O uso do parênteses em uma ER é utilizado para definir uma sub-expressão ou um grupo, defindo-se que a numeração dos grupos é da direita para esqueda, partindo dos grupos maiores para os menores. Relembrando a última aula, utiliza-se \1 para repetir o último padrão ou grupo utilizado, essa ideia pode ser extendida para outros números pegando o n-último padrão ou n grupo. Para utilizar uma ER para palavras em inglês pode-se utilizar \w, o qual captura padrões contendo caracteres, números e underline. Porém para se obter um ER para palavras na língua portuguesa, baseando-se na tabela ASCII extendida, utiliza-se [-’a-zA- ZÀ-ÖØöøÿ]. Tokenização é o processo de quebrar o texto em pedaços menores conhecidos como tokens ou palavras. Um conjunto de palavras que não se repetem no texto é chamado de vocabulário. O Corpus é uma coletânea sobre determinado assunto, ou seja, vários textos falando do mesmo tema fornecendo uma base de dados daquele ramo. No contexto de PLN, um corpus é um conjunto de documentos (ou de frases) geralmente anotados e utilizados para: Aprendizado (análise) e Validação (verificação). Algumas análises empíricas demonstram as Leis de Herdan/ de Heaps. Elas dizem que o crescimento de um vocabulário V é logaritmicamente proporcinal com o número de palavras no texto. Um biblioteca que pode ser utilizada em python para er é a re. Algumas considerações não triviais com tokenização é o fato que nem sempre o espaço é a quebra padrão de tokens, pode-se utilizar para isso um algoritmo maximum matching que faz uma busca gulosa utilizando um dicionário. Porém, os algoritmos de segmentação mais sofisticados usam modelos estatísticos (aprendizado supervisionado). Uma técnica que pode ajudar em muitos casos é a remoção de stopwords, as quais são palavras irrelevantes para a análise, elas podem ser removidas tanto antes quanto depois da análise. Porém em alguns casos, remover as stopwords pode acabar descaracterizando a exepressão. Em português temos diferentes palavras flexionadas em gênero, número ou grau, além de inúmeros tempos verbais distintos. A “normalização de palavras” pode ser entendida como a redução ou a simplificação de palavras. As duas técnicas mais imporantes são o Stemming e o Lemmatization. O stemming reduz via poda, ou seja, reduz a palavra até sua raiz. Já o lemmatization tranforma na sua forma inflexivel ou de dicionário, porém é necessário a utilização de um dicionário de palavras e seu processamente é demorado. No contexto de recuperação de informação, um vocabulário pode levar a um melhor desempenho na busca. Uma regra simples que pode ser adotada é utilizar o stemming para busca e o lemmatisation para tradução.
Lucas Ferraz Nicolau Inicialmente, foi realizada uma breve revisão do conteúdo anterior de expressões regulares, se propondo a explicar os conceitos de retrovisores e de grupos para resolução do exercício 6 da avaliação. Retrovisores (representados pela barra invertida seguida de um número inteiro) são estruturas que buscam uma repetição do conteúdo do grupo que elas referenciam e, por sua vez, os grupos são divisões feitas por parênteses (“(” e “)”) na estrutura da ER, gerando subdivisões das capturas. Também foi abordado o uso da captura de sequências de caracteres da tabela ASCII estendida para um melhor processamento de textos em idiomas distintos do inglês como, por exemplo, a captura de letras acentuadas e caracteres especiais presentes nas palavras no português. Em seguida, foram apresentadas algumas definições pertinentes ao contexto de PLN. Palavra, ou token, é uma sequência de caracteres aceita dentro de um idioma e identificável por uma ER. Um conjunto de palavras, desconsiderando repetições, define um vocabulário onde cada um dos seus elementos é denominado tipo (do inglês type). Uma coletânea textual sobre um determinado assunto é definido como corpus (de plural corpora), sendo este o objeto comum de PLN para realização de análises e verificações. Utilizou-se então o conjunto de crônicas “A semana” de Machado de Assis como corpus para aplicação prática, através do python, dos conceitos expostos. Foram realizadas tanto a contagem de palavras do corpus quanto a identificação e contagem de seu vocabulário, utilizando para este a estrutura de dicionário do python. Foram apontadas algumas observações não triviais sobre a dificuldade da identificação de palavras, principalmente, se tratando de diferenças idiomáticas na separação de palavras. Neste contexto, foi apresentado o algoritmo Maximum Matching que utiliza de um dicionário para dividir palavras dentro de um input, totalmente concatenado, através de uma busca gulosa. Na sequência, introduziu-se o conceito de stopwords que seriam palavras que ocorrem com alta frequência mas não possuem valor semântico que descreva o contexto em que se encontram, sendo irrelevante para análise do corpus. Pode- se então criar diversas stoplists para identificar as stopwords de cada idioma contendo em sua maior parte artigos, preposições, conjunções, advérbios e verbos mais recorrentes para, assim, facilitar a remoção destas palavras do corpus. Entretanto, vale destacar que, em certos contextos, uma stopword pode ser utilizada dentro de uma expressão pertinente ao tema ou permitir diferentes interpretações, logo, podendo vir a ter valor semântico. Por fim, apresentou-se a ideia de normalização de palavras que se trata da redução ou simplificação de diferentes palavras para uma única que caracterize seu significado, desconsiderando flexões de gênero, número, grau ou conjugações verbais. Das técnicas vistas em aula temos o processo de steeming, que consiste de uma heurística para remover sufixos e prefixos das palavras deixando apenas sua raiz, e o processo de lemmatisation, que utiliza um conjunto estruturado de palavras para deflexionar um token de modo a determinar qual seria sua forma encontrada em um dicionário.
Eduardo Haberler Cardoso A terceira aula de processamento de linguagem natural foi iniciada fazendo um breve resumo do tema central da aula passadas, expressões regulares, e introduziu o conceito de sub-expressões denominadas como grupos, que dentro das expressões regulares são descritos entre parênteses, para designar uma sequência específica, que posteriormente pode ser referenciada por um número precedido de barra invertida (Ex: para referenciar o primeiro grupo, utiliza- se \1). Em seguida tratamos sobre os casos envolvendo acentuação, especificidade importante da língua brasileira, frente a outras línguas como o inglês por exemplo. Logo após, os conceitos envolvendo a tokenização foram detalhadamente explorados, com muitos exemplos. Estes conceitos foram a definição de token como palavra, o conceito de vocábulo como palavra exclusiva e o significado de corpus, como sendo um conjunto de documentos utilizados para aprendizado e validação. Em seguida, foi dado um exemplo em python de dois programas que, no primeiro, separa as palavras (ou tokens) do texto e o segundo que conta a quantidade de palavras e a quantidade de vocábulos dado um texto de entrada, nestes casos foi utilizado como exemplo de entrada um livro do autor brasileiro Machado de Assis, chamado "A Semana", que, segundo este programa, possui 267618 tokens e 25374 vocábulos. Neste exemplo o corpus era o livro do renomado autor. Em seguida foi explorado o conceito de stopwords e stoplists. Stopwords são palavras que, em geral, não acrescentam valor para a análise dos textos, como exemplo de stopwords temos os tokens "a", "o", "de", "na", "em", etc. Em geral são palavras bastante numerosas que não dizem muito sobre o conteúdo do que está escrito. As stoplists nada mais são que listas de um determinado número de stopwords, que podem ser utilizadas para "limpar" os textos para analisá-lo com algum tipo de algoritmo, porém é importante ressaltar que muitas aplicações não utilizam esta técnica. Por fim, tratamos sobre normalização de palavras, que se trata da redução das palavras a seus radicais ou lemas com o objetivo de criar categorias de palavras para a análise. O radical de uma palavra é o truncamento da palavra para identificar a sua categoria semelhante, por exemplo a palavra "outro" teria como radical "outr", pois assim seria possível identificarmos as palavras "outro", "outra", "outros", "outras", "outrem" que possuem significado semelhante e podem ser agrupadas para otimizar uma determinada análise. Como exemplo de técnica de redução ao radical das palavras temos o Stemming. Já o lema reduz a palavra à sua forma canônica, isto é, masculino e singular, para substantivos e adjetivos, e infinitivo para verbos. Basicamente esta técnica reduz as palavras à forma que ela é apresentada no dicionário. Uma técnica que é capaz de fazer isto com o texto é denominada lemmatisation. Ambas as técnicas são utilizadas em sistemas de recuperação de informação como aplicações de busca e/ou tradução.
Tamiris Gabriele da Silva Lira A terceira aula de Processamento de Linguagem Natural iniciou com uma breve retomada da aula anterior sobre expressões regulares e seguiu demonstrando que as expressões regulares (ER) devem ser adaptadas de forma que possam contemplar o texto em que elas serão usadas de maneira satisfatória. Assim, idiomas diferentes podem requerer expressões regulares diferentes. Como exemplo foi apresentada a seguinte ER, que faz uso da Tabela ASCII estendida para atender um texto que possui acentos e caracteres especiais: [-'a-zA-ZÀ- ÖØ-öø-ÿ]. Em seguida foi introduzido o conceito de Tokenização, que nada mais é que um mecanismo para identificar palavras (tokens). Ao analisar um texto, podemos contar de quantas palavras ele é composto (onde cada palavra é, portanto, um token), bem como podemos contar quantas palavras diferentes tal texto possui - o que, nesse caso, chamamos de vocabulário. Um Corpus Textual pode ser definido como um registro composto por documentos que podem ser usados como base para aprendizado e validação em PLN. A parte de prática em python apresentou programas que analisam a obra "A Semana", de Machado de Assis. O primeiro código apresentado conta o número de palavras em "A Semana", 267618, de acordo com a regex [-'a-zA-ZÀ-ÖØ-öø-ÿ0-9]+. O segundo código devolve o número de tokens (ainda usando a regex anterior), 267618, o Vocabulário (isto é, o número de tokens diferentes), 25374, e as 20 palavras mais utilizadas na obra. A partir desse exemplo podemos verificar que as 20 palavras mais utilizadas no texto de Machado de Assis não nos traz nenhuma informação, não podemos inferir nada sobre "A Semana" a partir delas e, assim, o conceito de Stopword é introduzido. As stopwords (também chamadas de Stoplists) são palavras que, na maioria dos contextos, não carregam grande significado semântico e podem ser irrelevantes para análise (como por exemplo "que", "a", "um", etc.). No caso do texto de Machado, ao refazermos a busca ignorando as stopwords temos que o grupo das 20 palavras mais frequentes se altera completamente, mesmo que ele não nos traga nenhuma informação concreta sobre a obra. Ainda que em muitos casos as stopwords possam ser consideradas irrelevantes, em alguns deles elas são imprescindíveis como o caso de "Rio de Janeiro", no qual a eliminação da stopword "de" causa mudança de significado para a expressão. Por fim, a aula tratou do conceito de normalização de palavras, que é a simplificação desses termos. Dentro desse conceito, duas técnicas foram abordadas: Stemming e Lemmatisation. Enquanto Stemming é um procedimento que reduz as palavras à sua raiz, cortando o final (ex: as palavras "chego, chegou, chegaram" seriam reduzidas a "cheg"), Lemmatisation usa um dicionário de palavras para reduzir as palavras à forma que ela está escrita no dicionário (ex: as palavras "chego, chegou, chegaram" seriam reduzidas a "chegar").
Pedro Ricardo Bronze Inicialmente revisamos como adicionar letras acentuadas, para tal a expressão regular [-'a-zA-ZÀ-Ö...-ö...-ÿ] foi apresentada, na qual '...' compreendem o caractere de o cortado minúsculo e maiúsculo. Assim poderíamos procurar por hífens, apóstrofe e acentos no geral. Então discutiu-se corpus textual, que seria um conjunto de documentos utilizados para análise e validação. Então vimos lei de herdan do crescimento de um vocabulário que obedeceria a função: '|V| = k * (N^Beta), sendo N o número de tokens (i.e. palavras na coleção). No algoritmo em python discutido 'words' representa uma lista com as palavras existentes no documento analisado. Uma observação feita por fulano em aula foi que no algoritmo em questão não se aceitaria o formato de dinheiro como palavra por conter por exemplo '$'. No algoritmo cria-se um dicionário de chaves (palavras) e valores (quantidades de ocorrência da palavra no texto). Alguns algoritmos de segmentação (maximum mathing) de palavras utilizando aprendizado supervisionado são utilizados hoje em dia, caracterizados por realizarem 'busca gulosa'. Campos de Bradford são utilizados na pesquisa de quais grupos de termos podem informar mais sobre um determinado documento textual. Stopwords em suma são palavras comumente utilizadas em um idioma e que para determinados tipos de análise tem pouco sentido semântico. A depender do grau de abstração que se pretende avaliar, diferentes conjuntos de palavras podem ser utilizados como stopwords. Alguns cuidados a se tomar envolvem stopwords que podem descaracterizar e em alguns casos minar a análise posterior do texto. Alguns exemplos são o artigo 'a' sendo retirado do termo 'vitamina a', outro é o verbo 'ser' na 3ª pessoa do plural conjugado no presente do indicativo como 'são' ser retirado do termo 'são paulo'. Em termos técnicos geralmente utiliza-se um arquivo de texto com cada linha representando uma stopword. No processo de Stemming o intuito e reduzir as palavras/termos a sua raiz, retirando partes que envolvam conjugação, plural ou gênero, por exemplo. É um método baseado em heurística e que geralmente tem como foco captar a parte mais significativa de cada palavra e abordar palavras que estão semanticamente relacionadas mas que possuam variaçoes de como as citadas acima. O Stemming é um método mais utilizado na busca por termos. No processo de Lemmatisation (Lematização) deflexionam-se os termos para reduzí-los a sua forma de dicionário. Devido a necessidade de se armazenar um dicionário a lematização é mais comumente utilizada para processos de tradução entre linguagens naturais. Uma observação que pode auxiliar no trabalho de um linguista é que é comum como em outras áreas de mineração de dados a utilização de pipelines utilizando os métodos citados anteriormente no processamento de lingaugem natural. Com isso evita-se a iteração excessiva do usuário e que pode levar a erros no desenvolvimento.
Gustavo Murayama O tópico da aula foi sobre normalização de texto, abordando o conceito de palavras, tokens, stopwords e stoplist. Em expressões regulares, certos comandos vistos anteriormente não eram suficientes para poder identificar algumas palavras da língua portuguesa, pois a mesma possui acentuação e alguns caracteres que compõem uma palavra que não são da representação alfanumérica. Uma palavra composta como guarda-chuva, por exemplo, seria vista como duas palavras distintas usando a expressão \w de ER. Há um meio de fazer uma expressão com [-'a-zA-ZÀ-ÖØ-öø-ÿ] utilizando a tabela ASCII estendida que irá identificar palavras da língua portuguesa, porém, dependendo do problema a ser resolvido, ainda sim não será suficiente: um valor monetário com R$ não será identificado como uma palavra válida (um problema não trivial). A quantidade de palavras presentes em um texto correspondem aos tokens, já as palavras diferentes correspondem ao tipo / vocabulário. Um conjunto de frases (ou documentos) geralmente anotados são chamados, num contexto de PLN, de corpus. São usados para aprendizado, análise, validação e verificação. Através de uma análise empírica, a Lei de Herdan diz que o vocabulário cresce numa escala logarítmica ao passo que o número de tokens cresce. No exemplo de um programa em python apresentado pelo professor, um texto de Machado de Assis foi processado e obteve-se alguns resultados interessantes: quando impresso as 20 palavras mais frequentes, a maioria era composta por pronomes ou artigos, o que, semanticamente, não diz muita coisa a respeito da obra. Há alguns algoritmos que podem ser utilizados, como o Maximum Mathing, que realiza uma busca gulosa e requer um dicionário. Ele processa as letras até encontrar uma palavra no dicionário. Outros algoritmos de segmentação mais sofisticados utilizam modelos estatísticos com aprendizado supervisionado. Uma stopword pode ser considerada uma palavra irrelevante para análise, uma stoplist é uma lista que contém as stopwords. Ambas podem ser eliminadas antes ou depois do processamento do texto. Porém, é necessário ter cuidado, pois a eliminação irrestrita dessas palavras pode resultar em uma perda semântica que pode ser importante para análise dos dados (por exemplo, se retirarmos o “de” da palavra “Rio de Janeiro”). A normalização de palavras é uma redução ou simplificação. É utilizada devido às diferentes flexões que as palavras podem ter, como gênero, número e grau. As duas técnicas mais importantes são a Stemming e Lemmatization. A primeira consiste em reduzir a palavra em sua raiz por um processo de heurística que corta (trunca) as extremidades das palavras e podem ser representado por um conjunto de regras que dependem da linguagem. O processo de Lemmatisation consiste em deflexionar as palavras de maneira a reduzir até a sua forma de dicionário. Geralmente utilize um dicionário de palavras e sua heurística é mais sofisticada.
Rodrigo Akiyama Abrantes Resumo aula 03 A tokenização, também chamada de segmentação de palavras, realiza a delimitação da uma sequência de caracteres em um texto ou sentença, localizando o limite de cada palavra de forma onde se saiba onde se inicia e termina uma palavra. Estas palavras que passam por este processo são denomeadas _tokens_. A tokenização pode ainda possuir duas variantes no que tange a delimitação dos tokens, dependente da linguagem no qual o texto ou sentença tiver sido escrito. Para linguagens delimitadas por espaço, como a grande maioria das linguagens ocidentais, os limites das palavras são geralmente definidos por espaços em branco ou alguma forma de pontuação. Em linguagens não-segmentadas, tais como as orientais, as palavras são escritas sucessivamente sem nenhuma indicação dos limites correspondentes a uma palavra. A tokenização destas requer maior informação léxica e de morfologia destas palavras. Se os tokens referem-se apenas as palavras existentes dentro de uma sentença, um vocabulário definirá o número de palavras diferentes contidos naquele texto. Por consequência, o número de tokens de um texto sempre será maior que o seu vocabulário. Outro termo importante de ser definido é o de corpus, um conjunto de documentos, textos ou registros orais em uma determinada língua e que servem para análise ou aprendizado. Em termos mais computacionais, o corpus é semelhante a um dataset. Durante a aula, o professor exibiu o resultado de uma análise da obra “A Semana” de Machado de Assis, que contém uma coletânea de contos. Este trabalho realizou o levantamento das palavras que apareciam com maior frequência no livro e estas eram, em sua grande maioria, artigos, pronomes e conectivos diversos. Estes tipos de palavras não permitem nenhuma conclusão quando analisados por si só pois possuem pouco significado semântico. Esta classe de palavras é denominada como stopword ou stoplist, pois são irrelevantes para a análise. Realizando a eliminação desta classe de palavras, as classes de palavras com maior quantidade de informação útil foram reveladas, como os verbos. A normalização de palavras pode ser entendida como o processo de simplificação de palavras, onde são realizados ajustes como a tokenização, a remoção de tags e caracteres especiais e a mudança de letras maiúsculas para minúsculas. As duas técnicas mais importantes neste processo são a lematização (lemmatization) e a stemização (stemming). O processo de lematização reduz a palavra ao seu radical, sem levar em conta a sua classe gramatical. Exemplo: gat para gato, gata, gatos, gatas. O processo de stemização consiste na redução de palavras flexionadas ao sem tronco (stem, em inglês), base ou raiz. Este tronco não precisa ser idêntico à raiz morfológica da palavra, sendo suficiente que as palavras relacionadas sejam mapeadas para um mesmo tronco mesmo que este não seja a raiz válida desta palavra.
Joao Victor Fontinelle Consonni A terceira aula de PLN começou com um pequeno teste com o intuito de introduzir alguns dos temas principais da aula que viria a seguir, como tokenização, stopwords e stoplists, e a normalização de palavras. A parte teórica começou com uma breve recapitulação da aula anterior, trazendo a resolução do último exercício do teste passado, que requisitava uma ER para selecionar todas as cadeias com duas palavras repetidas consecutivas. A solução envolveu o entendimento do conceito de grupos e subgrupos dentro de expressões regulares, que são ER's delimitadas por parênteses, numeradas da esquerda para a direita em ordem crescente. Em seguida foi apresentada uma expressão regular genérica capaz de contemplar palavras em português, descrita por [-'a-zA-ZÀ-ÖØ-öø-ÿ], de forma a identificar palavras com acentos, hífen e apóstrofo. Após essa recapitulação, foi apresentado o conceito de corpus (plural corpora), que consiste em um conjunto de texto ou fala, sobre um determinado assunto, legível por um computador. O número de palavras presentes em um corpus é equivalente ao número de tokens, enquanto que a quantidade de palavras distintas é o vocabulário do corpus. Segundo a Lei de Heaps (1978), o crescimento de um vocabulário é pode ser expresso matematicamente em função do tamanho do corpus. Esses conceitos foram demonstrados por meio de alguns exemplos em python executados sobre o livro "A Semana" de Machado de Assis. Neste contexto, verificou-se que as palavras mais frequentes no corpus eram irrelevantes para análise do conteúdo do livro, pois consistiam, em sua maioria, de artigos e preposições. Com esse gancho, foi apresentado o conceito de stopword e stoplist, que são palavras geralmente irrelevantes para análise do texto e que, em determinados contextos, são removidos ou descartados antes ou depois do processamento do texto. Por fim, foi contemplado o tema de normalização de palavras, que consiste em encontrar uma palavra (ou parte dela) que melhor represente um conjunto de palavras, ou seja reduzir um conjunto de palavras para uma raiz comum. Isso é importante, pois em textos da língua portuguesa temos diferentes palavras flexionadas em gênero, número ou grau, além de inúmeros tempos verbais distintos. Para fazer isso. duas técnicas foram apresentadas. A primeira foi o stemming, que geralmente refere-se a um processo de heurística que corta as extremidades das palavras e inclui frequentemente a remoção de afixos derivacionais. Existem diferentes algoritmos para fazer isso, como os de Lovins, Porter e Paice. A segunda técnica é o processo de lemmatisation, mais sofisticado, que consiste em aplicar técnicas para deflexionar as palavras (retira a conjugação verbal, caso seja um verbo, e altera os substantivos e os adjetivos para o singular masculino, de maneira a reduzir a palavra até sua forma de dicionário).
Vinicius Narciso da Silva Podemos utilizar agrupamentos em expressões regulares para reconhecimento de padrões repetidos. Este agrupamento é feito por meio de parênteses e a chamada é feita como \n (sendo n um número que referencia o grupo desejado para análise. Para reconhecimento de palavras em português é necessário adaptar a expressão para que entenda caracteres com acento, para isso, ao invés de utilizar \w ou [a-zA-Z], utilizamos [-'a-zA-ZÀ-ÖØ-öø-ÿ] que é uma expressão mais abrangente, baseada na tabela ASCII. Ao fazer análises básicas em um texto, podemos extrair informações como a quantidade de palavras ou mesmo a quantidade de palavras diferentes. Para estas duas informações, existem conceitos específicos, tokens (palavras) e vocabulário (palavras diferentes). Atrelado a estes dois conceitos, temos o conceito de Corpus, que é uma coletânea sobre um determinado assunto. O Corpus pode ser utilizado, por exemplo, para avaliar qual o tema do texto ou servir de entrada para um algoritmo de aprendizado de máquina. Existem duas leis (de Herdan e de Heaps) que visam prever o crescimento do vocabulário, relacionando-o com a quantidade de tokens de uma determinada coleção: |Vocabulário| = kN^(beta), onde k é uma constante e 0 < beta < 1. Existem algoritmos que segmentam palavras, porém os mais precisos usam modelos estatísticos sob aprendizado supervisionado. Os algoritmos que não utilizam esse tipo de técnica podem apresentar comportamentos não desejados. Utilizando um algoritmo escrito em python foi feita uma análise do vocabulário e da quantidade de tokens do texto "A semana" de Machado de Assis. Com essa análise fomos introduzidos a um novo conceito: Stopword/Stoplist. Uma Stopword pode ser considerada uma palavra irrelevante para a análise do texto, elas possuem pouco sentido semântico e a maior parte delas são artigos e preposições. Por este motivo, Stopwords geralmente são removidas do texto antes de ser feita a análise do mesmo (motores de busca, por exemplo, utilizam essa técnica). Embora seja um fato que a partir de Stopwords não podemos concluir nada sobre o tema do texto, por exemplo, existe uma discussão de "Quando uma stopword faz a diferença", pois o tamanho da lista de stopwords pode reduzir a efetividade em uma busca. Por fim, para aumentar a eficácia da análise do vocabulário, podemos aplicar técnicas de normalização de texto (agrupar as flexões de uma mesma palavra, para diminuir o vocabulário e facilitar a análise). As duas técnicas mais importantes são Stemming e Lemmatisation. Stemming utiliza-se de uma heurística para cortar as extremidades das palavras. Essa técnica é melhor aplicada naqueles casos em que a flexão mantém um prefixo. Lemmatisation aplica técnicas para deflexionar palavras utilizando-se de um dicionário. Operações de busca geralmente utilizam Stemming e de tradução utilizam Lemmatisation.
Arthur Veloso Kamienski A terceira aula de PLN teve como objetivo a apresentação do conceito de normalização de texto. Antes do início da aula, no entanto, mostrou-se o uso de grupos em expressões regulares para a identificação de sub-cadeias de texto, sendo possível portanto referenciar padrões identificados anteriormente para serem novamente utilizados. Grupos são identificados por parênteses ao redor de parte da expressão regular e são numerados da esquerda para a direita. Para o início da explicação sobre normalização de texto, apresentou-se o conceito de palavras utilizando o símbolo "\w". Este símbolo, no entanto, identifica apenas caracteres alfanuméricos e underscores, não identificando caracteres com acento, hífen, e outros símbolos presentes na língua portuguesa. Para que uma expressão regular possa identificar todos esses caracteres, deve-se indicar explicitamente os caracteres que devem ser identificados, podendo ranges da tabela ASCII expandida ser utilizados para diminuir o tamanho da expressão. Palavras podem ser distinguidas entre tokens e tipos. Tokens são ocorrências de palavras em um texto, enquanto tipos são as palavras diferentes de um vocabulário que um token pode assumir. Como definição temos, ainda, o conceito de corpus (cujo plural é corpora), um conjunto de palavras anotado utilizado para análise e validação. Existe uma relação entre o número de tokens e o número de tipos distintos utilizados em um corpus. Essa relação é proporcional (indicando que um cresce conforme o outro), e é dada pela fórmula |V| = kN^beta. Stopwords são palavras com pouco sentido semântico, ou seja, que são irrelevantes para a análise. É de interesse, portanto, que stopwords sejam identificadas e removidas para que a análise ocorra de forma mais satisfatória. São exemplos de stopwords artigos e preposições. Essas palavras são, contudo, dependentes do contexto e deve-se ter cuidado quando são removidas, pois podem, de fato, alterar o sentido do texto. Um conjunto de stopwords pode ser chamado de stoplist. A normalização é o processo de reduzir ou simplificar palavras para torná-las iguais, caso tenham uma mesma raíz. As palavras são convertidas para um formato padrão, podendo ser sua raiz ou seu formato no dicionário, masculino e singular, de modo que perdem qualquer tipo de flexão de gênero, número, grau e qualquer conjugação verbal. Existem duas técnicas de normalização de palavras: stemming e lemmatization. Stemming (do inglês stem, raiz) consiste em reduzir uma palavra à sua raiz a partir de uma heurística, cortando as extremidades das palavras para retirar seus afixos derivacionais. Stemming pode ser implementado com um conjunto de regras. Lemmatization, por outro lado, é a técnica que transforma palavras para sua forma de dicionário utilizando uma heurística e é implementado com o uso de um dicionário de palavras.
Carlos Eduardo Ramos A aula 3 da disciplina de Processamento de Linguagem Natural (PLN) teve como tema: Normalização de texto. A aula foi baseada no capítulo 2 do Livro: Speech and Language Processing - apresentado como bibliografia base da disciplina. As expressões regulares (ER) foram retomadas, e utilização de grupos nas expressões regulares foi apresentada. Os grupos em uma ER são todas as sub- expressões entre parenteses. Onde os grupos possuem uma ordem ou numeração da esquerda para a direita conforme a ER. Uma nova ER foi apresentada, para dar macth com palavras na língua portuguesa , ignorando hifens, acentos, trema, etc.Pela tabela ASCII estendida, é possível criar uma ER que contemple os caracteres acentuados e com traços na língua portuguesa. Esta ER é importante, pois não consideramos símbolos especiais como palavras. Dito isso, foi apresentado o conceito de palavra, que é sinônimo de Token e é definido como um termo da Linguagem em questão. Diversos exemplos foram apresentados para introduzir a ideia de contagem de palavras e identificação de palavras. O token tem estas características Um corpus é um conjunto de dados linguísticos, textos, etc ligados a algum tema. Estes documentos são adotados geralmente para : Aprendizado ou validação. O conjunto de Cada palavra diferente em um corpo é chamado de Vocabulário, onde o numero de elementos deste conjunto define o tamanho do vocabulário. O conjunto total de palavras é como o conjunto de Tokens. Durante a aula, foi apresentado um teste sobre uma das obras de Machado de Assis com apoio do python. O primeiro código contava o numero de palavras da obra, o segundo verificava a frequência de cada palavra e imprimia as 20 mais frequentes. As mais frequentes eram na maioria pronomes, artigos e preposições e etc. Estas palavras com pouco sentido no entendimento do texto, quando isoladas sem contexto, são chamadas Stopwords/StopList. Em aplicações práticas, estas stopwords podem ser removidas da análise, mas isso depende da aplicação, pois dependendo do contexto, estas palavras podem ser importantes. A normalização de palavras foi definida na aula, onde normalização de palavras é a redução ou simplificação de uma palavra, eliminando flexões da palavra, como número, grau ou gênero. Exemplo: amig: amigo. amigos, amiga. Temos duas técnicas mais importantes de normalização: Stemming - reduz a palavra, cortando as extremidades dela a partir de uma heurística definida, i.e um conjunto de regras. Lemmatisation - aplica técnicas para deflexionar as palavras até sua forma de dicionário, retirando conjugação verbal, alterando substantivos ou adjetivos para masculino, etc. Na prática, o stemming é mais rápido e é melhor para aplicações de busca, já na Lemmatisation temos menos rapidez nos resultados, mas melhores normalizações, isso é bom para traduções.
Henrique Augusto Santos Batista Grupos é o nome dado a uma sub-expressões de uma expressão regular. O conceito de palavras e tokenização é onde todas as palavras de um texto são chamadas de token e as palavras únicas diferentes são chamadas de vocabulário, como no exemplo a baixo estudado em sala. Muito longo para os que lamentam, muito curto para os que festejam. Essa frase contem 12 palavras no total então 12 tokens e contem 8 palavras excluindo as repetições então um vocabulário de 8 palavras. Um corpus é um conjunto de documentos ou frases geralmente anotados e utilizados para aprendizado (analise) e validação (verificação). Herrdan (1960) e Heaps(1978) formularam através de testes empíricos uma formula para o Crescimento de um vocabulário baseado no número de tokens. |V| = kN^ß Onde |V| é o vocabulário, N é o numero de tokens e 0 < ß < 1 Para calcular o numero de palavras de um texto usando o algoritmo maximum Mathing é necessário um dicionário e é aplicado uma busca gulosa. Ao tentar encontrar algum significado nas palavras mais usadas de um texto se deparou com algumas palavras que geralmente são conectivos ou algo parecido que em geral aparecem muito nos textos então foi encontrado o conceito de stopword e stoplist (que é uma lista de stopwords) Stopword são palavras que não tem significado para o sentido o texto porem são usadas para formar frases como artigos e preposições então se adota a deleção dessas palavras ao analisar um texto usando um algoritmo para conseguir obter alguma informação da analise através das palavras mais utilizadas. Porem ao retirar as stopwods podemos criar frases sem significado como nos exemplos a baixo estudados em sala. Rio de Janeiro - Rio Janeiro Internet das coisas - Internet coisas Viagem para casa - Viagem casa Vitamina a – Vitamina Em textos da língua portuguesa temos diferentes palavras flexionadas em gênero, número ou grau, além de inúmeros tempos verbais distintos por causa disso se utiliza a normalização das palavras que pode ser entendida como uma redução ou simplificação delas as duas técnicas mais importantes são Stemming e Lemmatization. O processo de stemming consiste em reduzir a palavra à sua raiz sem levar em conta a classe gramatical. amig: amigo, amiga, amigão gat: gato, gata, gatos, gatas O processo de lemmatisation consiste em aplicar uma técnica para deflexionar as palavras e retira a conjugação verbal, caso seja um verbo, e altera os substantivos e os adjetivos para o singular masculino, de maneira a reduzir a palavra até sua forma de dicionário. amigo: amigo, amiga, amigão gato: gato, gata, gatos, gatas ter: tinha, tenho, tiver, tem
Gabriel Jose da Silva A terceira aula de PNL foi divida em duas partes a primeira uma continuação da aula de expressões regulares e a segunda parte foi sobre normalização. A primeira parte foi mostrada como obter uma expressão regular para englobar o alfabeto português, que diferente do inglês apresenta acentuações e assim, a tabela ASCII convencional (128 caracteres) não é capaz de analisar textos em português assim temos que utilizar a tabela ASCII estendida. A expressão regular [-'a-zA-ZÀ-ÖØ-öø-ÿ] pode ser utilizada para buscar todos os caracteres presentes na língua portuguesa. Nessa primeira parte também vimos como podemos agrupar expressões regulares usando o macro ‘\n’, onde n é o numero de repetições desejadas. Um exemplo da utilização do agrupamento de expressões regulares é: (w+).(w+)@\1, em que o primeiro agrupamento (w+) deve ser estar presente depois do @, como por exemplo em: pedro.garcia@pedro. A segunda parte da aula foi sobre tokenização, que é o processo de tratar as palavras de um texto para agrupá-las de alguma forma. Uma das aplicações de tokenização é descobrir a quantidade total de palavras de um determinado corpus. Além de extrair informações sobre quantidade total podemos obter as palavras diferentes que mais aparecem e assim tentar identificar qual são as informações relevantes do corpus pesquisado. Nesse processo de agrupamento das palavras mais comuns, podemos obter como mais frequentes stopwords/stoplist (palavras que aparentemente não trazem nenhum significado relevante para o corpus analisado) o que indica que o corpus não apresenta informações relevantes. Porém, temos casos em que sem o a presença de stopwords/stoplist perdemos significativamente o sentido de algumas palavras como, por exemplo, Rio de Janeiro. Sem a stopwords/stoplist ‘de’ perdemos a informação de que a essa palavra se refere a um estado brasileiro. Na língua portuguesa existem diferentes flexões de palavras que variam em gênero, número ou grau, além de inúmeros tempos verbais diferentes. Assim, para agrupar as palavras corretamente, temos que simplifica-las ou reduzi-las até sua raiz. Para tal, existem duas técnicas: Stemming e Lemmatization. O processo de Stemming consiste em reduzir as palavras para suas raízes. Já o processo de Lemmatization desflexionar as palavras removendo a conjugação verbal, alterando substantivos e adjetivos para o singular masculino. O processo de Lemmatization apresenta melhor desempenho semântico comparado ao Stemming, porém como há a necessidade de modificar as palavras seguindo um dicionário os algoritmos são mais custosos. Já os algoritmos de Stemming não são tão eficientes quanto Lemmatization, porém são mais rápidos de executarem. Assim a utilização de cada processo depende muito do corpus a ser utilizado.
Thiago Bruini Cardoso Silva A terceira aula teve como foco o estudo de técnicas de normalização de texto, sendo essas necessárias para a devida extração de informações úteis ao computador de documentos escritos em linguagem natural. O primeiro tópico a ser abordado foi a conceitualização de grupos em expressões regulares. Sucintamente, grupos podem ser caracterizados por partes delimitadas por parênteses nas ER. A expressão ([abc])(belha), por exemplo, tem três grupos: [abc], belha e o casamento inteiro. O segundo tópico a ser abordado foi tokenização, reconhecimento e separação de palavras em um texto. É importante notar que o escopo de caracteres que formam palavras e como ocorre a separação entre elas em texto depende do idioma abordado. No nosso caso, o português, temos caracteres que podem dificultar o processo, como aqueles com acento e palavras compostas (separadas por hífen). Por meio de discussão com o professor, chegou-se a uma ER boa para caracterizar palavras em português. Após contagem de palavras em texto por meio da ER anteriormente apresentada, o conceito de corpus foi definido como conjunto de documentos utilizados para análise e verificação. As leis de Herdan e de Heaps foram apresentadas, explicando o crescimento logarítmico do número de palavras em relação ao número de palavras diferentes em um corpus. O terceiro tópico a ser abordado foi a definição de stopwords. Na obra "A Semana" (de Machado de Assis) identificamos as palavras mais frequentes e percebemos grande quantidade de artigos, pronomes e outras palavras que não nos trazem muita informação sobre o que se trata de fato o texto. A partir dessa análise, definimos que stopwords são palavras que não carregam grande ganho de informação e podem atrapalhar a análise do texto. O nome do conjunto de stopwords a ser considerada em uma análise é uma stoplist. Identificar palavras, no entanto, é uma tarefa difícil e stopwords podem ser importantes em alguns contextos, como "de" em "Rio de Janeiro". O quarto e último tópico a ser abordado foi a normalização de texto. Normalizar texto significa reduzir palavras que têm o mesmo significado semântico, porém, estão flexionadas de forma diferente de modo que sejam transformadas para um modelo padrão. As duas técnicas estudas foram stemming e lemmatization. Na primeira, é utilizada um heurística de modo a cortar palavras em suas extremidades, reduzindo à raiz e alcançando uma forma padrão. Diferentes algoritmos de stemming foram citados: Lovins, Porter e Paice. A segunda técnica de normalização, lematização, utiliza um dicionário com o objetivo de deflexionar palavras à sua forma do dicionário. Ambas as técnicas têm como objetivo que as palavras alcancem uma forma padrão.
Gabriel Peterlini Pinto A aula desta semana teve como temas principais a identificação de palavras em cadeias de texto, a definição de _stopwords_ e _stoplists_ em expressões regulares e a normalização de palavras. Como visto durante a última aula, a expressão regular "[a-zA-Z0-9_]+" (ou seu atalho equivalente "\w+") identifica conjuntos de quaisquer caracteres alfanuméricos (com _underscore_ ) de um texto, retornando dessa forma as palavras que o compõe. Apesar de ser uma expressão muito poderosa em uma grande quantidade de casos, ela se torna insuficiente para identificar palavras quando tentamos aplicá-la em textos de diferentes línguas como a portuguesa que, diferente do inglês, possui uma complexidade maior de caracteres com acentos. Por exemplo, ao aplicar a expressão regular anterior na palavra “família” teríamos como resultado os conjuntos “fam” e “lia” já que a expressão não contempla caracteres como o “í” (i com acento agudo). Portanto, para palavras em português ou em línguas mais complexas, é necessário expandir a ER para algo similar a “[-'a-zA-ZÀ-ÖØ-öø-ÿ]” que consegue identificar caracteres da tabela ASCII estendida. A quantidade de palavras encontradas num texto ou frase pode ser denominada como Tokens, já a quantidade de palavras diferentes é chamada de vocabulário ou tipo. Um _Corpus_ é definido como a coletânea sobre um determinado assunto, por exemplo, os textos que compõe o _Corpus_ de Shakespeare chegam a possuir cerca de 884 mil tokens e um vocabulário de 31 mil tipos diferentes. Em aula, vimos um teste prático similar em Python para contar o número de palavras e suas frequências na coleção de obras de Machado de Assis “A Semana”, ao classificarmos as palavras em ordem decrescente de frequência vimos que muitas delas possuem pouco ou nenhum sentido relevante para o texto, palavras como: a, ao, aos, aquela, aquelas, aquele, aqueles e muitas outras são consideradas irrelevantes para a análise e por isso são chamadas de stopwords ou stoplists. Essas palavras ou tokens podem ser eliminadas antes ou depois da leitura do texto, porém, é necessário avaliar seu uso para cada aplicação. O último tópico é a normalização de palavras, que consiste na redução ou simplificação de diferentes palavras que podem ser flexionadas em gênero ou número, por exemplo. Existem duas técnicas principais: (1) Stemming, que consiste na redução da palavra a sua raiz. Por exemplo: amigo, amiga e amigão podem ser reduzidos a “amig”. (2) Lemmatisation, que consiste em técnicas como a remoção da conjugação verbal de verbos ou na redução de substantivos para o singular masculino. A heurística de lemmatisation é mais sofisticada do que o Stemming.
July Anne Pinheiro Aula 3: Normalização de texto: Palavras e stopwords Grupos São conjuntos de sub-expressão entre parênteses em uma expressão regular. Palavras (tokenização) No contexto de palavras é importante diferenciar tokens de tipo/vocabulário. A primeira considera a quantidade de palavras que existe na frase/texto, já a segunda considera apenas as palavras diferentes na frase/texto apresentados. Além disso, é preciso analisar na quantidade pontuações na frases e no caso do idioma a acentuação é um item importante de análise de texto a ser considerado. Corpus textual Corpus: Um corpus é um conjunto de documentos (ou de frases) geralmente anotados e utilizados para: Aprendizado (análise) e Validação (verificação) Palavras: Algumas considerações não triviais * O que definirá a separação das palavras * Números relacionados a monetização * Acentuação * Palavras compostas. Maximum Matching É um algoritmos de busca gulosa de segmentação, que requer um dicionário. Importante ressaltar, os algoritmos de segmentação mais sofisticados usam modelos estatísticos (aprendizado supervisionado). Stopword/stoplist São palavras com pouco sentido semântico, ou seja, pode ser considerada uma palavra irrelevante para análise (artigos, preposições). As stopwords/stoplists podem ser eliminadas antes ou depois do processamento/leitura do texto. Devemos avaliar seu uso para cada aplicação, visto que o tamanho da lista de stopwords pode reduzir a efetividade, por exemplo, em uma busca. Apesar da redução de efetividade a análise da aplicação é essencial, visto que a remoção de algumas Stopwords podem anular o contexto do texto analisado. Normalizando as palavras O processo de “normalização de palavras” pode ser compreendida como o processo de redução ou simplificação de palavras. Para a execução desse processo existem duas técnicas mais importantes: Stemming e Lemmatization. Stemming Stemming é um processo constituído em reduzir a palavra à sua raiz (não considerando a classe gramatical) geralmente refere-se a um processo de heurística que corta as extremidades das palavras e inclui frequentemente a remoção de afixos derivacionais. Existe 3 algoritmos para implementação da técnica: Lovins Stemmer. Porter Stemmer e Paice Stemmer. Lemmatization Lemmatization consiste em aplicar uma técnicas para deflexionar as palavras geralmente usa um dicionário de palavras (a heurística é mais sofisticada), retira a conjugação verbal, caso seja um verbo, e altera os substantivos e os adjetivos para o singular masculino, de maneira a reduzir a palavra até sua forma de dicionário. Recuperação de Informação – IR Para o processo de recuperação de informação um vocabulário menor pode levar a um melhor desempenho na busca. As operações de stemming e lemmatization são operações comuns e iniciais utilizadas em sistemas de recuperação de informação: Busca - > Stemming e Tradução - > Lemmatisation.
Matheus de Araujo Vargas Na aula de Processamento de Linguagem Natural do professor Jesus P. Mena do dia 10 de Junho foram apresentados os conceitos de token (palavra), tipos (vocabulário), stopword, stoplist e algumas técnicas de normalização de palavras, além de alguns exemplos de aplicação em Python. Um token pode ser entendido como sendo uma palavra, ou seja, um conjunto sequencial de caracteres separados de outro conjunto (outro token) por espaços em branco, pontuação ou quebra de página. Porém, o significado de "palavra" pode variar de uma aplicação para outra. Algumas pessoas consideram, por exemplo, vírgula e pontuação na contabilização de tokens, outras não consideram. Outro exemplo de variação é uma aplicação em outro idioma, em que os tokens não necessariamente são separados por um espaço em branco, como acontece com a língua portuguesa. Para esses casos, algumas técnicas diferentes são necessárias para a realizar a segmentação dos tokens. Em um texto, a quantidade de tokens é a quantidade totalde palavras. Já a quantidade de tipos (ou vocabulário) é a quantidade total de palavras diferentes (exclusivas). Stopwords são palavras que podem ser consideradas irrelevantes para o conteúdo de um texto, ou que apresentam pouco sentido semântico, como artigos e preposições. Exemplos de stopwords são: as, e, os, de, para, com, sem, foi. O uso de stopwords depende muito da aplicação. Em uma certa aplicação, palavras que são consideradas stopwords, podem não ser consideradas em uma outra aplicação. Em alguns casos, stopwords podem não ser usadas também. Cada caso deve ser avaliado. Um sinônimo de stopword é stoplist. Ambas as palavras possuem o mesmo significado. Em uma aplicação que realiza processamento de texto, ao ser feita a contagem de quantas vezes uma palavra aparece em um texto, muitas palavras que possuem o mesmo radical apareceriam em diferentes formas, flexionadas em gênero, número ou grau, além de inúmeros tempos verbais distintos. Um exemplo são as palavras: outro, outra, outros, outras. Para evitar que isso aconteça, algumas técnicas de normalização de texto podem ser utilizadas. As duas técnicas mais importantes são o stemming e o lemmatisation. O processo de stemming consiste em reduzir a palavra à sua raiz (sem levar em conta a classe gramatical). Por exemplo: amig = amigo, amiga, amigão. O processo de lemmatisation consiste em aplicar uma técnica para deflexionar as palavras (retira a conjugação verbal, caso seja um verbo, e altera os substantivos e os adjetivos para o singular masculino, de maneira a reduzir a palavra até sua forma de dicionário). Por exemplo: amigo = amigo, amiga, amigão; gato = gato, gata, gatos, gatas.
Rodolfo Azevedo Dos Santos Normalização de texto: Palavras e stopwords Da aula anterior: Regex (Expressões Regulares – ER): Grupo – São delimitados por parênteses. São lidos da esquerda para direita (grupo 0,1,...n). Grupo 0 é o casamento inteiro, grupo 1 é o primeiro casamento de parênteses (mais a esquerda). Casamento inteiro – Full match (grupo 0) Todo agrupamento é representado por parênteses. Tabela ASCII extendida: Para ER para buscar palavras em português. Codificação para 256 caracteres. ER para palavras em português: [-'a-zA-ZÀ-ÖØ-öø-ÿ] Palavras (tokenização): Significa dividir o texto em palavras. Tokens são palavras (são sinônimos). Vocabulário (|V|) : Número de palavras diferentes Tokens (|N|): Número TOTAL de palavras Exemplo: Muito longo para os que lamentam, muito curto para os que festejam Número de Tokens (número de palavras): 12 Vocabulário: 8 (8 palavras diferentes) Corpus textual (Corpora textuais): Em PLN, é um conjunto de documentos (frases) que são anotados e são geralmente utilizados em: Análise e Validação. Análise empírica: Crescimento do tamanho do vocabulário é proporcional ao número de palavras (tokens) = Logarítmico. Prática em Python: Lê um documento, identifica as palavras em um dicionário de frequências, conta a quantidade de ocorrências e imprime as 20 palavras mais frequentes. Re: regular expression, content é uma string, chaves são palavras. Palavras: Algumas considerações não triviais Quando se fala de palavra é necessário definir o idioma/dialeto. Existem linguagens que as palavras não são separadas por espaço – Neste caso, uma estratégia (heurística) é verificar o radical da palavra. Algoritmo: Maximum Mathing Requer dicionário, os modelos de segmentação mais sofisticados utilizam modelos estatísticos. Stopwords: Stoplist é seu sinônimo. São palavras que aparentemente não trazem maiores informações à respeito do texto. (Geralmente. Usualmente são proposições e artigos. Stopwords podem ser eliminadas antes e depois do processamento/leitura do texto. As vezes stopwords são relevantes: Ex: Rio de Janeiro / Internet das Coisas/ Vitamina A. Esses são exemplos de stopwords que são importantes para o contexto. Sem elas, a análise seria descaracterizada. Stopwords/Stoplist são muito discutidos desde 1960. Motores de busca NÃO utilizam stopwords. Normalizando palavras: Redução/simplificação de palavras que são flexionadas em gênero/número e grau. Existem duas técnicas de normalização: 1) Stemming: Utiliza uma heurística que trunca (corta) as extremidades da palavra. 2) Lemmarization: Retira conjugação verbal (para verbos) e altera substantivos/adjetivos para o singular masculino (padrão dicionário). Como utiliza um dicionário de palavras é mais lento que o stemming. Quanto menor o dicionário menos tempo de busca, e , portanto, melhor desempenho. Utiliza-se o stemming para busca e lematization para tradução.
Rodrigo Hiroaki Ideyama Nome: Rodrigo Hiroaki Ideyama RA: 11042714 Resumo Aula 3 Foi feito uma revisão da aula anterior sobre expressões regulares, começando com a discussão da última questão do teste seis. A chave para resolvê-lo, foi demonstrado que no regex, utilizamos o “\1” para identificar palavras repetidas. Depois, foi definido que grupos são sub-expressões entre parênteses e foi mostrado outros regex: para palavras, palavras em português e a tabela ASCII estendida. Na aula, apresentou-se o conceito de tokens que são palavras existentes em uma determinada sentença, independente se estão repetidas ou não. Já tipo/vocabulário são palavras diferentes existentes em uma determinada sentença. Além disso, foi passado a definição de corpus textual ou, no plural, Corpora textuais que é um conjunto de documentos (ou de frases) geralmente anotados e utilizados para aprendizado (análise) e validação (verificação). Em seguida, foi mostrado dois tipos de códigos em python nomeadas palavras1.py e palavras2.py. O primeiro imprimia cada palavra que identificava na obra de Machado de Assis com o regex da tabela ASCII acrescentado de 0-9 no final e mostrava a quantidade destas palavras. Já no segundo, imprimia a quantidade de vezes que cada palavra aparecia na obra com o mesmo regex do primeiro código e o número de tokens e vocabulário. Com esses algoritmos, mostrou as saídas de cada um deles do exercício do teste que ele havia dado no início da aula, sendo o último item da questão exemplificado para mostrar o conceito maximum mathing, algoritmos de segmentação que. os mais sofisticados, são utilizados em modelos estatísticos (aprendizado supervisionado). Para finalizar a aula, foi apresentado conteúdo sobre stopwords/stoplist e normalização de palavras. A definição do primeiro pode ser considerada uma palavra irrelevante para análise (artigos, preposições), como ‘ao’, ‘de’ e ‘é’. Porém essa irrelevância deve ser bem analisada em cada tipo de aplicação, pois o tamanho da lista de stopwords pode reduzir a efetividade em uma busca, por exemplo. Já a normalização de palavras, é a redução ou simplificação de palavras, tendo como as duas técnicas mais importantes a stemming e lemmatization. O primeiro consiste em reduzir a palavra à sua raiz (sem levar em conta a classe gramatical), como exemplo, ‘alun’. Já o lemmatization, consiste aplicar umas técnicas para deflexionar as palavras (retira a conjunção verbal, caso seja um verbo, e altera os substantivos e os adjetivos para o singular masculino, de maneira a reduzir a palavra até sua forma dicionário), como exemplo, ‘ser’.
Rafael Augusto Zanatta Normalização de textos: palavras e stop-words. Palavras (tokenização). Em uma frase, podemos contar as palavras mesmo que repetidas sem considerar os símbolos o que chamamos de tokens e quantas palavras diferentes possuem o que chamamos de (vocabulário), por exemplo: “Muito longo para os que lamentam, muito curto para os que festejam.” Possui 12 palavras diferentes (tokens) , porem, 8 palavras diferentes (tipo/vocabulário). No contexto de PLN, um corpus é um conjunto de documentos (ou de frases) geralmente anotados e utilizados para: ? Aprendizado (análise) ? Validação (verificação) Palavras com pouco sentido semântico: stopword / stoplist Em muitos contextos uma stopword pode ser considerada uma palavra irrelevante para análise como os artigos e preposições. As stop-words podem ser eliminadas antes ou depois do processamento/leitura do texto. Devemos sempre avaliar o uso para cada aplicação. Muitas aplicações como os motores de busca não utilizam as stopwords. Vale ressaltar que as listas das stopwords podem reduzir a efetividade em uma busca, portanto, devemos utiliza-la com cautela. Normalizando as palavras Em textos da língua portuguesa temos diferentes palavras flexionadas em gênero, número ou grau, além de inúmeros tempos verbais distintos. Por exemplo: Trabalhador trabalhadora Amigo amiga A “normalização de palavras” pode ser entendida como sendo a redução ou a simplificação de palavras. Possuímos duas técnicas mais importantes: ? Stemming ? Lemmatization A técnica que chamamos de stemming consiste em reduzirmos a palavra na sua raiz (sem levar em conta a classe gramatical) por exemplo: amig: amigo, amigão, amiga ou gat: gato, gatam, gatos, gatas. Stemming geralmente refere-se a um processo de heurística que corta as extremidades das palavras e inclui frequentemente a remoção de afixos derivacionais. Também pode ser representado por um conjunto de regras que dependem da linguagem. Existem diferentes algoritmos que podem ser aplicados para executar essa técnica como: Sample text, Lovins Stemmer, Porter Stemmer, Paice Stemmer. Já o processo de lemmatisation consiste em aplicar uma técnica para deflexionar as palavras (retira a conjugação verbal, caso seja um verbo, e altera os substantivos e os adjetivos para o singular masculino, de maneira a reduzir a palavra até sua forma de dicionário). Geralmente essa técnica utiliza um dicionário de palavras (a heurística é mais sofisticada). Recuperação de informação IR: Um vocabulário menor pode levar em um melhor desempenho na busca e as operações de stemming e lemmatization são operações comuns e iniciais utilizadas em sistemas de recuperação de informação como busca (stemming) ou tradução (lemmatization).
Elsio Antunes Junior A aula do dia 10/06 foi sobre normalização de texto e teve como sub-tópicos as definições de palavra e stopwords. Dada a bibliografia de Daniel Jurafsky e James H. Martin "Speech and language processing", especificamente o capítulo 2, que fala sobre expressões regulares, normalização de texto e distância de edição, nos concentramos nessa aula em normalização; A partir do gancho do final da aula anterior que mostrava uma expressão regular para capturar um par de palavras, começamos a aula com uma daquelas atividades diárias do professor; Com perguntas simples ele introduziu nesta atividade o conceito de tokens e stopworlds ou stoplists; A dúvida levantada nas questões, para quem não conhecia os conceitos era se devemos considerar pontuação, espaços, aspas simples e traços como separadores de tokens; Já em aula o professor nos atentou para uma boa definição de tokens (palavra) a partir do que é capturado pela expressão regular baseada no caractere especial \w e em seguida mostrou que ele não captura acentos e caracteres especiais da língua portuguesa; Mostrou que poderíamos substituir esta er por uma um pouco mais complexa, baseada em faixas de caracteres ascii [-'a-zA-ZÀ-ÖØ-öø-ÿ] que incluem as letras acentuadas; Segue-se a definição de "corpus" \- que no contexto de PLN é um conjunto palavras utilizado para análise e validação de algoritmos - e as estatísticas a respeito da relação entre vocabulário e tokens, citando a lei de Herdan e a lei de Heaps; Na segunda parte da aula, concentramo-nos em um pequeno algoritmo em Python que usa a expressão regular acima citada em conjunto com um dict() e um set() para separar, contar e qualificar as palavras em stopwords; Ainda neste contexto nos foi apresentado o algoritmo Maximum Mathing que usa um dicionário e uma estratégia gulosa para separar palavras em um texto; Continuamos a construção do código em python, acrescentando uma forma de ordenar as palavras por ocorrência; Desta ordenação evidenciaram-se as stopworlds; seguida de uma discussão sobre a utilidade semântica de tais palavras; O professor citou os artigos acadêmicos de Luhn, Parkins e Fisher que remontam à década de 60; e então finalizamos com os conceitos de 'stemming' e 'lemmatisation' que são usados, respectivamente, para busca e traduções; Stemming simplesmente trunca palavras e lemmatização procura em um dicionário pelo radical delas; em ambos os casos, com intenção de simplificar o texto para processamento.
Felipe de Campos Mesquita Na aula 3 de Processamento de Linguagem Natural continuamos a estudar o capítulo 2 do livro Speech and language processing: Na introduction to natural language, computational linguistics, and speech recognition de Daniel Jurafsky e James H. Martin. A aula anterior tratou das expressões regulares, com exercícios e dicas. O início da aula 3 foi um teste com três questões relativas a contagem de tokens com textos com diferentes pontuações e de diferentes línguas com o intuito de demonstrar o quanto é difícil decidir os limites para demarcação de tokens, a segunda questão do teste é sobre a definição de stopwords, que são palavras que filtramos antes do processamento por não trazem conteúdo relevante para a análise em muitos casos, a terceira questão do teste trata sobre como contar palavras semelhantes do ponto de vista de variações tais como conjugação verbal, diminutivo, plural, prefixo e sufixos, podemos por exemplo, escolher o verbo no infinitivo, ou o radical da palavra. Também fizemos uma revisão da última questão sobre expressões regulares da aula passada para reforçar alguns conceitos e falar sobre agrupamento. Mudando os parênteses do agrupamento em uma expressão regular pode produzir resultados completamente diferentes como vimos no exemplo do email. Também falamos sobre o caso da última aula em que palavras acentuadas e caracteres especiais atrapalhavam a marcação de palavras usando o padrão [a-zA-Z] por esses caracteres não serem contemplados na tabela ASCII, sendo assim, precisamos de outras sequências para marcação de palavras na língua português, tal como [-'a-zA-ZÀ-ÖØ-öø-ÿ]. Na sequência da aula foi falado a respeito de palavras (tokenização), onde analisamos primeiramente um texto contanto o número de palavras, podemos observar facilmente variações no resultado dependendo dos critérios de contagem, tais como pontuação, hifenização. Também vimos o conceito de vocabulário, onde as palavras são contadas uma única vez. Corpus textual, e no plural, corpora, é o conjunto de documentos ou de frases geralmente anotados e utilizados para aprendizado (análise) e validação (verificação). Também analisamos na aula a Lei de Herdan (1960), e lei de Heaps (1978) sobre o crescimento de um vocabulário, que no estudo apresentou p seguinte resultado: |V|=kN^b com b entre 0 e 1, V o vocabulário e N o número de tokens. Também vimos em python um exemplo de código de como usar expressões regulares.
Eracton Ferreira Ramalho Nesta terceira aula de PLN começamos com um desafio para contar palavras e tokens sem uma explicação previa. Esse tipo de atividade é interessante porque desafia tanto os alunos que tem um certo conhecimento prévio quanto quem não entende nada do assunto. O desafio era identificar o que eram palavras ou tokens. Era necessário criar uma regra para definir o que de fato era uma palavra e como defini-la, depois disso seria necessário efetuar uma contagem. Isso mostrou que poderíamos separar as palavras com pontos, hífens ou espaços. Foi questionado o que eram Stopwords e StopList. Não tinha ideia do que se tratava, até entender que são palavras que não agregam semântica alguma a uma análise. Partimos para uma revisão rápida de expressões regulares e foi explicado como podemos escolher palavras no nosso idioma, onde a dificuldade são os acentos, hífens e o “ç”. Basicamente usar uma expressão onde encontre todos os algarismos alfanuméricos e inserir as poucas exceções que existem para contemplar todos os casos. Podemos dizer que um sinônimo para “palavra” é “token”. Em PLN, a definição de Corpus é um conjunto de documentos (ou frases) geralmente anotados e utilizados para aprendizado (análise) e validação (verificação). Vimos como um complemento à relação de vocabulário com os tokens. E com isso uma análise gráfica onde percebe-se que existe uma curva logarítmica. Estudos que foram consolidados nas leis de Herdan e na lei de Heaps. Começou a parte prática, onde o professor comentou alguns códigos em Python. Nesses comentários que vimos como realmente pode ser útil, ou não, a exclusão de stopwords/stoplist. Uma outro tema abordado foi a normalização de palavras. Essa ferramenta permite reduz ou simplificar palavras. Há duas técnicas: stemming e lemmatization. Onde o primeiro consiste em reduzir a palavras a sua raiz (sem levar em conta a classe gramatical) com um método heurístico de corte e o segundo tende a trazer a palavra para a sua forma do dicionário utilizando uma heurística muito mais sofisticada. Por fim, foi explicado como é o método utilizado para correção dos resumos. Onde, basicamente, há um texto padrão feito pelo professor e que o algoritmo procura nos textos enviados o quão próximo ele está do “exemplo”. Com isso é possível até gerar um ranking, como já está sendo feito.
Lucas Monteiro de Oliveira Aula 03 - Normalização de texto: Palavras e stopwords. \- Cada sub-expressão entre parâmetros em um regex é um grupo. \- \w corresponde a caracteres alfanuméricos. \- Para formar uma expressão regular para línguas com acentuação, as mesmas devem ser consideradas, uma vez que não estão implícitas nos caracteres alfanuméricos. \- Tokenização consiste em elencar a quantidade de palavras contidas em um texto. \- Tokenização é diferente de estipular a quantidade de palavras distintas em um texto. Palavras distintas são utilizadas para a formação de um dicionário/vocabulário. \- Corpus é um conjunto de documentos e/ou frases utilizadas para a composição de uma base para treinamento/validação. \- Existem também, quando tratando-se de palavras, algumas considerações não triviais que devem ser levadas em consideração, como, por exemplo, palavras de uma frequência de ocorrência muito baixa. Tais palavras, podem, mesmo se capturadas sem nenhum erro, representar expressões e siglas. Caso estes casos não sejam levados em consideração, o tamanho do vocabulário pode aumentar consideravelmente em relação ao vocabulário real. \- Maximum Mathing é a técnica de identificação de palavras que, através da busca gulosa, consegue identificar com uma boa assertividade palavras em um texto não segmentado. Modelos mais modernos de segmentação já utilizam de técnicas de aprendizado supervisionado como uma das técnicas estatísticas para encontrar as separações ideais. \- Em muitos casos stopwords/stoplists podem ser consideradas palavras irrelevantes para o contexto do corpus. Deve-se, entretanto, tomar cuidado pois em _alguns_ cenários, principalmente quando relacionado a nomeações, a remoção delas pode acarretar uma perda de sentido/contexto. \- Durante o processo de normalização deve-se também levar em consideração possíveis normalizações nas palavras encontradas. Ao fazer isso, torna-se possível fazer uma redução/simplificação do vocabulário. Dentre as técnicas mais importantes estão: Stemming e Lemmatisation. \- Stemming é o processo de reduzir palavras aos seus radicais sem tentar levar em conta a sua classe gramatical. Este é normalmente um processo de heurística, que corta a extremidade das palavras. \- Lemmatisation consiste em aplicar técnicas para de flexionar as palavras, ou seja, normalizar elas retirando conjugações verbais e convertendo todos os substantivos para masculinos. Para que isso seja possível, normalmente faz-se necessária a utilização de um dicionário, uma vez que a heurística envolvida é mais sofisticada.
Matheus Fama Machado de Sousa Grupos podem ser considerados como sub-expressões entre parênteses em uma expressão regular. Extremamente útil para casar e-mails. Grupo 0 : Representa o casamento inteiro. Grupo 1 : Representa o primeiro casamento entre parênteses.( numeração da esquerda para direita) Ex: ((\w+)\\.(\w+))@\1 Anteriormente, vimos que para representar qualquer palavra bastava a ER \w, no entanto, esta expressão não era suficiente para reconhecer palavras em português. Para reconhecer palavras em português com maior precisão, é preciso acrescentar intervalos que contenham símbolos como apóstrofo, acento agudo, etc. Uma ER possível seria: [-'a-zA-ZÀ-ÖØ-öø-ÿ] . ZÀ-Ö Representa o intervalo, na tabela ASCII, de 192 até 214. Ø-ö Representa o intervalo de 216 até 246. ø-ÿ Representa o intervalo de 248 até 251. Definições Importantes: Tokens significam palavras. Vocabulário significa conjunto de palavras. No contexto de PLN, um corpus é considerado como um conjunto de documentos geralmente anotados e utilizados para aprendizado e validação. Em uma linguagem, nota-se uma correlação do crescimento de um vocabulário(conjunto de palavras) em relação ao número de tokens de maneira logarítmica. Em uma análise de texto, algumas palavras podem ser desconsideradas sem alterar o sentido do mesmo. Essas palavras são chamadas de stopwords. No entanto, é preciso avaliar seu uso para cada aplicação pois há casos em que uma palavra considerada stopword pode modificar o sentido do texto após sua remoção. Palavras, apesar de terem sentidos diferentes, podem ter construções bem similares. Nesse sentido, a normalização pode ser considerada como a redução ou a simplificação de palavras. Duas técnicas importantes: Stemming e Lemmatization. Stemming: O processo de stemming consiste em reduzir a palavra à sua raiz(não levando em conta sua classe gramatical) Exemplo: amig - amigo, amiga, amigão Stemming geralmente refere-se a um processo de heurística que corta as extremidades das palavras inclui frequentemente a remoção de afixos derivacionais. Pode ser representado por um conjunto de regras que dependem da linguagem. Lemmatisation : Consiste aplicar uma técnicas para deflexionar as palavras (retira a conjugação verbal, caso seja um verbo, e altera os substantivos e os adjetivos para o singular masculino, de maneira a reduzir a palavra até sua forma de dicionário) Exemplo: amigo - amigo, amiga, amigão.
Tiago Suzukayama O professor começou a aula explicando a última questão da última aula, onde a resposta usava grupos para resolver o problema da expressão regular. Cada sub- expressão entre parênteses em uma ER é um grupo. Podem ser utilizados para fazer repetições de padrões. Após esta primeira parte, foi explicado a definição de "palavra", que nada mais é do que um conjunto de caracteres. Pontuações podem ou não serem consideradas palavras. Em PLN, um corpus é considerado um conjunto de documentos (ou de frases) geralmente anotados e utilizados para: aprendizado e validação. Foi mostrado um exemplo de contador de palavras em Python. O programa consiste em receber um arquivo .txt, executar o regex [-'a-zA-ZÀ-ÖØ-öø-ÿ0-9]+, e identificar quantas palavras e o tamanho do vocabulário, e contar quantas vezes cada palavra repete. Existem algumas considerações que devem ser feitas ao busca palavras. Por exemplo, os casos: "Total de R$10,45", "www.ufabc.edu.br", "D'água", são alguns casos de borda, onde o regex pode não classifica-los como palavras. Existem alguns algoritmos, como o Maximum Mathing, que conseguem segmentar suas palavras e encontrar estes padrões, porém estes requerem um dicionário, e utilizam busca gulosa. Na seguinte parte da aula, foi explicado os conceitos sobre stopword e stoplist. Stopword pode ser considerada como uma palavra irrelevante para análise, como por exemplo: a, ao, aquele, aquelas, etc. Já stoplist é a lista de stopwords no contexto da análise. Stopwords/stoplists podem ser eliminadas antes ou depois do processamento do texto. É preciso avaliar seu uso para cada contexto de análise. Estes os termos de stopword e stoplist já são discutidos desde 1960. A normalização de palavras pode ser entendia como a redução ou simplificação de palavras. Para isso, podem ser aplicadas duas técnicas: stemming e lemmatisation. O stemming consiste em reduzir a palavra à sua raiz. Por exemplo, as palavras amigo, amiga e amigão pode ser reduzidas para "amig". Já a lemmatisation consiste em aplicar técnicas para retirar a conjugação verbal, caso seja um verbo, e alterar os substantivos e os adjetivos para o singular masculino. Por exemplo: amigo, amiga e amigão podem ser reduzidos para amigo.
Guilherme Beo Arqueiro Na aula 3, vimos agrupamentos de expressões regulares, como a possibilidade de agrupar os resultados em grupos de correspondência completa, parcial a esquerda, parcial à direita, etc. Além disso, vimos também que \w+ pode ser utilizado em expressões regulares como equivalente a qualquer caractere alfanumérico ou underscore, permitindo a simplificação de ERs. Também pudemos observar que a tabela ASCII estendida pode ser usada para a construção das expressões regulares, caso utilizemos À-Ö podemos obter como resultado os caracteres presentes nessa faixa da tabela ASCII estendida, que vai de C0 até D6. O conceito de tokens em processamento de linguagem natural é geralmente definido como palavras individuais, e a “tokenização” é a separação dessas palavras do texto. Dessa forma, conseguimos extrair os tipos/vocabulários do texto, que são ocorrências únicas de um token determinado. Com essa divisão obtemos o corpus, ou seja, o conjunto de documentos/frases do texto que são anotados e utilizados para análise e verificação do texto. Do teste aplicado em sala, pudemos ver essa definição de forma clara, onde o texto apresentado continha 34 tokens e um vocabulário 28, ou seja, existiam tokens que se repetiam no texto e foram definidos no vocabulário como 28 itens. O teste aplicado também apresentou o conceito de stopword e stoplists, sendo que em geral uma stopword é uma palavra que é considerada irrelevante para a análise de um texto, ou seja, são palavras que se repetem muito, como artigos e preposições que não acrescentam significado de contexto do texto, e as stoplists são listas que contém essas palavras. Dependendo do tratamento dado ao texto, as stoplists devem ser adequadas para que a efetividade em uma análise não seja perdida. Vimos em aula também o sistema de normalização de palavras, ou seja, a redução e simplificação de palavras. Dentro deste sistema, vimos duas técnicas: stemming, onde a palavra é reduzida à raiz, com suas extremidades cortadas e lemmatization, onde a palavra é deflexionada e tem a conjugação verbal retirada ou altera os substantivos e adjetivos para o singular masculino, buscando uma redução da palavra à forma de dicionário (essa técnica geralmente usa um dicionário de palavras).
Thiago Henrique Gomes Panini Resumo 3 – PLN A terceira aula de Processamento de Linguagem Natural, foram apresentados conceitos referentes a normalização de textos. Iniciando a aula com uma rápida atividade de 4 questões, o professor Jesus Mena introduziu o tema com definições sobre _stopwords, stoplists_ e normalização de palavras (stemmer). Em seguida, continuando a matéria a partir da segunda parte do capítulo 2 do livro Speech and Language Processing de Dan Jurafsky e James H. Martin, a aula teve sequência com um breve resumo da aula anterior sobre expressões regulares. O conceito de “grupos” foi passado como forma de demonstrar diferentes formas de se aplicar expressões regulares para a identificação de trechos textuais, inclusive aqueles com características linguísticas diferentes do inglês, como a presença de acentuação, cedilha, entre outros. A tokenização de palavras, assunto de uma das questões do teste inicial aplicado na aula, foi o tema abordado em sequência. Considerando a quantidade de palavras (tokens) e a quantidade de palavras diferentes presentes em determinado trecho textual (types), a denominação de corpus foi apresentada como uma prática de aprendizado (análise) e validação (verificação). Em um exemplo prático, o livro A Semana, de Machado de Assis, foi alvo de uma análise em Python utilizando ferramentas de expressões regulares e tokenização. Como resultado, foi possível realizar um levantamento das palavras mais comuns presentes no texto e, em conclusão, foi visto que tais palavras, muitas vezes, não representavam significado algum para um algoritmo de aprendizado, ou seja, muitas das palavras mais comuns resultantes foram preposições, artigos e demais grupos que, sozinhos ou em contextos, não causam alterações significativas no entendimento da frase e/ou são irrelevantes. Tais palavras são conhecidas como stopwords. Um conjunto de stopwords é conhecido como stoplist. Tratas as stopwords é um procedimento necessário durante o processamento de linguagem natural. Na sequência, o processo de normalização de palavras foi exemplificado de forma a transformar termos e manter seus radicais. Existem técnicas específicas para normalização: Stemming e Lemmatization. Dentro dos algoritmos de Stemming, existem Lovins Stemmer, Porter Stemmer, Paice Stemmer, cada qual com sua respectiva particularidade. Durante o curso, iremos trabalhar com Porter Stemmer.
Rafael Ribeiro Gomes da Silva Nessa terceira aula vimos como primeiro tópico quais são os possíveis agrupamentos das expressões regulares, como são reconhecidas as palavras e a codificação em python. As expressões regulares são baseadas na tabela ASCII, como o inglês e outros idiomas não possuem acentuação e certos tipos de caracteres, as expressões mais simples de captura de palavras não funcionam para o português. É necessária uma expressão estendida para usarmos plenamente o idioma. Para a leitura de palavras, utilizamos a tokenização, que separa o texto em pequenos trechos e realizamos a sua contagem. Token é a denominação para todas as palavras existentes no texto e a quantidade de palavras diferentes é denominada vocabulário. Um corpus é um conjunto de documentos que são utilizados para aprendizado e validação, e sua qualidade e aderência depende da quantidade da população que utiliza o idioma como língua mãe. A interpretação básica de texto é feita através de um algoritmo guloso e é preciso o dicionário para a interpretação. Para o estudo prático, foi utilizada a coletânea de Machado de Assis “A Semana”, e o primeiro problema relatado é que a quantidade de palavras do vocabulário pode ser superior à do idioma original, isso ocorre porque as flexões de palavras não são analisadas em um primeiro momento. Outro problema encontrado, são as stopwords, que devem ser removidas pois não servem para a análise na grande maioria dos casos, visto que são palavras com as maiores frequências e que não necessariamente indicam nada sobre o assunto envolvido. Porém, algumas expressões dependem da stopword, então devem ser analisados os contextos. Vimos que a normalização das palavras é utilizada para reduzir e simplificar as palavras, tornando mais positivo o resultado. São separadas em duas técnicas: Stemming e Lemmatization. Stemming: Esse processo reduz a palavra ao seu radical, independente da classificação gramatical. É uma heurística que reduz, através do corte das extremidades nas palavras. Lemmatization: Aplicando técnicas de deflexionização, retirando a sua conjugação, caso verbo, e alterando substantivos e adjetivos para o singular masculino, semelhante ao dicionário).
Victor Conceicao Denis Na última aula foi apresentado os conceitos de palavra, stopwords, tokens, tipo ou vocabulário e normalização através de duas técnicas, sendo elas Stemming e Lemming. Palavra é um conjunto de caracteres, podendo contar com acentuação e pontuação. Quando observamos cada palavra do texto, independente da palavra ser distinta uma da outra, ela é chamada de Token. Quando observamos palavras distintas somente, elas são consideradas vocabulário ou tipo. Durante a aula, fizemos um exemplo prático sobre o texto “A Semana” do Machado de Assis. No exemplo entendemos que algumas palavras não trazem um sentido para a compreensão do texto, como “que”, “como”, “a”, “o” dentre outras que trazem um sentido semântico porém não trazem sentido por si só, sendo que essas palavras normalmente são mais utilizadas para trazerem maior sentido para o texto. Essas palavras que não trazem muito sentido semântico são chamadas de stopwords, e normalmente são artigos e preposições. Além de percebemos que as palavras mais utilizadas normalmente são stopwords, percebemos que existem muitas palavras com valor semântico muito próximo mas que tem diferenças na palavra, como “texto” e “textos”. Essas duas palavras tem valor semântico muito próximo, sendo somente uma plural da outra. Isso ocorre tanto em variações de gênero, número ou grau. Para que a contagem de palavras seja a mais correta, pelo valor semântico que ela trás, é utilizada a técnica de normalização que é a redução ou a simplificação de uma palavra. Para a normalização, utilizamos 2 técnicas. Stemming e Lemming. O Stemming consiste em reduzir a palavra à sua raiz. Esse processo consiste em remover afixos, que seria como cortar a extremidade da palavra. Já o processo de Lemming consiste em deflexionar as palavras utilizando um dicionário. Nesse caso algumas palavras são alteradas para singular masculino, se substantivo ou adjetivo, ou retira a conjugação verbal de verbos. Exemplo: a palavra “gata” se tornaria “gato”.
Luana Ferreira do Nascimento Corpus textual é um conjunto de textos ou documentos que são utilizados para aprendizado ou para verificação dos testes de PLN. Dentro destes textos, temos os tokens. Tokens são como se fossem radicais das palavras, formas mais primitivas que não carregam tanta informação gramatical, como por exemplo qual o tempo verbal da palavra mas carregam informação sobre o tema do texto, indicando que aquele termo foi utilizado. É necessário separar as palavras em token para realizar uma boa análise de um texto pois uma variedade grande demais de tokens a se analisar pode tornar uma análise rasa, considerando cada variação da mesma palavra como um significado diferente e consequentemente classificando os temas dos textos em mais separações do que o necessário, criando também grupos com menos textos do que o que seria ideal para realizar uma comparação eficiente. Estes tokens podem ser tanto radicais de palavras, quanto frases inteiras ou pequenos agrupamentos de palavras. Alguns exemplos onde separações de tokens maiores faria sentido seria no nome SÃO Paulo, pois apenas as palavras são e Paulo sozinhas não carregam tanta informação a cerca do tema abordado em um documento quanto a junção destas duas, que no caso pode indicar a cidade, o santo ou o estado de São Paulo. Ao varrer um documento em busca de tokens, muitas das palavras com frequência de ocorrência relevante podem não ser capazes de fornecer muita informação sobre o assunto do documento, como proposições por exemplo. Estas palavras são chamadas de stop words ou stop list e não costumam ser consideradas como tokens. Para cada linguagem abordada podemos criar listas de stop words para não precisarmos processar palavras com pouco significado. Para reduzir os tokens a formas mais concentradas e continuar a evitar o acúmulo de palavras com significados parecidos em classificações diferentes, podemos utilizar diversas técnicas que são chamadas de normalização.
Iasmin de Haro Pracchias O tópico da aula do dia 10/06 foi normalização de texto, uma técnica que consiste em transformar o texto de maneira a deixá-lo padronizado. Para aplicar a normalização no texto são utilizadas técnicas como a tokenização, que consiste em separar palavras ou sentenças em unidades, transformando-as em tokens. Os tokens também podem ser chamados de palavras, e o número de diferentes tipos de palavras em um texto ou sentença podem ser chamados de tipo ou vocabulário. O professor apresentou alguns exemplos de palavras e tipos. Também foi introduzido o conceito de corpus, que é o espaço de busca de expressões regulares e que pode ser um único documento ou uma coleção de documentos que geralmente são utilizados para análise e validação. Foi apresentado um exemplo prático em Python, onde o programa fez a leitura da obra "A Semana" de Machado de Assis, apresentou o número de palavras no texto, imprimiu as 20 palavras mais frequentes e suas frequências, e apresentou a quantidade de tokens e tipos encontrados. Ainda sobre processamento de texto, foi apresentado o conceito de stopwords ou stoplists, que são palavras que em determinados contextos tem valor semântico irrelevante para a análise do texto, como por exemplo, preposições e artigos, e podem ser eliminadas antes ou depois de sua leitura. Porém se faz necessário analisar o uso das stopwords para cada situação, pois podem se fazer necessárias para o tipo de análise em questão. Quanto maior a lista de stopwords utilizada, menor será o detalhamento da busca e possivelmente menor será sua efetividade. Duas técnicas principais de normalização de palavras são Lemmatization e Stemming, que consistem respectivamente em determinar que algumas palavras tem a mesma raiz sem levar em conta sua classe, como por exemplo, gat: gato, gatinho, gata, gatinha, e retirar os sufixos do final da palavra.
Brian Alves Andreossi Aula 2 O que a expressão regular a seguir seleciona? [-'a-zA-ZÀ-ÖØ-öø-ÿ]+ Ela consegue selecionar palavras (do português) Palavras (tokenização) Quantas palavras temos na seguinte frase? \- Extremamente adaptável, pode ocorrer em ambientes altamente alterados pelo ser humano. 11 sem considerar ',' e '.'; 13 caso contrário. Nesta frase? \- Muito longo para os que lamentam, muito curto para os que festejam. 12 palavras 8 diferentes. Corpus Coletânea sobre um determinado assunto. No contexto de PLN, um corpus é um conjunto de documentos (ou de frases) geralmente anotados e utilizados para 1\. Aprendizado (análise) 2\. Validação (verificação) Tokens Número de palavras total Vocabulário Número de palavras diferentes Uso de python para coletar palavras words = re.findall(regex, content) for w in words: print(w) print(f"Quantidade de palavras : {len(words)}") Nem sempre as palavras que mais aparecem dizem algo sobre o texto em questão. Algoritmo Maximum Matching \- É requerido um dicionário e trabalha com busca gulosa. Palavras com pouco sentido semântico: stopword/stoplist Uma stopword pode ser considerada uma palavra irrelevante para análise (geralmente artigos, preposições) Porém existe contexto onde stopword é relevante \- Rio de Janeiro -> Rio Janeiro \- Vitamina A -> Vitamina Normalizando as palavras Reduzir palavras a seu radical. A ideia é escapar as palavras que são flexionadas em g?nero, número, grau, tempo verbal. Stemming Processo que reduz a palavra à sua raiz (sem levar em conta a classe gramatical). \- amig: amigo, amiga, amigão \- gat: gato, gata, gatos, gatas Algoritmos de stemming: Lovins, Porter, Paice. "Lematisação" (Lemmatisation) Consiste em aplicar técnias para deflexionar as palavras (retira conjugação verbal, altera os substantivos, adjetivos para o singular masculino) Geralmente usa um direcionário de palavras (a heurística é mais sofisticada). Lento, mas bem mais eficiente.
Lucas Vitalino Severo Pais Nesta ultima aula foram introduzidos novos conceitos e aprofundados conceitos passados na aula passada sobre expressões regulares. Houve um pequeno teste no começo da aula com algumas questões de expressões regulares usando os atalhos definidos no PCRE como por exemplo \b (termino de palavra), \w (caracteres alfa-numéricos mais o caracter underscore _), \W (identifica tudo que o \w nao identifica), \s (espaços, tabs), entre outros. Também foi aprofundado os caracteres de substituição para grupos (as expressões regulares delimitadas por parenteses), quando identificamos um grupo na substituição ele pode ser identificado pelo atalho \1, \2, \3 e assim por diante. Esses identificadores de expressões regulares mais genéricos são importantes para melhorar a leitura e encurtar o tamanho das rexpressões regulares desenvolvidas. Também foi introduzido o conceito de stop words e stop lists. Stop words são palavras que para a recuperação de informações são ignoradas na indexação de texto completo porque são muito comuns e geralmente não são relevantes para a captura de conteúdo do documento. As stop words geralmente estavam em uma lista em mecanismos de pesquisa mais antigos e foram removidas do texto e não indexadas. Hoje, a maioria dos mecanismos de pesquisa da Internet é baseada na indexação completa, as stop words são exibidas, mas não contribuem para a pesquisa. Há casos também onde a ditas stop words podem sim ser relevantes para o contexto da pesquisa, ou então ela coincide com uma palavra que nao necessáriamente é o caso de uma stop word. Por exemplo na sentença "Vitanima A", se retirarmos a letra A do final pois é a mesma da stop word artigo 'a' a sentença perde seu sentido pois não saberemos com certeza de qual vitamina se está falando.
Mayza Cristina da Silva Nesta última aula tivemos a apresentação de grupos, com expressões regulares. O uso de parênteses faz a separação dos grupos , da esquerda para direita. Pudemos verificar a busca através de palavras, como por exemplo ao utilizar a expressão \w+ (que encontra qualquer caractere alfanumérico. Já aplicando [a-zA-Z]+ nós encontramos todas as palavras apenas. Para acentuação já é necessário o uso de uma expressão um pouco mais elabora e complexa, sendo definida esta se embasando no intervalso da tabela ASCII. Com o tokenização para contagem de palavras consideração cada sinal como virgulas e pontos contando-os como palavras. Neste caso também teríamos a variação da contagem de palavras diferentes ou iguais, a quantidade indiferente é o nosso número de tokens, a variabilidade presente na quantidade de palavras diferente nós definimos com tipo ou vocabulário. Copus: Coletânea sobre um determinado assunto. É um conjunto de documentos geralmente utilizados para aprendizado e validação, como por exemplo para nortear e padronizar, classificar quais palavras pertencem ao idioma português. Após essas análises teóricas vimos a execução de códigos em python para a contagem de palavras em documentos, tendo como exemplo o livro de Machado de Assis Algoritmo: Maximum Mathing. Utiliza modelos estatístico sendo um algoritmos de segmentação, tendo um aprendizado supervisionado Temso também uma análise de palavras de pouco sentido semântico. Temos o uso de palavras de parada. Na normalização de palavras temos algumas flexões que são feitas como por gênero, número ou grau, e isso pode acabar sendo considerado como redução ou simplificação de palavras. O processo de steamming consiste me reduzir a palavra à sua raiz (sem levar em conta a classe gramatical). Já o Lemmatisation consistem em aplicar técnicas para deflexionar as palavras
Matheus Miranda Teles Complementando expressões regulares, cada sub-expressão de uma ER entre parenteses é um grupo, e estes grupos podem se acessados utilizando \n, com n sendo o numero do grupo selecionado pela ER. Em português, as expressões regulares para reconhecimento de palavras necessitam de um padrões a mais para a identificação de acentos, sendo assim, a expressão descrita por [-'a-zA-ZÀ- ÖØ-öø-ÿ], funciona para selecionar palavras, ao contrário da \w+. Tokens são os blocos que constituem um textos, palavras. Na geração de tokens, várias palavras se destacam pela sua frequência, porém para uma análise textual essas palavras acabam não ajudando pois não dão significado ao textos, essas palavras são denominadas stopwords, e a stoplist é a lista delas. As stopwords são irrelevantes para análise e pode ser artigos, preposições etc. Com isso, concluimos que as stopwords podem ser eliminadas para uma melhor análise do texto e transmitir mais valor semantico no final do processamento. Na língua portuguesa há diferentes flexões para palavras como gênero, número e grau, além de inúmeros tempos verbais, e para melhorar a análise existem duas técnicas chamadas Stemming e Lemmatisation. Stemming é o processo de reduzir a palavra à sua raiz, assim levando em conta as palavras amigo, amiga e amigão, a raiz comum é amig, já para as palavras gato, gata, gatos e gatas, a raiz é gat. O stemming normalmente refere-se a um processo de heurística que corta as palavras. Lemmatisation consiste em aplicar técnicas para deflexionar as palavras, tirando conjugação verbal, normalizando substantivos e a adjetivos para o singular masculino. Assim o conjunto de palavras visto anteriormente, amigo, amiga e amigão seriam teriam em comum a palavra amigo.
Jairo da Silva Freitas Junior Na aula do dia 10 de junho, iniciamos os estudos retomando o exercício 6 da atividade da aula anterior para explicar Grupos em expressões regulares, que são sub-expressões entre parênteses numa expressão regular. Os índices do grupo correspondem a ordem dos parênteses inseridos. Também foi explicado como usar Regex para selecionar palavras em português, considerando especificamente acentos da tabela ASCI estendida. A expressão utilizada foi [-'a-zA-ZÀ-ÖØ- öø-ÿ]. Realizamos uma atividade (provinha) em sala de aula, e na sequência abordamos através de exemplos o conceito de tokens (palavras), tipos e vocabulário (palavras distintas) e corpus (conjunto de documentos). Vimos que o vocabulário cresce de forma logarítmica com a quantidade de tokens e implementamos em Python um programa que imprime a quantidade de repetições de cada token e o total de tokens. Este script foi testado com a obra de Machado de Assis A Semana. Ao observar a alta ocorrência de Stopwords, o professor apresentou o conceito do algoritmo Maximum Matching e a lista de stopwords em português. Com isso, executamos um novo exemplo com a remoção destes itens, observando que ainda assim pouco sentido podia ser extraído das palavras mais frequentes. No contexto de extração de stopwords, foi ponderado que Dolamic e Savoy publicaram em 2009 que a remoção de stopwords prejudica a performance de alguns algoritmos de busca. Ao final da aula, tratamos de normalização de texto via stemming (redução a raiz, sem levar em conta a classe gramatical) e lemmatization (redução ao singular masculino, geralmente usando um dicionário). O professor também comentou sobre a forma como avalia os resumos: através da similaridade dos textos com um gabarito redigido.
Matheus Tulio Pereira da Cruz [‘a-zA-ZÀ-ÖØ-öø-ycomdoispontos] - Expressão regular que identifica o alfabeto português O sinônimo de tomem na literatura é palavra. Vocabulário(|V|) é o número de palavras diferentes e tokens (N) é o número de palavras dentro de uma coleção. Corpus é um conjunto de documentos geralmente anotados. Eles são utilizados para aprendizado ( análise ) e validação ( verificação ). Crescimento de um vocabulário : |V| = kN^beta 0 < beta < 1 Observando a contagem de palavras do livro de Machado de Assis, podemos perceber que o número de palavras únicas é muito menor que o número de palavras no geral, o que mostra o porque que o crescimento do vocabulário é logarítmico. Dicionários são como vetores, onde seus índices podem ser qualquer tipo de coisa como textos e números. Esse índice é chamado de chave e é através dessas chaves que acessamos o conteúdo de um dicionário. Stopwords são palavras que aparentemente são irrelevantes no sentido de não trazer nenhuma informação relevante sobre o texto. (Para, por, de, das, a, o , ...) Set é um conjunto que é uma estrutura de dados semelhante ao dicionário, mas ele só aceita um valor de cada elemento. Uma normalização pode ser entendida como a redução ou simplificação de palavras. Duas técnicas de normalização são Stemming e Lemmatisation Stemmming é um processo que consiste em reduzir a palavra à sua raiz ( sem levar em conta a classe gramatical ) Exemplo : Amig: amigo, amiga, amigão Lemmatisation é um processo para retirar a conjugação verbal, de maneira simplificada, é reduzir a palavra até sua forma de dicionário. É recomendado que se use stemming para busca e Lemmatisation para tradução de textos.
Felipe Dias Correia _A aula foi introduzida com um pequeno resumo da aula passada, fazendo um breve comentário sobre expressões regulares e depois a resolução do teste 6, em que precisava selecionar as cadeias que continham 2 palavras repetidas numa forma sequencial._ _Após o teste, foi explicado sobre Grupos, onde em uma expressão regular, é possível encontrar um padrão e formar grupos com aquelas palavras e um exemplo de ER para palavras em português, e a Tabela ASCII, onde contem a acentuações._ _Foi abordado a Tokenização, onde foram usados exemplos a quantidade de palavras(Token) e quantidades de palavras diferentes (Tipo), e também foi explicado sobre Corpora Textuais, e alguns exemplos em Python, que também levaram em conta, palavras não triviais, usando o Algoritmos como Maximum Mathing, que faz uma busca gulosa, e Stopword/StopList, onde procura uma palavra irrelevante num texto para análise, mas precisa ser feito um estudo antes de usar em uma aplicação e poucos motores de busca usam esse algoritmo, apesar de ter sido muito estudado nos anos 60._ _S obre normalização de palavras, foi mostrado a flexibilização de algumas palavras, e algumas técnicas para redução ou simplificação destas palavras, como Stemming, que corta a extremidade das palavras e do Lemmatization, que usa técnicas de deflexionar a palavra para encontrar a sua forma no seu dicionário._ _Ao final da aula, foi explicado sobre a recuperação de informação, mostrando que vocabulários menores pode levar a melhores desempenho e que stemming e lemmatization são operações comuns e iniciais onde são usadas em sistemas de IR, em que para busca, pode usar o Stemming e tradução, usa-se o Lemmatisation._
Augusto Goncalves da Silva A aula teve como foco principal a abordagem do tema Normalização de Texto no PLN, mais especificamente Palavras e Stopwords. A contagem de palavras em uma dissertação é extremamente importante para classificação de textos. Tal informação pode nos dizer o quanto um texto é robusto, ou completo. Há uma diferença entre contar o número de palavras, ignorando as distinções entre elas, e contar o número de palavras DIFERENTES, onde cada palavra é contada apenas uma vez, e suas repetições não são consideradas. As palavras contadas, no total, são chamadas de Tokens. Os Grupos de palavras únicas são chamados de Tipos (ou Vocabulários). A coletânea sobre determinado assunto, no PLN, é chamado de Corpus (que possui o plural Corpora). Existem estudos empíricos que tentam encontrar uma padronização na relação entre os Tokens e os Vocabulários dentro de um Corpus. Tais estudos chegaram a uma fórmula que melhor representa esse padrão comportamental dos textos: |V|=kN^b, onde 0 < 1\. Quando vamos avaliar um texto quanto aos seus Tokens e Vocabulário, podemos observar que uma série de palavras, que se repetem consideravelmente, não traz um incremento verdadeiro para a análise realizada no processamento textual. Geralmente, tratam-se de artigos, preposições etc. As palavras irrelevantes são chamadas de Stopwords (ou Stoplist), e cabe ao desenvolvedor decidir o que será feito com elas durante o processamento do texto. É muito delicada a pura remoção de Stopwords, pois pode-se perder conteúdo relevante durante esse processo. Além da desconsideração de Stoplist no processamento, também é interessante a utilização de técnicas de normalização de texto, como as que removem variações de uma mesma palavra (gênero, número, grau). As técnicas do tipo mais importantes são as de Stemming e Lemmatization. O Stemming consiste em reduzir as palavras do texto para o seu radical, removendo todas as possíveis variações com o simples corte nas extremidades da palavra. Ex.: Gato, Gata, Gatos = > Gat. É bastante utilizado para buscas. Já a técnica de Lemmatization consiste em deflexionar as palavras para que elas sejam processadas em sua forma de dicionário (singular, masculino, verbo infinitivo). Ex.: Gato, Gata, Gatos -> Gato. É bastante utilizada para tradução.
Matheus de Oliveira Finotti Primeiramente o Professor distribuiu um teste e deixou alguns minutos para a sala pensar. Começamos a aula vendo sobre o operador "\1" que faz a referência ao primeiro grupo do código, no caso a expressão "\b(\w+)\W+\1" foi utilizada para identificar palavras repetidas. Cada expressão entre parênteses é considerada um grupo, no caso do \1 ele faz o casamento inteiro do grupo, já o \2 é usado para o primeiro grupo e o \3 para o último. Também passamos pela tabela ASCII estendida. Entramos no conceito de Tokens que são as palavras e como diferenciamos em um texto o que as separa (espaço, pontuação). Em um certo texto, além do número de palavras total, temos o número de palavras que são diferentes (vocabulário). Em um gráfico do crescimento total em função do crescimento do número de vocabulário temos uma função logarítmica. Começamos a ver as características de palavras em Python, no exemplo do livro de “Machado de Assis”. Neste exemplo foi apresentado o conceito de “Stopword” que são palavras de baixa relevância para a análise (“a”, “o”, “que”...) e podem ser eliminadas antes ou depois do processamento. Porém não podemos simplesmente retirar sem um avaliar seu sentido para a aplicação, algumas frases podem perder o sentido sem elas. O Conceito de normalização de palavras é muito importante para aplicações em texto, pois elas são flexionadas em gênero, número e grau (exemplo: outros, outras, outra...) o que gera muitas variações de uma mesma palavra origem e com essas técnicas podemos simplificar o entendimento e busca. Passamos pelas técnicas mais importantes “Stemming” e “Lemmatization”. O “Stemming” consiste em reduzir palavras a sua raiz ignorando assim as derivações que ela pode seguir (gat: gat os , gat as ). Já o “Lemmatization” utiliza algoritmos para deflexionar as palavras para o seu singular masculino ou sem sua conjunção verbal para reduzi-la a sua forma do dicionário. É preciso um dicionário de palavras. Entre as aplicações podemos citar a própria avaliação de resumos utilizada pelo Professor.
Marcelo de Souza Pena Teste no começo da aula sobre o que é uma palavra e quantas palavras tinham nas em cada item da primeira questão, o que são stopwords, stoplists e palavras candidatas. Revisão da última questão do teste anterior. Explicação do que são grupos e como usá-los com \número para facilitar as expressões, como o \1 da última questão do teste 2. Expressão para aceitar acentos para poder identificar palavras em português. Intervalos de expressões regulares são feitos com base na tabela ASCII estendida. Código em python para identificar palavras em um texto. O vocabulário (palavras diferentes) aumenta de forma logarítmica em relação ao número de palavras. Revisão de dicionários, de forma que cada palavra é uma chave e o valor associado a ela é o número de vezes que ela aparece. Alemão e japonês não consideram apenas o espaço para identificar palavras. Maximum matching, casamento máximo, algoritmo guloso útil. Stopwords são palavras muito repetidas que são pouco representativas para textos em geral, como artigos, por exemplo, e casos em que elas são relevantes para a compreensão do texto. “Set” = conjunto que permite adicionar várias vezes a mesma palavra que ele mantém apenas uma. Lei de Bradford, desconsiderar as k primeiras e últimas palavras em termos de frequência, porque usar as do meio é melhor para representar um texto. Em busca talvez seja melhor não retirar stopwords, pois pode reduzir a efetividade. Palavra em singular e masculino, verbos sem conjugação, o vocabulário em português não é tão grande assim. Normalização: representar várias palavras como uma só. Pode flexionar em gênero, número, grau, conjugar, etc. Stemming e Lemmatisation. A primeira reduz a palavra à raiz, truncando como em amig que pode ser amigo, amiga, amigos, amigas. O segundo deflexiona as palavras, tudo no singular, masculino e verbos sem conjugação, igual ao dicionário. Os resumos são avaliados por similaridade entre palavras, alguns termos é importante estarem presentes, a avaliação é feita comparando com uma espécie de gabarito. Considera erros de português com um corretor ortográfico.
Matheus Dos Santos Pereira Assunto da aula foi normalização de texto (palavras e stopwords), que compreende o capítulo 2 do livro speech and language processsing da bibliografia, foi explicado como funciona a utilização do \1, que faz referência ao último grupo criado, todos os grupos são demarcados por um expressão regular dentro de parênteses. Trabalhamos o seguinte problema em sala como tópico da aula, a expressão [a-zA-Z]+ é o suficiente para identificar palavras em inglês, porém em português e algumas outras línguas enfrentamos alguns problemas relacionados aos acentos, para o português temos o equivalente [-'a-zA-ZÀ-ÖØ-öø-ÿ]+ , usamos a tabela ASCII estendida para planejar esta ER, só excluímos dela os sinais que não podem compor nas palavras do português, como por exemplos o sinal da soma, multiplicação e divisão. Foi visto o que são tokens e vocabulários, assim como alguns problemas nas definições destes, assim como o que é corpus no contexto de PLN, um corpus é um conjunto de documentos (ou de frases) geralmente anotados e utilizados para: Aprendizado (análise) e Validação (verificação). Vimos um código em python e fizemos um teste sobre tokens, vimos o algoritmo Maximum Mathing, onde utilizamos busca gulosa e um dicionário para fazer a separação de palavras, vimos os stopwords que podem ou não serem dispensados, dependendo do caso, que são palavras normalmente não útil (artigo, preposições). Normalização de palavras, é basicamente trazer as variações de gênero, número, grau entre outros, para a raiz comum da palavra, ou seja, reduzir ou simplificar as palavras, podemos usar o Stemminh ou lemmatization para fazer isso, o primeiro corta as extremidades das palavras usando uma heurística, ou um conjunto de regras para uma determinada linguagem, é mais rápido que o segundo método, que consiste em usar um dicionário para deflexionar as palavras e reduzir elas até a forma que estão no dicionário, usa métodos mais sofisticados e normalmente é mais lerdo, para buscas o stemming é melhor, para traduções é preferido o uso do lemmatisation.
Rafael Pauwels de Macedo Quando falamos de expressões regulares/regex em linguagens diferentes da língua inglesa, temos um grande problema no reconhecimento de palavras, uma vez que o shortcut \w+ não reconhece acentos, ou hifens entre palavras. Na palavra pântanos por exemplo seria reconhecido p como uma palvra, â não seria reconhecido e ntanos seria uma segunda palavra. Uma forma de reconhecer essas palavras seria criando uma expressão que utilize os ranges da tabela ASCII. Crescimento de um vocabulário cresce de forma logarítmica ao número de palavras na ordem de |V| = kN^(beta) sendo 0 < beta < 1. Entrando no campo prático vimos a análise de uma coletânea de Machado de Assis, chamado A Semana. Nessa prática vimos que o código espera algumas configurações relativas ao arquivo a ser aberto e a forma de leitura, a saída é um ranking entra as palavras que mais aparecem e a quantidade total de palavras do texto. Usando um dicionário com todas as palavras em minusculo podemos saber exatamente a frequência de cada palavra no texto. É importante notar sobre as stopwords/stoplist, que são palavras que na maioria das vezes não agregam valor a análise, que são geralmente as mais frequentes em todos os textos, sendo importante desconsidera-las, mas com certa cautela, por exemplo, Rio de Janeiro não é a mesma coisa que Rio Janeiro. Além da questão de caracteres especiais temos também problemas com palavras não triviais, como a língua chinesa ou por exemplo um texto sem espaços, para isso tempos algoritmos como Maximum Matching, que fazem uma busca gulosa através de um dicionário. O processo de stemming é utilizado para reduzir a palavra à sua raiz, refere- se a um processo heurístico, se baseia geralmente na truncagem da palavras mas existem outros algoritmos como o de Lowins, de Porter ou o de Paice. Outro processo que facilita nossa análise é o processo de lemmatisation, que consiste na deflexão de palavras, geralmente usando um dicionário de palavras.
Ricardo Gomes Nesta aula foram abordados alguns conceitos relacionados à normalização de textos. Foi apresentado o conceito de Tokenização, um processo de segmentação do texto, onde cada token equivale a uma palavra. Por exemplo, se um texto possui 12 tokens ele possui 12 palavras. Um conjunto de tokens únicos é chamado de Vocabulário e uma coletânea de documentos ou frases sobre um determinado assunto é definido como Corpus. O Corpus é utilizado como base para análise ou verificação. Nele é possível observar um crescimento logaritmo entre o vocabulário e o número de tokens. Ao realizar uma análise de um texto por meio de códigos, podem ocorrer alguns problemas, como símbolos únicos e espaçamentos irregulares, que prejudicam a segmentação do texto e requerem algoritmos de segmentação mais sofisticados. Também é possível notar uma grande quantidade de palavras vazias de significado nos textos (artigos e preposições). Este tipo de palavra irrelevante é definido como stopword, ou stoplist, e são eliminadas da análise, porém alguns casos mostram que stopwords são relevantes em certos contextos, como no caso de Vitamina A ou Rio de Janeiro, onde a remoção do artigo e da preposição respectivamente acarretam na perda de significado da frase inteira. Já na parte de normalização das palavras, são apresentadas duas técnicas importantes de simplificação. A primeira é o processo de Stemming, uma heurística objetivo é reduzir a palavra à sua raiz, eliminando certas partes dessa, ou seja, a palavra é truncada. A segunda é o processo de Lemmatisation, uma heurística mais sofisticada que reduz uma palavra à sua forma de dicionário. O processo de Stemming pode ser utilizado em ferramentas de busca, onde o importante é se encontrar palavras semelhantes, enquanto o Lemmatisation pode ser utilizado em traduções, onde as mudanças aplicadas nas palavras são relevantes para o contexto.
Diego Pereira de Lima Nesta aula de Processamento de Linguagem Natural foi apresentado técnicas para a preparação dos dados a serem utilizados em algum modelo. Retomando conceitos abordados na aula passada, foi apresentado as soluções de alguns exercícios da ultima aula, juntamente com a explicação de uma expressão regular ou ERs(considerada mais trabalhosa) a tendo como objetivo extrair duas palavras repetidas presentes sequencialmente. Após a abordagem das ERs, foi apresentado a tokerização, onde é possível extrair individualmente cada palavra. Foi abordado também o conceito de “Corpus”, sendo um conjunto de documentos ou frases, prontas para a aprendizagem ou validação. Alguns scripts foram abordados como base da extração informações. Para processamento de texto com “stop words” é possível retirar está tipo de estrutura não padronizada. O processamento de linguagem natural retirando palavas como “stop words” ou “stop list” é de grande valia, uma vez que estas palavras não representam grande valor ao o texto e a conceituação os temas presentes induzindo a extração da interpretação textual e semântica estrutural,ou seja, uma palavra irrelevante para análise. Para a normalização de palavras e simplificação são abordadas comumente duas técnicas de processamento de texto, são: “Stemming” e “Lemmatization”. No “Stemming” é feita a redução da palavra em sua forma raiz, sem levar sua em conta sua classe gramatical, grosso modo ela “corta” as extremidades das palavras. Já o processo de “Lemmatisation” consiste em retirar a conjugação verbal ou alterar substantivos e adjetivos para o gênero masculino, sendo que este processo é mais sofisticado. Também ao final da aula foi comentado sobre o resumo e sua classificação por processamento de texto utilizado no “rankeamento” dos exemplares redigidos pelos discentes.
Marcio Jose de Carvalho Na terceira aula, seguimos definindo o conceito de expressões regulares. Expressões regulares (ER) são regras que generalizam um conjunto de sequências de caracteres a partir da estrutura delas, que definem quais e como esses caracteres podem ser agrupados. Com as ER, é possível fazer buscas por sequências específicas em sequências maiores, e mesmo encontrar sequências complexas a partir da construção de ER compostas por ER menores, mais simples. Usando ER, podemos definir as estruturas que compõem uma linguagem, apesar de não podermos definir o significado de um texto sem as regras da mesma. Mas essa identificação das estruturas é fundamental, e chamamos elas de tokens. O processo de identificar tokens é computacionalmente simples, mas vulnerável a alguns problemas como diferentes alfabetos ou diferentes línguas que utilizam o mesmo símbolo com significados diferentes, especialmente pontuações. O processo de tokenização é utilizado no pré-processamento de textos, e a identificação de quais tokens pertencem ou não à língua definida é baseada em conjuntos de textos representativos daquela língua. Em línguística, chamamos esses textos de corpus (plural corpora). Os corpora também nos permite classificar os tokens quanto ao valor semântico deles, e assim tokens definidos como tendo pouco valor podem ser removidos sem prejuízo ao significado. Essas palavras são chamadas stopwords ou stoplist. Embora de fato essas palavras sejam geralmente de pouco significado, existem contextos em que elas são necessárias. Outras duas ténicas de pré-processamento são stemming e lematização (lemmatization). Stemming é a redução de uma palavra à sua raiz, ou seja, a remoção de prefixos, sufixos. Lematização é a redução da palavra à sua forma do dicionário.
Rodrigo San Martin Ignacio Gomes Resumo da aula 3. A etapa de normalização do texto deve ser executada antes do processamento de linguagem natural. Dentro desse processo entram a segmentação ou lematização de palavras do texto, a normalização de formato de palavras e a segmentação de sentenças em texto contínuo. Para tokenização, um modo mais simples é a remoção de números e de pontuação, com posterior tokenização de palavras entre espaços. No entanto, vírgulas podem prover informação, assim como pontuação que indica o fim de sentenças / frases. Pontuação também pode ser importante para indicar casas decimais de valores, títulos como Dr. ou até mesmo Km / h. Assim, para grande parte das aplicações, a remoção de pontuação prejudicará o PLN. Outra ferramenta importante é a lematização ou lemmatizing, que deflexiona palavras de mesma raiz, como as palavras amigo, amigas, amiga, amigos e amigão, que podem ser lematizadas para amigo. De modo mais simples, outra técnica que pode ser aplicada é a stemização ou stemming, que trunca ou corta palavras. Por exemplo, amigo, amigão e amigos podem truncados para amig. Dessa maneira, o vocabulário, que é o número de palavras diferentes no texto, podem ser reduzido, o que poderia facilitar a extração de informação por PLN, seja pelo agrupamento maior, mas também pela redução do número de tokens mínimos para treinamento de algoritmos de machine learning / aprendizado de máquina com boa acurácia. Outro termo importante é o termo corpus, corpora ou corpo do texto, que é a coletânea de um determinado assunto. Esses textos específicos são muito importantes para o processamento de linguagem pois podem ser utilizados para segmentação de linguagem.
Estevao Crippa da Veiga Grupos são parte de expressões regulares e representados por sub-expressões entre parenteses. Consistem em Um exemplo de regra que pode ser aplicada a um grupo é o uso da barra invertida seguida por um número, que indica a repetição do grupo associado a esse número. Uma expressão regular é um grupo 0, enquanto os grupos seguintes são formados por expressões entre parenteses, do parenteses mais externo para o mais interno, leitura da esquerda para a direita. Outro conceito que podemos abordar no contexto de processamento de linguagem natural é o de palavras (ou tokens), que consistem em um conjunto de símbolos de um alfabeto concatenados. Geralmente, não fazem parte de uma palavra os espaços em branco, vírgulas, quebras de linhas, ponto final e dois pontos. Já o vocabulário é o conjunto de palavras diferentes de um texto, enquanto corpus é o conjunto de documentos ou frases utilizados para análise aprendizado ou validação. Relacionado a isso, existe a lei de Herdan, em que a quantidade de palavras não repetidas é proporcional à quantidade total de palavras elevada a um fator que varia entre 0 e 1. Além disso, existe um algoritmo chamado Maximum Matching que utiliza aprendizado supervisionado para identificar palavras. Para a PLN, em alguns casos é importante a retirada de palavras que não trazem muito significado ao texto e podem prejudicar a análise. Tais palavras são conhecidas como stopwords. Por fim, é importante a normalização de palavras utilizando dois processos: stemming e lemmatisation. Ambas são operações comuns em sistemas de recuperação de informações.
Paulo Alexander Simoes Resumo - Aula 3 A aula se inicia sobre o seguinte tema: Normalização de texto. Em processamento de linguagem natural a normalização de texto é uma técnica que busca representar de maneira agrupada diversas representações e formas de palavras associadas a um mesmo conceito. Portanto, o que é feito é uma redução ou a simplificação de palavras. Exemplo: escrever, escritura, escrito,escreva, ... Foram vistas duas técnicas, o 'stemming' consiste em realizar a redução da palavra sem levar em conta a classe gramatical, realiza -se um processo de heurística que corta as extremidades das palavras e inclui frequentemente a remoção de afixos derivacionais. Identificador de palavras ou tokenização consiste em identificar a quantidade palavras em uma determinada expressão, o que deve parecer simples, mas que pode variar a estratégia de buscar de acordo com aquilo que queremos ver, como: "Visualizar todas as palavras", "Visualizar somente palavras distintas", "Visualizar todas palavras e os sinais de pontuação". Tudo isso e diversas outras variações que podem surgirem agem diretamente na estratégia de identificação. Corpus textual, é dado como um conjunto de documentos ou frases utilizados para 'aprendizado' e 'validação' de um algoritmo utilizado para identificar algum padrão, conceito, palavra em uma determinada expressão regular. O qual pode ser implementado em python utilizando-se da biblioteca re (regular expression). Outro modelo de aprendizado é o modelo estatístico utilizado em algoritmos de segmentação. Outro conceito visto foi o de stopword e stoplist. Stopwords são palavras consideradas irrelevantes para análise, logo podem ser eliminadas antes ou depois do processamento de um texto


Número de resumos processados: 70.

Observação:


Arquivo gerado por um programa.