Resumos de aula: PLN - 2019


Nota: Arquivo gerado por um programa.

Nome Resumo
Mauro Mascarenhas de Araujo Aula de 22/07: "Reconhecimento de entidades nomeadas". A aula iniciou-se com a seguinte pergunta: "Syntax highlighting ajuda no aprendizado de programação?". Após uma breve discussão foi exibido um artigo de título "Does syntax highlighting help programming novices?", que apontava que nenhuma evidência que demonstrasse que syntax highlighting fizesse alguma diferença no aprendizado foi encontrada. Logo após, a aula prosseguiu para o tema "Extração de informação", cujo principal objetivo é identificar regiões textuais de interesse das pessoas e colocá-las de forma clara e útil para inferências realizadas por algoritmos computacionais. Para isso, são necessárias estruturas de dados eficientes (em termos de consumo de memória e tempo de acesso aos dados) para armazenar as palavras e o texto em si. O principal desafio é: dado um texto, identificar as palavras mais importantes, de forma que seja possível atrubuir um rótulo a elas. Vale notar que para realizar tal tarefa é necessário ter acesso à um dicionário. Em seguida foi mostrado a importância do tópico de recuperação de informação no contexto da computação; no caso, foi mostrado o quadragésimo segundo congresso da ACM de pesquisa e desenvolvimento no ramo de recuperação de informação, sendo que umd dos tópicos exibidos foi um artigo que abordava o tema de detecção de discurso de ódio. Um exemplo de aplicação atual pode ser um aplicativo de email que identifica datas no corpo da mensagem para associar evento à agenda do usuário (frequentemente são utilizadas expressões regulares ou lista de nomes). Enfim, a ideia é capturar palavras que possam ser de interesse do usuário e classificá-las de acordo com algum critério. Voltando ao problema de reconhecimento de entidades nomeadas (NER - Named Entity Recognition), a principal funcionalidade do reconhecedor é identificar e classificar as entidades nomeadas em um texto escrito em linguagem natual (Um exemplo fornecido foi um reconhecedor que identificou palavras como Andrew, Labor e 2010 e as classificou como pessoa, organização e data, respectivamente). Outro exemplo foi a aplicação de um identificador sobre a descrição da UFABC (em inglês), que identificou uma organização (UFABC), uma pessoa (Luiz Bevilacqua), dois locais (São Paulo e Brasil), além de 12 conceitos. É importante perceber que a maioria dos classificadores está disponível somente para a língua inglesa. Também é importante notar que o processo de o rotulador agir sobre o conjunto de palavras é relativamente caro, principalmente se considerar o contexto, além de que melhores dicionários levam à melhores resultados (de identificação e classificação). As principais aplicações das entidades nomeadas são poder servir de índices para conceitos e para novas associações ou relações entre outras entidades : Na web, por exemplo, as entidades nomeadas podem ser assiciadas a links com maiores informações, como ocorrem com os dados estruturados na Wikipedia. Logo após, foi exibido um algoritmo simples de identificação de palavras importantes (consistia em analisar se a palavra começava com letra maiúscula: se sim, é importante), que devido à sua simplicidade de implementação sofria com problemas de palavras no início de frase e em grupo de palavras contíguamente importantes, como em classificações científicas. Portanto, foi apresentado o segundo algoritmo, o teste2.py, que deixava de considerar palavras que estivessem no início de linha ou precedidos por pontuação. A seguir foram exibidos alguns tipos de entidades nomeadas que variam de acordo com a aplicação, mas as entidades mais comuns são : pessoa (people), organização (organization), localização (location), entidade geopolítica (geo-political entity), construções (facilities) e veículos (vehicles). Um reconhecedor de entidades nomeadas permitem encontrar segmentos de texto que constituam nomes próprios e, em seguida, classificar o tipo da entidade, sendo realmente necessário fazer o uso de um dicionário. Porém o reconhecimento é difícil devido à ambiguidade da segmentação, precisando decidir o que é uma entidade e o que não é, além de identificar seus os limites : Um exemplo de ambiguidade apontado foi JK que pode estar se referindo à alguma escola, à alguma avenida, à alguma pessoa ou ao governo (neste caso, faz-se necessário avaliar o contexto). Um exemplo de contornar a situação é assinalar múltiplas categorias à mesma entidade, como foi o caso de "Washington", que foi classificado como pessoa, localização, entidade política, organização e veículo. O pipeline comum consiste em, dado um texto livre, realizar a segmentação de sentenças, realizar a tokenização, identificar partes da fala, realizar a detecção de entidades e, identificar as relações (obter-se-á uma lista de tuplas). Logo após, foi apresentado um algoritmo mais completo, o teste3.py, que realizava a verificação de entidades nomeadas (ne_chuck), além de apresentar possíveis datasets para a realização do treinamento de um reconhecedor de EN. Já no final da aula, foi relembrado a importância dos resumos (ressaltando que não podemos reprovar nem nos resumos, nem na prova e nem no trabalho final), além de anunciar que agora teremos até 72 horas para submeter os resumos e que algumas datas foram alteradas (porém, a do mini-relatório 3 continuou a mesma, devido às datas de apresentação já estabelecidas). Foi explicado o que deveria ser entregue na parte 2 do projeto (apenas pelo aluno(a) representante do grupo): responder a real proposta do artigo, informar qual parte dele está sendo implementada e listar as limitações frente à ideia proposta pelos autores do artigo. Por fim, o professor reservou o restante da aula para tirar dúvidas a respeito do projeto final e avisou que dia 25/07 não haverá aula.
Rodrigo Hiroaki Ideyama Na aula de número 14 de processamento de linguagem natural, o tema foi sobre “Reconhecimento de entidades nomeadas”. No começo, o professor perguntou para a classe se a coloração do código nos editores de texto contribui para o melhor desenvolvimento e o aprendizado do programa que, inclusive, ele mostrou o artigo científico “Does syntax highlighting help programming novices?” que trata exatamente desse assunto. No próximo tópico, o Jesús começou a falar sobre a extração de informação, dizendo que os sistemas de extração de informação possibilitam a gente transformar os dados não estruturados (incorporados em textos) em dados estruturados, encontrar partes relevantes do texto, obter informação de trechos de texto, produzir uma representação estruturada de informação relevante. O que ajuda a organizar informação que seja útil para as pessoas e colocar informações de forma clara que sejam úteis para inferências realizadas por algoritmos computacionais. Para aqueles alunos que pretendem ir mais a fundo, ele falou das duas edições do livro “Modern Information Retrieval” de Ricardo Baeza Yates e Berthier Ribeiro Neto do ano de 1999 e 2010. Além disso, falou do evento que está ocorrendo agora, SIGIR 2019, em Paris, que é uma conferência que tem como objetivo apresentar e demonstrar novos resultados de pesquisa de novos sistemas e técnicas de recuperação de informação através de artigos publicados, palestras, tutoriais e workshops voltados para essa área. Como exemplo dado em aula, o professor falou do email onde se faz a identificação de uma data para associar com uma agenda por meio do uso de expressões regulares ou lista de nomes para demonstrar que vários sistemas atuais permitem identificar regiões textuais de interesse para o usuário. No tópico seguinte, “Reconhecimento de Entidades nomeadas NER - Named Entity Recognition, o Jesús definiu que um reconhecedor nos possibilita identificar e classificar as entidades nomeadas em um texto escrito em linguagem natural, onde estas podem ser índices para conceitos e novas relações / associações entre outras entidades, sendo na web, elas serem associadas à links com maiores informações. A fim de colocar isso em prática, o professor pediu para alterar o programa teste1.py que é um programa de uma versão muito simples de identificação de palavras importantes de um texto, porém algumas palavras não deveriam ser consideradas importantes, por isso dessa tarefa passada para a gente. Depois disso, ele falou sobre os tipos de entidades nomeadas que vai dependendo de aplicação para aplicação, entretanto, a seguir temos uma lista das seis entidades nomeadas mais comuns: * People (PER) * Organization (ORG) * Location (LOC) * Geopolitical (GPE) * Facility (FAC) * Vehicles (VEH) O reconhecimento dessas entidades é bem complicado, em parte, por causa da ambiguidade da segmentação. Para a resolução, é preciso decidir o que é uma entidade e o que não é, e quais são os limites. Como exemplo dado em aula, temos JK (Juscelino Kubitschek), que deve ser decidido se é escola, avenida, pessoa ou governo. Todavia, um reconhecedor de entidade nomeada facilita encontrar segmentos de texto que constituam nomes próprios e, em seguida, classificar seu tipo da entidade. Todo esse reconhecimento é feito em um pipeline comum que funciona da seguinte forma: ao receber um texto qualquer, primeiramente, é feito a segmentação dela para consegui fazer a tokenização. Depois, a fim de detectar a entidade nomeada, parte do discurso é rotulado que, por fim, se faz a relação das entidades reconhecidas. Como demonstração, o professor mostrou isso em prática pelo código teste3.py. Para alimentar esse reconecedor de entidades nomeadas, temos o corpus, por exemplo, no kaggle, website famoso que contém vários tipos de datasets. Para finalizar a aula, ele falou das mudanças que teve por parte das avaliações, o professor falou que, de agora em diante, as entregas dos resumos das aulas podem ser feitas até 72h, além disso,o próximo mini-relatório do projeto, valendo 20% da nota do projeto, pode ser submetido até dia 1 de agosto. Esta entrega deverá ser feita por meio do preenchimento de um formulário, preenchido pelo aluno representante.Também disse que um trabalho de graduação não precisa, geralmente, ser algo inovador que esteja no limite do conhecimento humano em uma determinada área (estado-da-arte), porém mestrado e doutorado precisam procurar expandir esse limítrofe. Por exemplo, no meu mestrado, pretendo buscar grandes pesquisas na área de visão computacional e/ou chatbots.
Jair Edipo Jeronimo Antes de iniciar o assunto da aula, foi demonstrado um estudo realizado que tentava entender se o destaque das palavras na sintaxe de um programa auxilia os novos programadores a aprender a programar, entretanto, através do experimento, não foi constatado que realmente ajuda. Diante disso, iniciamos o estudo de reconhecimento de entidades nomeadas, a partir da extração de informação, que nos permite estruturar dados incorporados em textos, a fim de encontrar as partes relevantes e obter informações, produzindo uma representação estruturada com informação relevante. O objetivo da extração de informação é organizar as informações relevantes de maneira clara, para facilitar as inferências realizadas por algoritmos computacionais. Existem diversos sistemas atuais que permitem identificar regiões do texto que podem trazer interesse para o usuário, onde frequentemente é utilizado expressões regulares ou lista de nomes. Um exemplo disso é, em um e-mail, identificar uma data para associar com a agenda do usuário. Noções de ordem também são importantes e fáceis de se relacionar, como por exemplo para a frase “O segundo signo do zodíaco é Touro”, é possível criar uma sequência estruturada, onde sabemos que para a entidade signo do zodíaco o segundo termo é Touro, o que é uma informação relevante. Dessa forma, um reconhecedor de entidades nomeadas, permite identificar e classificar as entidades em um texto escrito em linguagem natural. Primeiro é identificado as palavras que podem ter relevância e, após isso, elas são classificadas de acordo com uma base já existente. Essas entidades podem ser índices para conceitos ou novas associações com outras entidades. Um exemplo disto é a estruturação de dados feita pelo Wikipédia, onde as palavras que possuem alguma definição importante, tem um link para a página que possui sua definição. Em aula, vimos um exemplo de identificação de palavras que podem possuir importância para um texto, feito na linguagem de programação Python, o qual realizava a leitura de um documento e identificava, através de uma expressão regular, as suas palavras e depois imprimia na tela todas as palavras, sendo que as consideradas como importantes possuíam uma sinalização. Ele considerava uma palavra como importante se o seu primeiro caractere fosse maiúsculo. Entretanto, algumas palavras foram consideradas importantes, mas não deveriam ter sido, como por exemplo a palavra “A” que só possuía seu primeiro caractere maiúsculo, pois estava no início do parágrafo. Essa questão foi tratada no segundo exemplo visto, que era idêntico ao primeiro, porém considerava apenas palavras que possuíam tamanho maior que 1. Existem diversos tipos de entidades, sendo que cada uma delas vai depender do contexto em que a aplicação se encontra. Podemos citar como as principais: pessoas, organizações, locais, veículos, entidade geopolítica e instalações/construções. Assim, um reconhecedor de entidades nomeadas deve ser capaz de identificar segmentos de texto que constituam nomes próprios e classificar seu tipo. Este reconhecimento é difícil devido à grande ambiguidade da segmentação, como por exemplo o nome Juscelino Kubitschek que pode estar relacionado com uma escola, uma avenida, uma pessoa e um governo, e o reconhecedor deve ser capaz de identificar qual destas relações é correta. Deste modo, o reconhecedor pode levar em consideração o seguinte fluxo: primeiro deve-se segmentar o texto e realizar o tokenization. Após isso, identificar as entidades e depois as classificar baseada em suas relações. Esse fluxo foi utilizado em um exemplo visto em aula, no qual o algoritmo recebia uma frase (lista de palavras) e retornava tuplas, com a palavra e sua classificação. Entretanto, devido ao grande processamento que deve ser utilizado, este processo é bastante custoso. Ao final da aula, foi comentado sobre a segunda entrega do projeto, que será via google forms, semelhante a primeira, e que foi adiada em mais uma semana. Além disso, a pedido dos alunos, o prazo de entrega dos resumos também foi aumentado em mais um dia, para facilitar as entregas.
Igor Neres Trindade Na aula de hoje, 22/07/2019, abordamos técnicas para reconhecimento de entidades nomeadas, de forma a entender como atribuir um rótulo a uma palavra ou conjunto de palavras. Até o momento, vimos como extrair palavras e entender em qual contexto ela está inserida, seja por meio de um tesauro ou analisando o próprio corpus. Entretanto, no fim, não sabemos dizer o que a palavra é exatamente. Tomemos como exemplo a sigla “JK”. Ela pode se referir ao nome próprio Juscelino Kubitschek ao governo JK, ou ao shopping ou avenida, que também possuem esse nome. Editores de texto fazem esse reconhecimento! Na sintaxe de um código, a cor é dada pelo tipo das palavras, sejam elas funções, nomes de variáveis, classes, entre outros. Para reconhecer entidades nomeadas, o que se faz, em linhas gerais, é construção de dados estruturados com base nos dados não estruturados, como um simples texto, por exemplo, e a partir disso, obtém-se informações da palavra. E essa construção é quase sempre feita através de buscas em árvores e tabelas hash. Não existe muito segredo ou uma solução mágica por trás, e o resultado é uma sequência estruturada. Podemos, por exemplo, ao identificar as entidades, criar tuplas em que o primeiro elemento seja a palavra e o segundo seu tipo. Para esse processo de classificação, são utilizados reconhecedores. Reconhecedores de ENs permitem identificar e classificar as entidades nomeadas. A identificação pode ser feita através de diversas abordagens, mas uma bem simples é identificar se a palavra é importante ou não. As palavras não-importantes são desconsideradas, obtendo-se um vocabulário menor, que será rotulado. A rotulação, por sua vez, pode ser feita fazendo-se buscas em dicionários. E essa busca não é feita somente em palavras, mas também em segmentos, como a entidade “Universidade Federal do ABC”, composta por quatro palavras, deixando o processo caro. Bons reconhecedores podem, inclusive, entender duas formas distintas como a mesma entidade, como “Universidade Federal do ABC” e “UFABC”. Vimos na aula que as utilidades para entidades nomeadas são inúmeras e podemos criar relações entre entidades. Na web, um bom exemplo é o Wikipedia, no qual as ENs são associadas a links com maiores informações. Por fim, a aula prosseguiu com algumas demonstrações em python, começando com técnicas simples de identificação de ENs, procurando por palavras importantes. Em programas anteriores, sinais de pontuação eram desconsiderados, por estarmos preocupados com a extração de palavras somente. Para a detecção de palavras importantes, entretanto, adotamos a simples, porém efetiva, estratégia de verificar se o primeiro caractere da palavra é maiúsculo, desconsiderando casos em que a palavra dá início a frase e, consequentemente, temos que incorporar os pontos. Com essa te?nica conseguimos filtrar algumas palavras importantes, muitas delas nomes próprios. A partir disso, são necessários dicionários para a classificação. A biblioteca NLTK, do python, possui funções já implementadas, em diferentes linguagens e possibilitam fazer isso. Entretanto, um problema surge quando se fala em contexto. É o caso do primeiro exemplo dado nesse texto, da sigla “JK”. A ambiguidade da segmentação dificulta o reconhecimento. Existem alternativas para isso, como categorizar com múltiplas categorias. Isso resolve em parte nosso problema. Mas muitas pesquisas de mestrados trabalham nisso, na tentativa de melhorar essa ambiguidade. Em suma, o reconhecimento de entidades nomeadas é uma ideia simples, porém custosa em relação a execução e manutenção, como os tesauro. Como dito anteriormente, não existe solução mágica para isso. Existem, entretanto, maneiras de manter o processo todo mais eficiente, como a descentralização. O Google é muito bom em identificar partes de uma imagem, por utilizar como insumo milhões de soluções por hora, feitas por humanos que indicam objetos e ajudam na categorização. Replicar isso para treinar ENs, entretanto, pode não ser um processo tão simples.
Elsio Antunes Junior 22/07/2019 - Reconhecimento de entidades nomeadas; A aula começa com um questionamento: Does syntax highlighting help programming novices? O senso comum, na figura de várias pessoas, inclusive eu, concordou que parecia bastante evidente que sim; No entanto o professor mostrou um artigo de Cristoph Hannebauer com este título; Perguntado (por mim) qual era a posição do professor antes de saber das argumentações explicitadas no artigo ele afirmou que sempre acreditou que a coloração do código ajuda sim no aprendizado, mas não deixou claro se mudou de ideia nem disse qual é a conclusão ou o ponto que o artigo defende, apenas nos estimulou a lê-lo; O assunto principal da aula é Extração de informação; Os sistemas de extração de informação permitem estruturar dados, buscar relevâncias, produzir uma representação estruturada da informação com objetivo de organizar informação útil para as pessoas ou coletar dados para inferências por algoritmos computacionais; foram citados os livros "Modern Information Retrival" por Yates e Ribeiro-Neto de 1999 e outro de mesmo nome, de 2010; Falou-se também sobre o SIGIR 2019, uma conferência internacional da ACM de pesquisa e desenvolvimento sobre recuperação de informação; O professor indicou, dentre os artigos recém publicados o "Hate Speech Detection is Not as Easy as You May Think: A closer look at model validation" de Arango, Perez e Poblete; Vários sistemas permitem identificar regiões textuais relevantes; o exemplo dado é o da identificação de datas no e-mail para criar um link e associar a uma agenda; O professor nos explica que a técnica frequentemente usa expressões regulares e/ou dicionários; Reconhecimento de Entidades nomeadas NER - Named Entity Recognition; NER é identificar e classificar as entidades num texto; O próximo slide exibe um pequeno texto com entidades classificadas como pessoa, trabalho, organização, lugares, eventos e conceitos; As entidades nomeadas podem ser índices para conceitos, novas relações ou associações entre outras entidades; O exemplo da Wikipédia nos mostra dados estruturados em links em nomes de termos importantes; Em uma primeira abordagem um código python em sua versão naíve separa as palavras usando expressão regular e classifica por importante ou não, baseado no fato da primeira letra da palavra ser maiúscula. Disse o professor que, se a primeira letra é maiúscula, as chances de ser um nome de pessoa, de entidade ou de lugar geográfico são maiores; Alguém da sala o lembrou que poderia ser um início de frase; A segunda versão do código, portanto, considera a pontuação do texto como parte das palavras e então podemos separar o que é e o que não é início de frase; Segue-se mencionando os tipos de entidades nomeadas, como são consideradas pelos programas profissionais que tratam do caso; Organização, veículo, construções, período de tempo, moeda financeira, pessoa e localidade são alguns dos exemplos capturados de um pequeno texto; O professor chama atenção para o fato de que a preocupação do trabalho numa primeira camada é com a lexicografia e que pode haver uma outra camada de sintaxe ou avaliação de contexto, já que semanticamente, palavras como JK (Juscelino Kubitschek) podem significar o nome de uma escola, uma avenida, uma pessoa ou um governo; Finalmente, recursos disponíveis são apresentados; O site www.Kaggle.com possui vários datasets e corpus com entidades anotadas para estudo e treinamento de algoritmos; O restante da aula foi dedicado a esclarecimento de dúvidas a respeito da entrega do projeto da disciplina.
Michelle Kaori Hamada Nesta aula de “Reconhecimento de entidades nomeadas”. Iniciamos a aula comparando dois códigos, um com cor e outro sem cor, para refletirmos se cor ajuda a programar. E como decidir se cor é realmente efetiva? Por meios de artigos que discutem e estudam sobre o assunto. Na sala, como exemplo, foi citado o artigo "Does syntax highlighting help programming novices?" feito por Christoph Hannebauer, Marc Hesenius e Volker Gruhn. Nele é dito que não há evidencias de que a sintaxe colorida não auxilia a compreender os códigos. Em seguida, estudamos o último capítulo de Speech and Language Processing sobre extração de informação. Com os sistema de extração de informação podemos transformar os dados não estruturados (incorporados em textos) em dados estruturados, encontrar partes relevantes do texto, obter informação de trechos de texto e também produzir uma representação estruturada de informação relevante. Assim, o objetivo em extração de informação é organizar informação que seja útil para as pessoas e colocar informações de forma clara para que sejam úteis para inferências realizadas por algoritmos computacionais. Os sistemas atuais permitem identificar regiões textuais de interesse para o usuário, por exemplo, dentro de emails ele consegue identificar uma data para que possa ser feita a associação com a agenda. Para tanto, frequentemente são utilizadas expressões regulares ou lista de nomes. Mas como rotular um conjunto de texto não estruturado? Alterando e organizando a informação de forma clara, fazendo um reconhecimento de entidades nomeadas, ou NER (Named Entity Recognition). Um reconhecedor tem como função identificar e classificar as EN em um texto escrito em linguagem natural. Entre os usos de EN podemos encontrá-los como índices para conceitos e novas relações/associações entre outras entidades. Na web, as EN são associadas links com maiores informações, por exemplo, dados estruturados na wikipedia. A primeira abordagem prática da aula foi o teste1.py que utiliza expressão regular com caracteres de expressão, ou seja, se tiver um ponto ele é contado como uma palavra. Esse algoritmo consegue identificar se a palavra é importante por meio das letras maiúsculas, essas palavras podem ser início de frase, nome próprio ou de organizações, entre outros O script utilizado neste algoritmo é uma versão muito simples de identificação de palavras importantes, ele acaba retornando algumas que não deveriam ser consideradas importantes. Os tipos de EN mais comuns dependerá da aplicação, contudo as 6 entidades nomeadas mais comuns podem ser do tipo people, organization, location, geo-political entity, facility e vehicles. Um reconhecedor de EN busca encontrar segmentos de textos que constituam nomes próprios e classifica seu tipo da entidade. Realizar o reconhecimento não é uma atividade fácil devido à ambiguidade da segmentação, pois é preciso decidir o que é uma entidade e o que não é, e também quais seriam os limites. Por exemplo, existem palavras que possuem múltiplas categorias em segmentos de textos, como Louis Vuitton que pode ter como categoria pessoa, organização ou um produto comercial. O teste 3 realiza o pipeline comum de reconhecimento em EN retornando para cada entrada a sua classificação. Os recursos disponíveis para EN podemos encontrar no kaggle corpus para treinamento de um reconhecedor de EN.
Ruan Fernandes A aula 13 teve como tema "Reconhecimento de entidades nomeadas", tema que pode ter como exemplo de finalidade a captura de sentimentos num texto. A aula começou com um slide mostrando 2 códigos iguais, um sem cores como num editor de texto simples, o outro com realces e destaques/cores, como em uma IDE. Foi então lançada a pergunta, sobre a influência/ajuda do uso de uma IDE por pessoas começando a aprender programação. Então, foi mostrado um estudo recente, de 2018, que mostra que não há evidências do destacamento de palavras auxilia no entendimento de novatos sobre o código-fonte. Extração de informação: -permite transformar os dados não estruturados (incorporados em textos) em dados estruturados; -permite encontrar partes relevantes do texto; -obter informação de trechos; -produzir uma representação estruturada de informação relevante; A extração de informação objetiva organizar informação que seja útil para as pessoas e colocar informações de forma clara que sejam úteis para inferências de algoritmos computacionais. Como exemplo, foi dado o e-mail, que identifica uma data e permite associá-la diretamente à agenda. Reconhecimento de entidades nomeadas: um reconhecedor permite identificar e classificar as EN em um texto escrito em LN (pessoa/data/local/organização/conceitos/etc.), podendo ser índice para conceitos ou novas relações/associações. Foi então, mostrado um código-teste que classificava as "entidades" como importantes ou não-importantes, baseado num laço onde apenas palavras que iniciavam com letra maiúscula eram consideradas importantes e as demais, contidas no "regex" (termos, pontuações, etc. de uma determinada lista) e as demais, eram consideradas não-importantes. O código é falho pois pode considerar importante palavras maiúsculas posteriores a um ponto, por exemplo, ou a primeira palavra de um parágrafo. Um segundo código foi mostrado, onde era criada a condição que ele deveria ser uma posição maior que a 0 na lista E ser maiúscula E que o token anterior não seja um sinal de pontuação. O resultado, então, se torna satisfatório e mais conciso. Tipos de entidades nomeadas: No primeiro exemplo, um texto tem algumas de suas palavras tagueadas (ORG organização, TIME tempo, MONEY moeda, PER pessoa, LOC local). O tipo de EN mais comum depende da aplicação, mas foi citada uma lista das 6 entidades nomeadas mais comuns, sendo: PER pessoas, ORG organizações, LOC lugares (regiões, montanhas, mares, etc), GPE entidade geo- político (países, estados, províncias), FAC instalações e VEH veículos. Um reconhecedor de EN permite encontrar segmentos de texto que constituam nome próprio e, em seguida, classificar seu tipo de entidade. Em geral, esse é um processo complicado e falho devido à ambiguidade. Como exemplo, foi citado JK (Juscelino Kubitschek). Shopping? Escola? Avenida? Pessoa?. Então, foi mostrado um fluxo normal de reconhecimento de EN: texto cru -> segmentação de sentença -> tokenização -> tagueamento de PoS (Parts of Speech) -> detecção de entidades -> detecção de relações -> relações. Por fim, foi mostrado um código usando o NLTK que tokenizava uma sentença, tagueava os tokens e nomeava as entidades. Foi mostrada a lista de tags de PoS e um corpus para treinamento disponível no Kaggle.
July Anne Pinheiro Aula 13: Reconhecimento de entidades nomeadas Extração de informação São sistemas voltados para a transformação dos dados não estruturados (incorporados em textos) em dados estruturados. Além disso, o mesmo encontra partes relevantes do texto, obtém informação de trechos de texto e produz uma representação estruturada de informação relevante. Objetivos: * Organizar informação que seja útil para as pessoas. * Colocar informações de forma clara que sejam úteis para inferências realizadas por algoritmos computacionais. SIGIR É a Conferência Internacional da ACM SIGIR sobre Pesquisa e Desenvolvimento em Recuperação de Informação, que está em seu 42ª edição e ocorrerá em Paris entre os dias 21 à 25 de julho. Durante a aula foi apresentado o evento de sinalizado os trabalhos que ocorrem durante os 5 dias de conferência voltados para a apresentação de novos resultados de pesquisa e para a demonstração de novos sistemas e técnicas de recuperação de informações. Exemplos Vários sistemas atuais permitem identificar regiões textuais de interesse para o usuário. Por exemplo em E-mail: identificar uma data para associar com a agenda. Usualmente expressões regulares ou lista de nomes são utilizadas. Texto Web Desestruturado -> Sequência Estruturada Reconhecimento de Entidades nomeadas NER – Named Entity Recognition São utilizados como reconhecedor que permite identificar e classificar as entidades nomeadas(EN) em um texto escrito em linguagem natural. Por exemplo: Identificação: Andrew Wilkie, 2010 Classificação: Person, Date. Aplicação As EN podem ser índices para: conceitos e novas relações/associações entre outras entidades. Na web: Às entidades nomeadas são associadas Links com maiores informações. Por exemplo: Dados estruturados na wikipédia . Foram apresentados 2 testes(teste1.py e teste2.py) simples de scripts em python que identificam palavras importantes dentro de um texto. Sendo observado que algumas palavras identificadas como importantes podem ser consideradas como stop words. Tipos de Entidades Nomeadas Tipos de EN mais comuns são: People(PER), Organization(ORG), Location(LOC), Geo-Political(GPE), Facility(FAC), Vehicles(VEH). Importante: Os tipos dependerão muito da aplicação. Um reconhecedor de EN Permite encontrar segmentos de texto que constituam nomes próprios e, classificar seu tipo da entidade. O reconhecimento é difícil, devido à ambiguidade da segmentação. Precisamos decidir o que é uma entidade e o que não é, e quais são os limites. Exemplo: JK ( Juscelino Kubitschek ) Escola? Avenida? Pessoa? Governo? Pipeline comum: reconhecimento de EN texto bruto(string) -> segmentação de sentenças -> tokenização -> parte da marcação de fala -> detecção de entidade -> detecção de relação(lista de tuplas). O script teste3 em python é um exemplo de pipeline para reconhecimento de EN. Exibindo a lista de tuplas para classificação da string submetida ao programa. Uma lista de tags foi apresentada para classificação das entidades nomeadas. Foi apresentado o kaggle como recursos disponíveis de corpus para treinamento de um reconhecedor de entidades nomeadas. Sobre a entrega 2: Projeto No final da aula foi sinalizado os itens a serem entregues para a segunda parte do projeto da disciplina e reservado um tempo para dúvidas pontuais de acordo com o tema do projeto.
Ricardo Gomes Nesta aula foi abordado o tema de reconhecimento de entidades nomeadas. Algo bem comum em uma IDE são as palavras coloridas de forma diferente para cada tipo, sejam elas uma importação, uma definição de variável ou outro tipo. Esse resultado é parte de uma análise das palavras presentes na sintaxe das linguagens de programação. A ideia do reconhecimento dessas palavras é a extração de informação, isto é, a transformação de dados não estruturados em estruturados, encontrar partes relevantes em um texto, obter informação de trechos ou destacar informações relevantes, com o objetivo de organizar informações de forma clara e útil para as pessoas. Diversos sistemas permitem a identificação de regiões textuais, um exemplo prático disso é a identificação de datas em emails para associá-la à agenda do usuário. Frequentemente são utilizadas expressões regulares e lista de nomes nesse tipo de identificação. Um reconhecedor é capaz de identificar e classificar as entidades em um texto, resultando em palavras, como pessoas, lugares, organizações e outras coisas, serem destacadas. Entidades nomeadas podem ser índices para conceitos ou para novas relações entre outras entidades, no caso da web, entidades são associadas a links com maiores informações. Exemplo disso é a Wikipédia, que transforma certas palavras em hyperlinks para outras páginas da wiki. Uma vez descrito o que são tais entidades, resta o problema de identificá-las. Num primeiro teste com um algoritmo, identifica-se palavras com a letra inicial maiúscula, uma boa intuição pois palavras, como nomes de pessoas, lugares e outros, tendem a serem escritas dessa forma. Um problema é a captura de palavras irrelevantes que iniciam frases, que, por regra, também se iniciam com letra maiúscula. Num segundo teste, modificando um pouco o algoritmo, é possível ignorar tais palavras analisando o seu contexto, ou seja, verificando a existência de sinais de pontuação antes da palavra e se o comprimento da mesma é superior a 1. O uso das entidades nomeadas é diversa, mas geralmente são utilizado para identificar pessoas, organizações, localizações, entidades geopolíticas, instalações e veículos. Apesar da função principal do reconhecedor ser identificar palavras e classificá-las, nem sempre é uma tarefa fácil. Diversas palavras podem ser ambíguas se analisadas fora de contexto. Como exemplo, ao se falar de Juscelino Kubitschek, nunca será possível definir se é uma referência à pessoa, a uma avenida ou a uma escola, sem o contexto. O processo mais comum na identificação de entidades nomeadas é a segmentação, em seguida a tokenização, depois a identificação da parte da linguagem (verbos, substantivos, etc.), detecção de entidade e por fim detecção de relações. Num terceiro teste, é possível observar as etapas deste processo, separando e identificando as partes da linguagem e as entidades nomeadas. Como uma das atividades do reconhecedor é a classificação, é necessário categorias predefinidas para classificar uma palavra e um dos recursos é um corpus com as principais características das palavras de acordo com o GMB (Groningen Meaning Bank).
Renato de Avila Lopes Resumo 13 Reconhecimento de entidades nomeadas A aula começou com a discussão se editores com realce de palavras ajudam no ensino de programação para quem está começando Extração de informação (Information retrieval): Transforma dados incorporados em textos e não estruturados em dados estruturados Informação de trechos de textos Representação estruturada de informação relevante Objetivo: Organizar informação útil Informação de forma clara para inferências realizada por algoritmos computacionais Exemplos Sistemas que permitem identificar regiões textuais de interesse E-mail - identificar data e associar a uma agenda Utiliza expressões regulares ou lista de nomes NER - Named Entity Recognition Permite identificar e classificar ENs em um texto escrito em linguagem natural Exemplo demonstrado - descrição em inglês da UFABC Reconheceu São Paulo e Brazil como "places", mas não Santo André Reconheceu Luiz Bevilacqua como "person" Reconheceu Federal University of ABC / Universidade Federal do ABC / UFABC como "organisation" ENs podem ser índices para: Conceitos Novas relações e ou associações ente entidades Web: associação com links que fornecem maiores informações (Wikipédia) Primeira abordagem: teste1.py Utilizando expressões regulares marca como IMPORTANTE palavras que começam com letra maiúscula Marca erroneamente começo de frase Script muito simples de identificação de palavras importantes Programa teste2.py Modificado o programa teste1.py para reconhecer pontuação e não marca começo de frase Tipos mais comuns de ENs Depende da aplicação: People PER, Organization ORG, Location LOC, Geo- Political Entity GPE, Facility FAC, Vehicles VEN Encontra segmentos de texto que constituam nomes próprios e classifica pelo tipo Ambiguidade torna o reconhecimento difícil Exemplo JK Juscelino Kubitschek escola? avenida? pessoa? governo? Washington - pessoa, localização, entidade política, organização, veículo Pipeline comum: reconhecimento de Entidade Nomeada Texto puro (string) -> Sentence segmentation -> Tokenization -> Part of speech tagging -> Entity detection -> Relation detection Programa teste3.py Dicionário Utiliza bilbioteca nltk (word_tokenize, pos_tag, ne_chunk) Frase: Mark and John are working at Google. Resultado: Mark - NNP proper noun and - CC coordinating conjuction John - NNP are - VBP verb, sing. present working - VBG verb, gerund / present participle taking at - IN preposition / subordinating conjunction Google - NNP . - . Part of sppech TAG Algumas tags comuns CD - cardinal digit DT - determiner FW - foreign word JJ - adjective NNS - noun plural UH - interjection Recursos disponíveis Corpus para treinamento de reconhecedor de Entidades Nomeadas https://www.kaggle.com/abhinavwalia95/entity-annotated-corpus No final da aula, o professor falou um pouco sobre a segunda entrega do projeto, relembrou as datas de provas e entregas, a forma que será feita a entrega através de formulário e o que é esperado que se entregue. Acrescentou que se deve dar maior ênfase ao que propuseram os autores ao escrever o artigo e à parte a ser implementada, o que e como. E também listar as limitações encontradas. Explicou o que é estado da arte em uma área e a diferença do que é necessário para escrever um TCC, um mestrado ou doutorado. Além disso, alterou a data da segunda entrega para o dia 01 de agosto.
Leonardo Nascimento Os sistemas de extração de informação permitem transformar dados não estruturados em dados estruturados encontrando partes relevantes do texto e extraindo sua informação, produzindo uma representação estruturada da informação relevante. Assim, o objetivo destes sistemas é organizar informação de tal forma que esta seja útil para as pessoas e representar a informação de tal modo que inferências possam ser feitas por meio de algoritmos computacionais. O livro Modern Information Retrieval, escrito por Ricardo Baeza-Yates e Berthier Ribeiro-Neto, é um livro bastante relevante que trata sobre o assunto. Também sobre extração de informação, estará acontecendo do 21 ao dia 25 de julho de 2019, em Paris, o congresso SIGIR 2019 ? 42nd International ACM SIGIR Conference on Research and Development in Information Retrieval. Muitos sistemas atuais permitem identificar regiões textuais de interesse para o usuário, como um cliente de e-mail que é capaz de identificar uma data e sugerir a criação de um evento na agenda, ou a transformação para uma sequência estruturada de um texto não estruturado coletado na web. Frequentemente são utilizadas expressões regulares ou lista de nomes para reconhecer padrões e identificar este tipo de informação. O Reconhecimento de Entidades Nomeadas ou Named Entity Recognition (NER) é um processo que permite identificar e classificar as entidades nomeadas em um texto escrito em linguagem natural. Neste processo são essencialmente duas etapas, uma de identificação e outra de classificação, onde as entidades nomeadas podem ser índices para conceitos, novas relações, ou associações entre entidades. Usando textos da Wikipédia, o primeiro script demonstra uma aplicação muito simples para a identificação de palavras importantes em um texto. Algumas palavras são consideradas importantantes indevidamente, mas regras mais estritas para considerar palavras como importantes capacitam a obtenção de resultados melhores. Os tipos de entidades nomeadas mais comuns dependem da aplicação, mas de forma geral podemos tomar pessoa, organização, localização, geopolítica, entidade, lugares e veículos como as 6 entidades nomeadas mais comuns. Um grande desafio no reconhecimento de entidades nomeadas é definir o limite entre o que é uma entidade e o que não é. Tomando um reconhecedor de entidade nomeada que permite encontrar segmentos de texto que constituam nomes próprios e, em seguida, classificar seu tipo de entidade, ao encontrar JK, referente a Juscelino Kubitschek, esta entidade poderia ser uma escola, avenida, pessoa ou um governo. O reconhecimento é difícil, em parte, devido à ambiguidade da segmentação. O pipeline comum para reconhecimento de entidades nomeadas é a partir de um texto sem tratamento realizar a segmentação em frases, seguida da tokenização, tagueamento de discursos, detecção de entidades e detecção de relações. Por fim, temos como resultado uma lista de tuplas que indicam relações. A biblioteca NLTK pode ser utilizada para realizar o pipeline de reconhecimento de entidades nomeadas em conjunto com o corpus para treinamento Annotated Corpus for Named Entity Recognition que pode ser encontrado na plataforma Kaggle.
Vinicius Narciso da Silva A aula tratou do assunto "Reconhecimento de entidades nomeadas". Inicialmente foi citado um artigo relativo ao realce de sintaxe em linguagens de programação e se ele pode auxiliar iniciantes em programação. Em seguida falamos sobre extração de informação. Sistemas de extração de informação permitem transformar dados não estruturados em dados estruturados. Com isso é possível obter informações e encontrar partes relevantes de textos. Esse tipo de técnica tem como objetivo organizar informação para que seja útil às pessoas e colocar informações de forma clara que sejam úteis para inferências realizadas por algoritmos. Como um exemplo atual, podemos citar os algoritmos que identificam datas no corpo de e-mails para que sejam inseridos na agenda do destinatário. Podemos definir o texto não estruturado como o texto corrido escrito na internet. Para estrutura-lo, podemos encontrar uma palavra chave do texto e relacionar outras palavras que pertencem àquele corpus (por exemplo, podemos identificar um texto que fala sobre signos do zodíaco e relacionar os signos que aparecem no texto com este corpus). Um reconhecedor de entidades nomeadas permite identificar e classificar entidades nomeadas em um texto escrito em linguagem natural. Entidades nomeadas podem ser índices para conceitos ou novas associações entre outras entidades. Na web, podemos associar às entidades nomeadas links com maiores informações (na Wikipédia, podemos encontrar exemplos do uso dessa associação). A primeira abordagem algorítmica considera que todas as palavras que iniciam com letra maiúscula são palavras importantes. A abordagem é simples e tem suas falhas, como por exemplo, traz stopwords que iniciam frases. A segunda abordagem corrige o ruído das stopwords. Ao identificar uma entidade nomeada, precisamos classifica-la. Para isso, precisamos de classificações (tipos). Os tipos variam conforme a aplicação, porém existem alguns tipos mais comuns, que aparecem na maior parte das aplicações: Pessoas, Organizações, Lugares, Entidades Geo-Políticas, Construções e Veículos. Um reconhecedor de Entidades Nomeadas permite reconhecer nomes próprios e em seguida consegue classifica- los. A dificuldade encontra-se na ambiguidade em que essas entidades apresentam. Para isso, precisamos decidir o que é uma Entidade e quais são seus limites. Para o reconhecimento de Entidades Nomeadas, temos uma sequência de operações: 1) Obtemos o texto cru; 2) Fazemos uma segmentação de sentenças, obtendo uma lista de strings; 3) Fazemos uma tokenização do texto, obtendo uma lista de listas de string tokenizadas; 4) Fazemos um tagging das partes do discurso, obtendo uma lista de listas de tuplas taggeadas; 5) Fazemos a identificação de entidades, obtendo uma lista de árvores de sentenças em pedaços; 6) Por fim, fazemos a detecção de relações, obtendo uma lista de tuplas (as relações). A terceira abordagem testa essa sequência de operações. Para treinamento de algoritmos reconhecedores de entidades nomeadas, existem corpus que auxiliam nesse treinamento (site kaggle).
Marcela Akemi Yamashita Reconhecimento de entidades nomeadas. Sintaxe colorida auxilia aprendizado de novatos em programação? Segundo o paper "Does syntax highlighting help programming novices?" não. Extração de informação permitem: transformar dados não estruturados (incorporados em textos) em dados estruturados, encontrar partes relevantes do texto, obter informação de trechos de texto, produzir uma representação estruturada de informação relevante. Objetivos: organizar a informação que seja útil para as pessoas e colocá-las de forma clara de maneira que seja útil para inferências de algoritmos computacionais. Information retrieval: livro referência de Ricardo Baeza-Yates e Berthier Ribeiro-Neto. Papers apresentados na SIGIR 2019: Hate Speech is Not as Easy as You May Think: Closer Look at Model Valdiation (exemplo de extração de informação). Vários sistemas atuais permitem identificar regiões textuais de interesse para o usuário. Ex: identificar data para associar com agenda (frequentemente utiliza-se expressões regulares ou lista de nomes). Texto não estruturado da web para sequência estruturada. Reconhecimento de Entidades nomeadas (NER - Named Entity Recognition). Permite identificar e classificar as entidades nomeadas (EN) em um texto escrito em linguagem natural. As EN podem ser índices para conceitos, novas relações ou associações entre entidades. Na web: EN associadas a links com maiores informações. Ex: verbete de registro fóssil da wikipedia como exemplo de dados estruturados. Exemplo de implementação na linguagem python (teste1.py). Script simples para identificar palavras importantes em um texto. Tipos de entidades nomeadas mais comuns: dependerá da aplicação. Tabela exemplificando uma lista das 6 entidades nomeadas mais comuns (ex: Tipo: People, Tag: PER, Categorias: pessoas, personagens). Reconhecedor de EN: deverá permitir encontrar segmentos de texto que constituam nomes próprios e classificar o tipo da entidade. Reconhecimento é difícil em parte devido à ambiguidade da segmentação. Necessário decidir o que é uma entidade e quais seus limites. Ex: JK (Juscelino Kubitschek) é escola? avenida? pessoa? governo? Pipeline comum: reconhecimento de EN: texto não processado -> segmentação de sentenças -> tokenização -> aplicar uma "tag" a parte do texto -> detecção de entidade -> detectar relação. Exemplo em código (teste3.py). Recursos disponíveis. Corpus para treinamento de um reconhecedor de EN: datasets no kaggle. Entrega 2 do projeto postergada para 01/08. Deverá preencher formulário respondendo maior ênfase a real proposta do artigo, o que propuseram os autores, parte implementada, o que e como está sendo implementada. Listar limitações frente à ideia proposta pelos autores do artigo. Não haverá aula dia 25/08. Para aprovação na disciplina não poderá reprovar em nenhum dos 3 quesitos (Resumos por aula, prova teórica única, projeto (relatórios+apresentaçã)). Estado da arte em pesquisa: alunos de graduação longe da borda divisória. Alunos de pós-graduação a expandem.
Laura Cestavo Borges Dos Santos A aula do dia 23/7 foi sobre Reconhecimento de Entidades Nomeadas. Primeiro vimos sobre sistemas de extração. Sistemas de extração de informação permitem transformar dados não estruturados em dados estruturados, encontrar partes relevantes do texto, obter informação de trechos de texto e produzir uma representação estruturada de informação relevante. Os objetivos principais são organizar informação que seja útil para as pessoas e colocar informações de forma clara que sejam úteis para inferências realizadas por algoritmos computacionais. Como exemplo temos vários sistemas atuais que permitem identificar regiões textuais de interesse para o usuário, como nos e-mails que permitem identificar uma data para associar com a agenda. Frequentemente são usadas expressões regulares ou listas de nomes para isso. O reconhecimento de entidades nomeadas (Named Entity Recognition – NER) permite identificar e classificar as entidades nomeadas (EN) em um texto escrito em linguagem natural. Por exemplo, dado um texto identificar o que são pessoas, o que são datas, o que são localizações e o que são organizações. As EN podem ser índices para conceitos ou novas relações/associações entre outras entidades. Na web, por exemplo, as entidades nomeadas são associadas a links com maiores informações. Um exemplo comum disso é a Wikipedia, que identifica palavras chaves e te redireciona para as paginas sobre elas. Em sala vimos alguns exemplos de códigos de NER, o primeiro marcava palavras que começavam com letra maiúscula como importante e era um script com uma versão muito simples de identificação de palavras importantes de um texto. Porém esse algoritmo continha um pequeno problema, palavras de inicio de frase eram consideradas como importantes, o que não era um comportamento desejado. O segundo algoritmo corrigia isso, verificando o caractere que vinha anterior a essa letra, para saber se ela iniciava alguma frase. As ENs dependem muito da aplicação, porém as mais comuns são: People (pessoas – PER), Organization (organização – ORG), Location (localização – LOC), Geo- Political (geopolítica – GPE), Entity (entidade), Facility (instalação – FAC) e vehicles (veículos – VEH). Um reconhecedor de EM permite encontrar segmentos de texto que constituam nomes próprios e, em seguida, classificar seu tipo da entidade. O reconhecimento é difícil devido a ambiguidade da segmentação. É preciso decidir o que é uma entidade e o que não é. Um exemplo de ambiguidade é a palavra JK, que pode se referir a uma escola, avenida, pessoa ou governo. O pipeline comum de um reconhecimento de EN consiste em pegar o texto produto, segmentar as sentenças, tokenizar, colocar tags em parte do discurso/sentenças, detectar as entidades e então detectar as relações. O terceiro código visto, mostra a pipeline do NER.
Eracton Ferreira Ramalho O tema da aula de hoje é reconhecimento de entidades nomeadas. Para iniciar a aula falamos sobre a teoria de que coloração ajuda estudantes a aprenderem programação de forma mais fácil. Um estudo mostra que isso não gera grandes mudanças. Isso foi apenas uma pequena introdução para a aula de hoje. Esta aula usaremos o ultimo capitulo do livro que utilizamos até agora. Para iniciar o tema precisamos ver um pouco sobre extração de informação. Os sistemas de extração de informação permitem: transformar os dados não estruturados (incorporados em textos) em dados estruturados, encontrar partes relevantes no texto, obter informação de trechos de texto e produzir uma representação estruturada de informação relevante. E quais os objetivos? Organizar informações que sejam uteis para as pessoas e colocar as informações de forma clara que sejam uteis para inferências realizadas por algoritmos computacionais. Vários sistemas atuais permitem identificar regiões textuais de interesse para o usuário, vamos falar de exemplos: e-mail, quando identifica uma data para associas com a agenda. Geralmente são usadas expressões regulares ou listas de nomes. Reconhecimento de entidades nomeadas (NER) é um reconhecedor que permite identificar e classificar as entidades nomeadas (EN) em um texto escrito em linguagem natural. As ENs podem ser índices para conceitos e novas relações ou associações entre outras entidades. Na web as entidades nomeadas são associadas a links com maiores informações. Após todos esses conceitos, fomos analisar a parte prática que o professor sempre nos disponibiliza. O primeiro código mostrava as palavras mais importantes com algumas que não eram tanto e foram de intrusas. Porém, no código 2 elas já foram eliminadas com as correções adequadas. Quais são as ENs mais comuns? Pessoas, organizações, localizações, geopolítica, entidades facilitadores e veículos. Um reconhecedor de EN permite encontrar segmentos de texto que constituam nomes próprios e, em seguida, classificar o seu tipo da entidade. O reconhecimento é difícil, em parte, devido à ambiguidade da segmentação. Precisa-se definir o que é uma entidade e o que não é, e quais são os limites. Por exemplo, JK é uma avenida, uma escola, uma pessoa ou um governo? Temos que seguir um pequeno fluxo: passar pela segmentação da sentença, depois a tokenização, marcar parte do discurso, detectar uma entidade e detectar uma relação. Após isso foi mostrado um código para testar a parte prática e depois foi falado sobre a parte 2 do projeto, onde será atrasado a entrega em uma semana e deverá ser enviado de acordo com umas perguntas que devem ser respondidas num forms do Google, assim como foi feito na parte 1.
Tamiris Gabriele da Silva Lira A décima terceira aula de Processamento de Linguagem Natural teve como tema o Reconhecimento de Entidades Nomeadas. O professor iniciou a aula com uma discussão sobre dois trechos de códigos, um com palavras realçadas por cor e o outro em escala de cinza. A questão proposta era se o realce de cor seria melhor e, após um breve debate, o professor apresentou um estudo que mostra que esse realce não aumenta a habilidade de iniciantes em programação de entender o código. Após, começamos a estudar extração de informação. É necessário que existam sistemas de extração de informação para que esta possa ser organizada de forma que ela seja útil para as pessoas e para inferências feitas por algoritmos. Esses sistemas possibilitam a transformação de dados não estruturados em estruturados, além da obtenção de informação de partes de texto. Foram apresentados alguns exemplos de sistemas de extração de informação. O primeiro, utilizado em emails, mostra a identificação de uma data para possivelmente associá-la com a agenda; o segundo transforma um texto desestruturado em sentenças estruturadas. O Reconhecimento de Entidades Nomeadas (ou NER - Named Entity Recognition) busca identificar e classificar entidades nomeadas de textos escritos em linguagem natural. Assim, ao encontrar uma entidade nomeada (EN) em um texto, ela pode ser classificada em diferentes categorias - pessoa, data, locais, etc.. Dessa forma, as EN podem indicar relações entre outras entidades: na web, por exemplo, podem ser transformadas em um hiperlink, que leva a páginas com maiores informações sobre a EN identificada. Isso é muito comum na Wikipédia. O primeiro exemplo de programa, teste1.py, classifica as EN como "IMPORTANTE" ou não, de modo que uma EN é importante se a primeira letra da palavra é uma letra maiúscula. Já o segundo exemplo, teste2.py, melhora o teste1.py, de forma que uma palavra só será classificada como "IMPORTANTE" se sua primeira letra for maiúscula E ela não ocorrer logo após um sinal de pontuação. É possível classificar EN em diversos tipos, mas os mais comuns são Pessoa, Organização, Lugar, Entidade Geopolítica, Instalação (ex.: prédio) e Veículos. É difícil reconhecer uma EN devido à ambiguidade que alguns termos carregam. A entidade "JK", por exemplo, poderia ser classificada como pessoa, lugar, etc. O programa teste3.py mostra o uso do nltk para a classificação de palavras de uma sentença em substantivos, verbos, pronomes etc. Ao final da aula, o professor discutiu a entrega 2 do projeto, que será novamente feita através de um formulário.
Matheus de Araujo Vargas Na aula de Processamento de Linguagem Natural do dia 22 de Julho do professor Jesus P. Mena o tema abordado foi "Reconhecimento de Entidades Nomeadas", onde foram apresentados os conceitos de extração de informação, entidades nomeadas e seus tipos, além de aplicações práticas em Python. Entidades Nomeadas compreendem-se como termos que apresentam um ou mais designadores rígidos, num determinado texto. Alguns dos tipos mais comuns de entidades são substantivos próprios, tais como nomes de pessoas, organizações e entidades locais; temporais como datas, tempo, dia, ano e mês; entidades numéricas, tais como medições, percentagens e valores monetários. A Extração da Informação é uma importante tarefa na mineração de texto e tem sido amplamente estudada em várias áreas de pesquisa, incluindo o processamento da linguagem natural, recuperação de informação e mineração de dados na Web. O Reconhecimento de Entidades Nomeadas é uma tarefa primordial na área de Extração da Informação, juntamente com a extração de relação entre Entidades Nomeadas. Os sistemas de extração de informação permitem a transformação dos dados não estruturados (incorporados em textos) em dados estruturados. Também é possível encontrar partes relevantes do texto, obter informação de trechos de texto e produzir uma representação estruturada de informação relevante. O principal objetivo de sistemas de extração de informações é organizar a informação que seja útil para as pessoas, colocando-as de forma clara e estruturada. Vários sistemas atuais permitem identificar regiões textuais de interese para o usuário. Um caso de uso seria a utilização em e-mails, para identificar uma data e associar essa data com a agenda. Para realizar essa extração, frequentemente são utilizadas expressões regulares ou lista de nomes. Um reconhecedor de Entidades Nomeadas permite identifica-las e classifica-las em um texto escrito em linguagem natural. As EN podem ser índices para conceitos ou novas relações / associações entre outras entidades. Existem diversos tipos de ENs, porém, o uso ou não uso de cada uma vai depender muito da aplicação. Os tipos de EN mais comuns são: pessoas, organizações, locais, veículos e construções. Os reconhecedores de EN permitem encontrar segementos de texto que constituam nomes próprios e, em seguida, classificar seu tipo da entidade. O reconhecimento é difícil, em parte, devido à ambiguidade da segmentação. Precisamos decidir o que é uma entidade e o que não é, e quais são os limites. Por exemolo, em um texto, a palavra JK (Juscelino Kubitschek) poderia ser classificada de diferentes formas: escola, avenida, pessoa ou governo?
Joao Victor Fontinelle Consonni A décima terceira aula de PLN começou com um debate a respeito da efetividade do syntax highlighting no aprendizado de programação. A discussão serviu para introduzir o tema de extração de informação, que consiste em transformar os dados não estruturados, que estão incorporados no texto, em dados estruturados, de forma a produzir uma representação organizada da informação ali presente. Para este fim, é bastante frequente o uso de expressões regulares capazes de identificar regiões textuais de interesse para o usuário. O Reconhecimento de Entidades Nomeadas, ou Named Entity Recognition (NER), permite identificar e classificar as entidades nomeadas (EN) em um texto escrito em linguagem natural. Isso é feito em duas etapas, uma de identificação e outra de classificação. Vimos um exemplo simples em python que identificava palavras importantes utilizando como critério palavras iniciadas em maiúsculas. Isso fez com que algumas palavras importantes para o contexto do texto fossem ignoradas, enquanto outras que não deveriam ser consideradas importantes, o foram. Uma versão melhorada do programa desconsiderou artigos e palavras em início de frases. Uma entidade nomeada é, tipicamente, classificada em um dos seguintes 6 tipos: pessoas, organizações, locais, entidades geo-políticas, construções e veículos; contudo, a classificação de tipos depende muito da aplicação. Um reconhecedor permite encontrar segmentos de texto que constituam nomes próprios e, em seguida, classificar o tipo da entidade. Contudo, este reconhecimento pode não ser tão simples, pois uma entidade pode ser ambígua e referir-se à diferentes tipos, a depender do contexto. Por fim foi apresentado um pipeline comum para o reconhecimento de EN, que consiste em segmentar o texto puro para obter uma lista de strings. Após a tokenização, é atribuída uma tag às sentenças, formando uma lista de listas de tuplas, que é direcionada ao detector de entidades, para então formar relações. Para auxiliar na tarefa de treinamento de um reconhecedor de entidades nomeadas, foi criado um corpus de treinamento, disponível no kaggle. Ao fim da aula foi alocado tempo para esclarecimento de dúvidas do projeto da disciplina. A segunda entrega, assim como a primeira, será feita por meio do preenchimento de formulário e deve ser entregue até o dia 01/08. Essa entrega deve dar ênfase à proposta dos autores do artigo escolhido, assim como a parte que está sendo implementada. Além disso, deve-se listar as limitações frente à ideia proposta pelos autores do artigo.
Anderson Chaves Faria A aula sobre reconhecimento de entidades nomeadas começa abrindo com o tema de extração da informação. A parte que talvez seja a mais complexa quando tratamos de extração de informação é justamente as etapas de filtrar a informação não relevante e tratar sua entrada para conseguir dados estruturados que vão te ajudar tanto com insights quanto para realizar inferências mais precisas utilizando menos etapas em algoritmos computacionais. Um grande exemplo disso é você treinar um classificador de sentimentos usando textos inteiros (dado cru) e usando um par entidade - adjetivo. É bem provável que seu classificador consiga aprender muito mais usando dados ordenados do que dados ruidosos. Portanto, conseguir um sistema de extração de informação nos permite estruturar, encontrar partes relevantes, obter informações de trechos do texto e produzir uma representação estruturada que seja relevante para um usuário ou algoritmo trabalhar em cima. Frequentemente são usadas expressões regulares ou listas de nomes para fazer parte dessas estruturação. Quando falamos de reconhecimento de entidades nomeadas (NER), estamos falando de um sistema capaz de identificar e classificar as entidades nomeadas em um texto escrito. Essas entidades podem ser índices para associação com outras entidades ou conceitos (assim como na web que temos relações com links). O grande desafio no caso não é em identificar as identidades, uma vez que alguns regex simples já podem obter resultados satisfatórios, mas sim fazer o reconhecimento da classificação da entidade encontrada, principalmente por conta da segmentação. É preciso ser capaz de definir limites entre o que uma entidade é ou não é, principalmente com palavras que podem ter múltiplos sentidos. O pipeline padrão que usamos para um modelo classificador começa com segmentação do texto cru em sentenças e a tokenização dessas sentenças.Em seguida é feito uma classificação e então detectadas as entidades participantes de cada sentença. Uma vez com todas as entidades definidas, são traçadas as relações que as entidades tem com outras palavras da sentença, de acordo com o que for relevante para sua interpretação. Para que a interpretação seja boa, é preciso ter um aprendizado muito bom, o que só é possível quando temos uma grande gama de textos diferentes para treinar nosso modelo. Garantindo um treinamento com múltiplas frases que contemplem os diversos sentidos que uma mesma palavra pode adotar, nós restringimos a possibilidade de uma entidade não ser aprendida para aquele determinado limite.
Bruno Menezes Gottardo Ladeia Esta última aula falou sobre reconhecimento de entidades nomeadas. Na primeira parte da aula foram apresentados sistemas extração de informação. Estes sistemas permitem transformar dados não estruturados em estruturados, encontrar partes relevantes do texto, obter informação de trechos de texto e produzir uma representação estruturada de informação relevante. De uma forma geral: organizar informações de forma que sejam úteis para as pessoas e colocar informações de forma clara, para que sejam úteis para inferencias realizadas por algoritmos computacionais. Vários sistemas hoje em dia permitem idenfiticar regiões textuais de interesse para usuário, a exemplo temos o email que é capaz de identificar uma data para associar com uma agenda. Nestes casos são frequentemente expressões regulares, ou lista de nomes. No caso da transformação de textos não estruturados, poderíamos estruturá-los em textos que sejam classificados em diferentes estruturas, como: signos do zodíaco, causas mais comuns de morte nos Estados Unidos e maiores roedores do mundo, por exemplo. A partir de sistemas de extração, podemos montar um reconhecimento de entidades nomeadas, ou NER - Named Entity Recognition. Um reconhecedor permite classificar e identificar as EN em um texto escrito em linguagem natural. Estas EN podem ser índicas para conceitos, ou novas relações / associações entre outras entidades. Fazendo análise na web, as entidades nomeadas são associadas links com maiores informações. Buscando demonstração prática, foi exibida a script teste1.py. É uma script de identificação de palavras importantes de um texto, porém algumas palavras, que não eram importantes, foram classificadas como tais. Modificou o programa para o teste2.py, aplicado às correções. Os tipos das entidades nomeadas dependerá muito da aplicação, mas geralmente as mais comuns são: People - per, Organization - org, Location - loc, geo-political - gpe, Entity Facility - fac e Vehicles - veh. O reconhecedor de EN permite encontrar segmentos de texto que constituam nomes próprios e, em seguida, classificar seu tipo de entidade. Este reconhecimento é difícil, em parte, devido a ambiguidade de segmentação. Por isso faz-se necessário decidir o que é, e o que não é, uma entidade e quais são os seus limites. O pipeline comum de uma NER é: raw text (string) -> sentence segmentation (sentences, list of strings) -> tokenization (tokenized sentences, list of lists of strings) -> part of speech tagging (pos-tagged sentences, list of lists of tuples) -> entity detection (chunked sentences, list of trees) -> relation detection -> relations (list of tuples
Yago Sorrilha Reconhecimento de Entidades Nomeadas Extração de Informação Os sistemas de extração de informação permitem: Transformar os dados não estruturados (incorporados em textos) em dados estruturados Encontrar partes relevantes do texto Obter informação de trechos de texto Produzir uma representação estruturada da informação relevante Objetivos: Organizar informação que seja útil para as pessoas Colocar informações de forma clara que sejam úteis para inferencias realizadas por algoritmos computacionais Information Retrieval: livro modern information retrieval Congresso SIGIR 2019 para discussão deste tema Exemplos: vários sistemas atuais permitem identificar regiões textuais de interesse para o usuário E-mail: identificar uma data para associar com a agenda. Frequentemente são utilizadas expressões regulares ou lista de nomes. Reconhecimento de Entidades Nomeadas (NER - Named Entity Recognition) Um reconhecedor permite identificar e classificar as EN em um texto escrito em linguagem natural, primeiro identificando e depois classificando em alguma categoria. Por exemplo, em um texto sobre a UFABC o reconhecedor encontrou algumas palavras e as classificou como uma pessoa, um local, uma organização ou um conceito. Usos: As EN podem ser índices para: Conceitos; Novas relações/Associações entre outras entidades Na web: às entidades nomeadas são associados links com maiores informações. Por exemplo: dados estruturados na wikipedia Foi demonstrado algumas abordagens em python, no primeiro caso, um script muito simples de identificação de palavras importantes do texto, considerando apenas palavras que começassem com letra maiúscula, neste caso, mesmo palavras que não eram importantes, mas iniciavam uma frase, eram reconhecidas como importantes. Tipos de Entidades Nomeadas Organização, Tempo, Dinheiro, Pessoa, Local Depende da aplicação, mas temos uma tabela com uma lista de 6 entidades nomeadas mais comuns: pessoas, organização, local, geopolítico, entidade, facilidade, veículos Um reconhecedor de EN permite encontrar segmentos de texto que constituam nomes próprios e, em seguida, classificar seu tipo de entidade. O reconhecimento é difícil, em parte, devido à ambiguidade da segmentação. Precisamos decidir o que é uma entidade e o que não é, e quais são os limites. Por exemplo: JK (Juscelino Kubitschek) poderia ser uma escola, uma avenida, uma pessoa, o governo Outro exemplo de múltiplas categorias para segmentos de texto seria Washington, podendo ser uma pessoa, uma organização, o local, um veículo, etc. Pipeline comum: segmentação de sentença, tokenização, tagueamento de partes do discurso, detecção de entidades, detecção de relação, relações Recursos disponíveis: corpus para treinamento de um reconhecedor de EN
Thiago Henrique Gomes Panini Resumo 13 – PLN A décima terceira aula de Processamento de Linguagem Natural teve início com um comunicado sobre trabalhar com a biblioteca nltk para algumas análises um pouco mais aprofundadas de comparadas com o que vimos até o momento. Um dos grandes desafios dentro de Processamento de Linguagem Natural e das áreas relacionadas a Computação como um todo é a de identificação do tipo linguístico de uma determinada palavra. Por exemplo, é possível identificar se uma palavra é um verbo? Um sujeito? Respondendo essas perguntas adentramos ao assunto da aula: entidades nomeadas. Um reconhecedor permite identificar e classificar um texto escrito em linguagem natural. Tal tarefa pode se realizada através de buscas em dicionários. Assim é possível entender, por exemplo, que uma data está relacionada a uma determinada pessoa em um determinado local. Em um trecho de exemplo utilizando uma breve descrição da Universidade Federal do ABC, o algoritmo pôde identificar palavras individuais em algumas categorias como, por exemplo, eventos, conceitos, lugares, organizações. Em outras palavras, o contexto foi levado em consideração. Entre as principais aplicações práticas, as entidades nomeadas podem ser utilizadas para reconhecer e entender relações e associações entre outras atividades. Como exemplo, foi mostrada a estruturação de dados utilizada pelo Wikipedia, onde o conceito de entidades nomeadas é aplicado a composição de conteúdo das páginas para identificação de páginas relacionadas. Um outro exemplo de código foi desenvolvido e mostrado pelo professor para aplicar, a um trecho textual, uma espécie de classificação entre palavras “Importantes” e “Não Importantes” baseada em uma regra que verifica se a primeira letra daquela palavra é maiúscula. Apesar de simples e aparentemente efetivo, alguns casos incoerentes surgem (principalmente levados por palavras em início de frase). Outras regras podem ser adicionadas ao código par a identificar se a palavra em questão encontra-se após um sinal de pontuação, evitando assim a identificação de palavras comuns em início de frase. Em mais um exemplo, outro trecho foi utilizado para identificação de Localização, Moeda, Organização, Período e Pessoa. Dessa forma, algumas palavras desse trecho foram sinalizadas de acordo com seu significado dentro das categorias propostas. Para a realização de tudo isso, é necessário um dicionário. Alguns casos fora da curva são inevitáveis: JK se trata de que? Escola? Avenida? Pessoa? Governo? Mesmo os reconhecedores modernos e mais sofisticados enfrentam esse tipo de problema.
Denildo Veloso Braga Aula 13: Reconhecimento de entidades nomeadas. Questão: coloração/highlighting usada por IDEs ajudam para aprender programação? Artigos mostram que não há diferença em aprender uma linguagem com e sem coloração. Extração de informação: transforma dados não estruturados em dados estruturados, encontrar partes importantes no texto, obter informação de trechos de texto e produzir uma representação estruturada de informação relevante. Tem como objetivos: organizar informação que seja útil para as pessoas e colocar informações de forma clara que sejam úteis para inferências realizadas por algoritmos computacionais. Exemplo: sistemas atuais permitem identificar trechos específicos do texto de interesse do usuário, como identificar uma data para associar com a agenda. Frequentemente são usados expressões regulares ou lista de nomes. Estruturas de dados mais eficientes devem ser usadas, como árvores ou tabelas hash. Reconhecimento de entidades nomeadas (NER): um reconhecedor permite identificar e classificar/rotular as partes mais importantes de um texto. As entidades nomeadas podem ser índices para conceitos e novas relações ou associações entre outras entidades. Na web, as entidades nomeadas são associadas à links com detalhes da informação. Exemplo: wikipédia associa um link com entidades nomeadas, o link redireciona para a página daquela entidade. A busca não é somente por palavra e sim por conjunto de palavras, por isso o processamento é caro. O programa teste1.py rotula as palavras importantes. Nesse programa, palavras importantes são aquelas que começam com letras maiúsculas, mas marca como importante algumas palavras que não deveria. O programa teste2.py é uma versão melhorada do teste1.py, que desconsidera palavras que estão no início da frase, verificando se a palavra anterior é uma pontuação. Os tipos de entidades nomeadas mais comuns são: organização, tempo, moeda, localização e pessoa. Os rotuladores modernos criam uma tupla com o rótulo e a palavra. Um reconhecedor de entidades nomeadas permite encontrar segmentos de texto que constituam entidades nomeadas e, em seguida, classificar seu tipo de entidade. O reconhecimento é difícil, em parte, devido à ambiguidade da segmentação. Precisamos decidir o que é uma entidade e o que não é, e quais são os limites, pois um segmento pode pertencer à múltiplas categorias. Existem vários corpus para treinamento de um reconhecedor de entidades nomeadas. Sobre a entrega 2: enfatizar sobre o que os autores propuseram e o que e como foi implementado.
Lucas Ferraz Nicolau A aula iniciou-se com uma discussão sobre o uso de destacamento de sintaxe em linhas de código, isto é, a atribuição de cores, normalmente feitas por uma IDE, às classes de palavras no código. Pesquisas indicam que este recurso não ajuda um novato em programação na aprendizagem de uma nova linguagem, podendo até ser prejudicial a seu ensino. O destacamento de sintaxe é um exemplo da área de reconhecimento de entidades nomeadas que seria o tema principal da aula. Os sistemas de extração de informação permitem, de um modo geral, conceder estrutura a dados não estruturados. Assim, possibilitam a obtenção de informação relevante de um texto e a identificação de regiões textuais, frequentemente utilizando expressões regulares ou listas de nomes. A principal referência na bibliografia para os fundamentos da recuperação de informação é o Modern Information Retrieval de Ricardo Baeza-Yates e Berthier Ribeiro-Neto. Tais ferramentas podem ser aplicadas para diversas tarefas em diferentes áreas como identificação de datas para associação com agendas em sistemas de e-mail e estruturação de um conjunto páginas web. Um reconhecedor de entidades nomeadas permite a classificação de uma entidade em um texto escrito em linguagem natural. Essas entidades nomeadas podem ser índices para conceitos e novas relações entre outras entidades, por exemplo, na associação de links em páginas web que se remetem ao título de novas páginas, como na Wikipedia. Os tipos de entidades nomeadas que se deseja rotular variam conforme as diferentes aplicações, sendo os tipos mais comuns: pessoa, organização, período de tempo, moeda, localização, região geopolítica, edifício e veículo. As dificuldades que devem ser superadas por um reconhecedor de entidades são de encontrar segmentos de texto que constituam um nome próprio e classificá-lo considerando o contexto que, em muitos casos, pode ser tarefa sujeita a ambiguidade com diversas rotulações válidas. Um pipeline comum para o reconhecimento de entidades nomeadas segue segmentação de texto, tokenização, atribuição de rótulos a trechos da fala, detecção de entidades e detecção de relações. Dentre as implementações em python vistas em aula tivemos um identificador de conceitos “importantes” que se baseava em eleger palavras cuja inicial era maiúscula e uma variante que desconsiderava palavras antecedidas por pontuação. Em seguida, foi apresentado um classificador de palavras que utilizava as bibliotecas do nltk.
Amanda Cruz Francesconi RECONHECIMENTO DE ENTIDADES NOMEADAS. O sistemade extração de informação permite transformar dados não estruturados em estruturados, encontrar partes relevantes do texto, obter informação de trechos do texto, entre outras. O Objetivo é organizar a informação para que seja útil para o consumidor final, identificando regiões textuais de interesse para o usuário, geralmente utilizando uma busca. Como por exemplo identificar uma data para anexar na agenda. É importante se utilizar uma estrutura de dados eficiente como por exemplo uma árvore. Reconhecimento de entidades nomeadas: um reconhecedor que atibui um rótulo, classificar a determinada palavra, como em pessoa, organização, lugares, eventos, conceitos, etc. A busca não se restringe a uma única palavra e sim a uma entidade de palavras como por exemplo "Universidade Federal do ABC" deve ser analisada como unidade e não cada palavra individualmente. As entidades nomeadas podem ser utilizadas como índices para conceitos, novas relações. Um exemplo são os dados estruturados da wikikpedia onde ao se escrever um texto, existem link nas palavras para as páginas com a respectiva explicação desse termo. Um exemplo básico de como implementar um algoritmo desse para classificação de palavras importantes presentes no texto é atribuir o IMPORTANTE às palavras que começam com letra maiúscula, porém com somente essa tratativa o programa identificará também como importante as palavras que estiverem no início da frase por iniciarem com letra maiúscula. A solução, também simples para esse problema é descartar da classificação de importante aquelas que tiverem um sinal de pontuação a antecedendo. Tipos de entidades nomeadas: ORG (organização), TIME (período de tempo), MONEY (moeda), PER (pessoa), LOC (localização), FAC (prédios, aeroportos, pontes...), VEH (veículos). As vezes essa clasificação não é tão simples, pode ocorrer ambiguidade, um exemplo é a entidade "JK", pode se referir a pessoa, a avenida, ao governo, assim como "Washington", "Louis Vuitton", etc. A pipeline para o reconhecimento de entidades nomeadas tem 5 passos: a segmentação da sentença, a tokenização, o tagueamento de cada parte do texto, o reconhecimento das entidades nomeadas e por fim a detecção de relação entre os termos. Algumas das funções utilizadas para essa técnica são: WORD_TOKENIZE: divide uma frase em palavras utilizando expressões regulares POS_TAG: é o dicionário por trás que o match da palavra com o rótulo que a define.
Pedro Ricardo Bronze O reconhecimento de Entidades Nomeadas (EN) é uma das subáreas de estudo de PLN. Um reconhecedor permite identificar e classificar as EN em um texto para auxiliar na extração de informações que podem ser do interesse do usuário. Para tal certas regiões textuais podem se mostrar mais relevantes para o usuário. A ideia geral é após extrair dados não estruturados conseguir estruturá-los reconhecendo padrões como nomes, datas, verbos etc e categorizar de acordo com estas divisões. Um exemplo comum é o wikipedia no qual já apresenta um trabalho de identificação e rotulação automatizado para conectar com algumas de suas páginas que se referem a uma determinada entidade. Algumas ferramentas disponíveis na internet são conhecidos como rotuladores, que podem detectar de acordo com diferentes instâncias (nome próprio, país, organização, eventos, conceitos etc). Lembrando que a busca não se trata só de palavras mas sim de conjuntos ('Universidade Federal do ABC'), a rotulação portanto se baseia no contexto também. Foi apresentado um primeiro script implementado em python na qual uma regex é utilizada para detectar palavras e identifica uma palavra como importante caso sua primeira letra for maiúscula. Podemos considerar similarmente ao fool-stemmer de algumas semanas atrás, este agora como um 'fool-labeler' ("rotulador tolo"). No segundo exemplo o rotulador é melhorado uma vez que desconsidera a primeira palavra que começa sempre com maiúscula e considera apenas as posteriores a ela na string 'words'. As seis EN mais utilizadas atualmente são : pessoa, organização, localização, entidade geopolítico, instalação(ponte, torre, aeroporto) e veículo. Em alguns pode haver ambiguidade de nomes de pessoas ou cidades ou entidades, definir quais os limites de segmentação se faz necessário. Exemplo pode ser o nome de uma pessoa famosa que pode ser dado a uma rua, instalações, organizações ou até uma pessoa que não a pessoa famosa em si. Uma forma de mitigar tal questão é criar um rotulador que oferece diversos possíveis rótulos em casos ambíguos. Existem pipelines padrões para que reduzamos o efeito da ambiguidade. Um exemplo utilizando a biblioteca NLTK para realizar 'tagging' de palavras em uma sentença. POS(Part-of-Speech) tagging é utilizado amplamente e é implementado na NLTK em NLP para classificar baseado em categorias já existentes e auxiliar na desambiguação.
Giselle Silva de Santana Nesta décima terceira aula, do dia 22/07/2019, foi abordado o tema “Reconhecimento de entidades nomeadas”, com a apresentação de alguns scripts em Python como demonstração prática. Iniciou-se a aula falando-se sobre sistemas de extração de informação, que são sistemas que permitem transformar dados não estruturados (incorporados em textos) em dados estruturados, encontrar partes relevantes do texto, obter informação de trechos de textos, além de produzir uma representação estruturada de informação relevante. Com isso, é possível organizar informação que seja útil além de colocar as informações de forma clara que sejam úteis para inferências realizadas por algoritmos computacionais. Muitos sistemas atuais permitem identificar regiões do texto que sejam de interesse para o usuário e para isso, normalmente, utilizam-se expressões regulares ou listas de nomes para realizar a identificação de tais regiões. Um reconhecedor de entidades nomeadas permite identificar e classificar as entidades nomeadas em um texto escrito em linguagem natural. As entidades nomeadas podem ser índices para conceitos ou novas relações / associações entre outras entidades, como na web, onde as entidades nomeadas são associadas a links com maiores informações. As entidades nomeadas dependem muito do tipo de aplicação, mas as mais comuns são: People (PER), Organization (ORG), Location (LOC), Geo-Political (GPE), Entity Facility (FAC), Vehicles (VEH). Um reconhecedor de entidades nomeadas permite encontrar segmentos de texto que constituam nomes próprios e, em seguida, classificar seu tipo de entidade. Realizar o reconhecimento é difícil por conta da ambiguidade da segmentação. Precisa-se decidir o que é uma entidade e o que não é, além de quais são os limites. Por exemplo, JK (Juscelino Kubitschek), pode estar se referindo a um shopping center, a uma escola, avenida, pessoa ou governo. Uma alternativa para tal problema de ambiguidade é o uso de categorias múltiplas para segmentos de texto, por exemplo, Washington pode ter como possíveis categorias: Person, Location, Political Entity, Organization ou Vehicle. O pipeline comum para reconhecimento de entidades nomeadas é: raw text ? segmentação de sentenças ? tokenization ? part of speech tagging ? entity detection ? relation detection ? relations. Por fim, nos foi indicado um corpus para treinamento de um reconhecedor de entidades nomeadas disponível no site kaggle .
Renan Baisso Dando continuidade aos estudos de Processamento de Linguagem Natural (PLN), será abordado o último assunto do livro "Speech and language processing: An introduction to natural language processing, computational linguistics, and speech recognition. Pearson/Prentice Hall" em que é abordado o tema "Reconhecimento de Entidades Nomeadas (EN)" que consiste na detecção e classificação de entidades nomeadas de um texto, como reconhecimento de verbos, pronomes e assuntos. Como exemplo inicial, podemos citar uma funcionalidade presente no dia-a-dia da maioria dos programadores, que é o highlight help das IDEs e editores de textos mais elaborados, os quais destacam palavras reservadas de uma determinada linguagem de programação. Mas para alcançar a técnica de EN, é necessário que, primeiramente, haja a extração da informação necessária de um texto. Para isso, são utilizados sistemas que já englobam a transformação de dados não estruturados em estruturados, a descoberta de informação relevante e por fim a estruturação de de representação. Tudo isso para preparar um dataset organizado e que seja útil para análise. Alguns destes sistemas permitem a detecção de regiões textuais, em que o mecanismo utiliza reges ou lista de nomes prévio, como num client de e-mails que verifica nomes ou datas importantes em um texto de e-mail. Sendo assim, com uma ferramenta capaz de realizar a detecção, pode-se implementar o sistema Reconhecimento de Entidades Nomeadas, o qual consiste detectar e classificar EN em um texto de linguagem natural. Sendo que ao aplicar um sistema desse tipo, é possível produzir índices para consolidar conceitos de forma automática e também para criar novas relações entre outras entidades, como por exemplo, a associação de links com maiores de um termo textual como acontece no Wikipedia. Logo um reconhecedor de EN permite identificar nomes próprios e classificar o tipo de entidade que representa, e.g, pessoa, instituição ou local. Mas para tanto, é necessário, antes de tudo, decidir quais os limites para as entidades, devido a ambiguidade de segmentação, exemplo, JK pode ser uma escola, um shopping ou pessoa. Desta forma, tem-se que um pipeline relativamente comum para Reconhecimento de Entidades Nomeadas é: segmentação de sentenças, tokenização, classificação de discurso, detecção de entidades e associações.
Carlos Eduardo Ramos Pela definição, sistemas de extração de informação realizam a descoberta de conhecimento a partir de um conjunto de dados, sem que o usuário não precise ele mesmo analisar os dados para obter a informação. Sistemas de extração de informação permitem transformar os dados não estruturados (dentro dos textos) em dados estruturados e Encontrar partes relevantes do texto sem precisar analisá-lo. Como exemplo de sistema de extração de informação, temos a associação de uma data em um e-mail recebido com um possível evento futuro. Provedores de e-mail como o Google identificam essas datas no corpo de um e-mail recebido e sugerem a adição de um novo evento na agenda do usuário naquela data. Outra aplicação é o reconhecimento de entidades nomeadas, que trata do problema de identificar e classificar nomes próprios em textos, incluindo localizações, tais como Brasil e Rio de Janeiro; pessoas, tais como Dilma e Miriam; e organizações, tais como Ministério da Educação e UFABC. O reconhecimento consiste em: Identificar e classificar as entidades nos textos. Na web as entidades nomeadas são associadas a Links com maiores informações, ou seja, entidades que podem ser ligadas a outras páginas, com mais informações. Exemplo: textos da Wikipédia, onde algumas palavras possuem links para outras páginas do site que possuem informações sobre tais palavras. Em um algoritmo, a primeira abordagem foi considerar como importante, potencial entidade nomeada, palavras com a primeira letra maiúscula. As entidades nomeadas (EN) podem ser do tipo: Pessoa, Local, Organização, Evento, Programa, Cargo, Veículo, etc. Uma limitação de um reconhecedor de EN é a ambiguidade da segmentação, pois diferentes EN’s podem ter o mesmo nome. O fluxo do reconhecedor de EN consiste em: obtenção da string do texto alvo; segmentação do texto; tokenização do texto; etiquetagem do texto com tags de _Part of speech_ (POS Tags); detecção das entidades; detecção da relação da entidade. A saída deste pipeline é uma lista de tuplas (entidade, relação). A etiquetagem do texto com tags de Part of speech (POS Tags) é de extrema importância, ela permite que informações irrelevantes para o escopo não sejam consideradas, como verbos por exemplo
Marcelo de Souza Pena Aula 13 de PLN sobre reconhecimento de entidades nomeadas. Artigo mostrando que cores no código não auxiliam iniciantes a programar (apesar de me ajudarem a entender o código mais rápido). Sistemas de extração de informação permitem transformar dados não estruturados em dados estruturados e encontrar informação relevante e tem como objetivos organizar informação de forma que seja útil às pessoas e sejam claras para algoritmos computacionais realizarem inferências. Livro sobre recuperação de informação disponível na internet e artigos do congresso atual na França. Alguns sistemas permitem identificar regiões textuais que interessem ao usuário usando expressões regulares e classificá-las em diferentes categorias, como pessoa, data, local, organização, etc. Esse reconhecedor é chamado NER - reconhecimento de entidades nomeadas. Rotulador em inglês funciona até bem, em português meio que não tem. As entidades nomeadas podem ser índices para conceitos e novas relações e associações entre outras entidades e também podem ser usados para melhorar a Wikipedia fazendo com que ENs sejam associadas a links com maiores informações sobre elas. Exemplo de código, abre um arquivo, vê cada palavra e retorna que ela é importante se começar com letra maiúscula. Exemplo dois retira palavras que vem depois de sinais de pontuação, assim inícios de frase não vão ser marcados como importantes. As entidades nomeadas escolhidas dependem da aplicação, mas as mais comuns são pessoa, organização, local, entidade geo-política (país, estado, província), instalação (ponte, edifício, aeroporto) e veículo. Classificar em alguns casos é difícil, como JK, que pode ser o político, uma avenida, escola, etc. Dicionários são importantes. Os passos comuns no reconhecimento de EN são a segmentação do texto em uma lista de sentenças, listar tokens das sentenças, listar tuplas, listar árvores com pedaços de sentenças e detectar relações, resultando em uma lista de tuplas, Outro exemplo de algoritmo, esse tokeniza e identifica pessoas ou organizações. No Kaggle existem corpus desse e de outros temas. Entrega 2 do projeto para dia 01/08, dar foco em alguns pontos e listar as limitações da nossa aplicação frente à proposta do artigo. Pesquisadores e pós-graduandos estão no front, no estado da arte.
Ramon Neres Teixeira Jardim A aula de hoje foi sobre entidades nomeadas. No início da aula, foi apresentado um artigo que levanta a seguinte questão: “destacar a sintaxe ajuda programadores novatos?”, a conclusão do artigo foi que “os dados coletados não evidenciam que realçar a sintaxe ajude os novatos”. Em seguida foi falado sobre sistemas de extração de informação, que permitem dados “crus”, ou seja, não estruturados em dados estruturados, obter trechos importantes, facilitando a construção de uma representação estruturada para facilitar o entendimento do texto e organizar as informações de forma mais clara para pessoas e outros algoritmos. Existem exemplos do uso destas técnicas presentes no dia a dia, como os aplicativos de mensagens ou e-mail, que reconhecem datas nas mensagens, e oferecem opções para verificar tal data na agenda ou associá-la à um evento. Outro exemplo aparece nas pesquisas no Google, que exibem um texto estruturado baseado em um texto não estruturado recebido como resultado da pesquisa. Para aplicar tais conceitos é necessário implementar um reconhecedor de entidades, que deve ser capaz de identificar e classificar as entidades nomeadas em um dado texto. O processo de identificação consiste em distinguir do restante do texto os trechos que devem ser classificados e então classificá-los. Foi apresentado então um algoritmo (Teste1.py) que classifica palavras iniciadas em maiúsculas como importantes e sua versão melhorada (Teste2.py) que desconsiderava as palavras que iniciam um texto ou uma frase, uma vez que sempre começam em maiúsculo. Os tipos de entidades mais comuns variam para cada aplicação, mas algumas das mais gerais são: PER (Person), ORG (Organization), LOC (Location), GPE (Geo- Political), FAC (Facility) e Vehicles (VEH). Um problema recorrente para os reconhecedores de entidades nomeadas é a ocorrência de termos que se enquadram em múltiplas entidades, por exemplo, um teclado pode ser um instrumento musical ou um periférico de computador, Washington pode ser o nome de uma pessoa, veículo, organização ou até localização. Essa ambiguidade torna necessário o uso de algoritmos mais inteligentes para entender o contexto e classificar a palavra corretamente.
Rafael Augusto Zanatta Na aula de numero treze, vimos o tema sobre “Reconhecimento de entidades nomeadas” para isso é necessário extrair informações dos texto, pois eles permitem transformar os dados não estruturados (incorporados em textos) em dados estruturados, encontrar partes relevantes do texto e obter informação de trechos de texto. Isso nos ajuda a organizar informações que sejam útil para as pessoas e colocar informações de forma clara que sejam úteis para inferências realizadas por algoritmos computacionais. Hoje em dia vários sistemas atuais permitem identificar regiões textuais de interesse para o usuário que usualmente utilizam de expressões regulares ou lista de nomes para encontrar essas regiões. Reconhecimento de Entidades nomeadas NER – Named Entity Recognition é um reconhecedor que permite identificar e classificar as EN em um texto escrito em linguagem natural. Para isso temos a separação em Identificação e classificação. As entidades nomeadas podem ser índices para conceitos, novas relações ou associações entre outras entidades. Na web as entidades nomeadas são associadas a links com maiores informações. Tipos de Entidades Nomeadas são formas como indentificamos os trechos que contem determinadas informações e pelo menos na língua inglesa são bem definidos como ORG para oganization, TIME, PER para person, LOC para location, GPE para Geo Political etc. Um reconhecedor de Entidades nomeadas permite encontrar segmentos de texto que constituam nomes próprios e, em seguida, classificar seu tipo da entidade o reconhecimento é difícil, em parte, devido à ambiguidade da segmentação para isso precisamos decidir o que é uma entidade e o que não é, e quais são os limites. Por exemplo JK ( Juscelino Kubitschek ) é uma escola, um governo, um shopping uma avenida ou uma pessoa ? Uma forma comum para realizar o reconhecimento de Entidades Nomeadas é temos o texto (strings) ai segmentamos a sentença para obter uma lista de Strings, tekenizamos, assim possuímos as sentenças tokenizadas da listas de Strings que seria o que chamamos de “part of speech tagging após isso detectamos as entidades e relacionamos essas detecções através de uma lista de tuplas.
Jairo da Silva Freitas Junior Na aula 13 iniciamos com uma reflexão sobre destacamento de sistaxe (syntax highlighting) em IDEs e se este recurso ajuda os programadores durante o desenvolvimento de software. Continuamos para um exemplo de identificação de regiões textuais de interesse, como datas para inicialização de eventos na agenda. Em ambos os casos frequentemente são utilizadas expressões regulares ou listas de nomes para alcançar identificar estes padrões de interesse. Essa discussão foi pano de fundo para introdução do tema da aula: Reconhecimento de entidades nomeadas. Um reconhecedor deve ser capaz de identificar e classificar as entidades nomeadas. Por exemplo, em “Jesus de Nazaré nasceu ontem” podemos reconhecer {‘pessoa’: ‘Jesus’, ‘lugar’: ‘Nazaré’, ‘evento’: ‘nasceu’, ‘tempo’: ‘ontem’}. O professor comentou sobre um projeto em andamento para reconhecimento automático de entidades nomeadas na Wikipédia, de forma que as páginas referenciem melhor umas às outras relacionando conceitos afins. Vimos um programa Python que reconhece palavras importantes analisando se elas começam com letra maiúscula. Um aprimoramento deste foi desconsiderar palavras com primeira letra capitalizada se a mesma suceder uma pontuação de final de frase “.,!?;”. Os tipos de entidades nomeadas mais comuns são pessoa (PER), organização (ORG), local (LOC), geopolítica (GPE, cidades estados e províncias), instalação (FAC, pontes, prédios, etc.) e veículos (VEH). Um problema relacionado ao reconhecimento de entidades nomeadas é quando um segmento de texto depende do contexto para desambiguação de significado. A este tipo de ocorrência chamamos ambiguidade de segmentação. O pipeline para reconhecimento de entidades nomeadas inicia com a segmentação das sentenças e tokenização (geralmente com uso de expressões regulares), marcação de partes do discurso (POS), detecção de entidades e, finalmente, detecção de relações. No exemplo teste3.py implementou-se parte deste pipeline (até a detecção de entidade) usando a biblioteca NLTK. O professor indicou o dataset Annotated Corpus for Named Entity Recognition disponível no Kaggle para quem desejar se aprofundar neste assunto. Finalmente, comunicou mais detalhes sobre a segunda entrega do projeto e que os resumos poderão ser entregues em 72 horas a partir de agora.
Rodrigo Akiyama Abrantes Aula 13 de Processamento de Linguagem Natural – Reconhecimento de entidades nomeadas Os sistemas de Extração de informação permitem a transformação de dados não estruturados, como textos, imagens e vídeos, em dados estruturados. No contexto de PLN aplicado a textos, é necessário que se encontre as partes relevantes deste e então extrair a informação destes trechos. Destra forma é possível a obtenção de uma representação estruturada da informação contida naqueles dados. A extração de informação é especialmente relevante hoje pois vivemos em uma sociedade que produz uma quantidade gigantesca de dados não estruturados diariamente, sendo necessário que se aplique algoritmos de extração de informação eficientes para varrer estes dados e encontrar informações de algum valor (para alguém). Devido a isto, existem diversos sistemas atuais que permitem a identificação de regiões no texto que sejam do interesse do usuário com o uso de expressões regulares. O NER, Named Entity Recognition ou Reconhecimento de Entidades nomeadas, é um reconhecedor que permite a identificação de classificação das entidades nomeadas em um texto escrito em linguagem natural. No primeiro passo são identificadas as entidades nomeadas, como nomes de pessoas, locais, datas, organizações, etc. No segundo passo estas entidades são classificadas nas categoriais pré-definidas anteriormente. As entidades nomeadas são utilizadas como índices para conceitos ou formação de associações com outras entidades. Na internet, estas entidades são associadas com links que redirecionam o usuário para páginas que contém maiores informações sobre aquele tópico, como os hyperlinks. Os tipos de entidades nomeadas mais comuns são os de: pessoas (nomes de pessoas ou personagens), organizações (empresas ou times de esportes), localizações (dentro de uma unidade geo-política), geo-política (cidades, estados, países), falicities (fábricas, prédios, etc) e veículos (carros, trens, etc). Um reconhecedor de ENs permite que sejam encontrados segmentos de texto que constituam nomes próprios e, em seguida, classificar seu tipo da entidade. O reconhecimento é difícil devido à ambiguidade da segmentação, sendo necessário que se defina o que é uma entidade e quais são os seus limites.
Lucas Zanoni de Oliveira Na aula 13 do dia 22/07 foi apresentado o conceito de “extração de informação” que são sistemas que permitem transformar os dados não estruturados em estruturados, encontrar partes relevantes do texto, obter informação de trechos do texto e produzir uma representação estruturada de informação relevante, tendo como objetivo organizar a informação de tal forma que seja útil para pessoas e colocar a mesma de forma clara para inferências realizadas por algoritmos computacionais. Um exemplo dado foi o de um e-mail onde foi identificado uma data para que então esta fosse associada com a agenda do usuário. Frequentemente são utilizadas expressões regulares. Outro ponto levantado durante a aula foi o de “reconhecimento de entidades nomeadas”, ou também conhecidas por NER (Named Entity Recognition), se tratando de um reconhecedor que permite identificar e classificar as entidades nomeadas em um texto escrito em linguagem natural. Tendo como um de seus usos os índices para conceitos e novas relações (associações) entre outras entidades. Na web essas entidades nomeadas são associadas a links com maiores informações (ex: dados estruturados na Wikipédia). Após isso foi mostrada a primeira abordagem com dois exemplos práticos em python, com scripts de identificação de palavras importantes de um texto. O último tópico mostrado na aula foi o de “tipos de entidades nomeadas” que por sua vez dependerão muito da aplicação, podendo assumir rótulos como, por exemplo: pessoas, organização, localização, entidade geopolítica, facilidades e veículos. Sendo assim, permite com que encontremos segmentos de texto de constituam nomes próprios, para assim então classificá-lo devidamente em seu tipo da entidade. Vale ressaltar que o reconhecimento é difícil, devido à ambiguidade da segmentação e sendo necessário haver uma decisão do limite entre o que é definido como uma entidade ou não. No final da aula foi dito sobre a segunda entrega do projeto, onde deveremos preencher um formulário descrevendo a real proposta do artigo e o que está sendo implementado, listando as limitações frente a ideia proposta pelos autores do artigo.
Rafael Pauwels de Macedo Nessa aula de PLN aprendemos sobre o reconhecimento de entidades nomeadas, uma das primeiras aplicações que vimos foi o syntax highlight usado em editores de texto e IDEs, facilitando o entendimento de programação para novatos. O reconhecimento se baseia primeiramente na extração da informação, permitindo a transformação de dados não estruturados em dados estruturados. A extração também permite encontrar partes relevantes, obter informações de trechos e produzir representações estruturadas da informação relevante. É essencial na análise de linguagens organizar informações de forma que aquilo seja útil para as pessoas. Esse assunto é tão importante que existem até organizações como a SIGIR, que é uma conferência internacional sobre desenvolvimento e pesquisa em métodos de obtenção de informação. Entre os assuntos estudados estão casos de detecção de discurso de ódio, classificação hierárquico dentro de redes criminosas, etc. Hoje em dia temos essas identificações contextuais de regiões textuais em todo lugar, como por exemplo em emails, que podem detectar datas e o contexto associado a data, sugerindo por fim a criação de uma marcação no calendário referente ao evento. Usando tanto listas de nomes quanto expressões regulares. O reconhecimento de entidades nomeadas também é conhecido por NER (Named Entity Recognition), os NER nada mais são que estruturas que permitem identificar e classificar texto escrito em linguagem natural em entidades nomeadas. Muito útil em aplicações como a Wikipedia, onde entidades chaves são reconhecidas e se conectam a outras páginas de forma automática, aumentando a cobertura e relevância dos artigos. Depois de alguns testes executados em python com o foco de identificar palavras importantes de um texto começamos a ver sobre os diferentes tipos de entidades nomeadas. Um dos problemas de reconhecer as entidades é a ambiguidade da segmentação. JK (Juscelino Kubitschek) pode se referir à uma escola, pessoa, avenida ou mesmo governo. Para facilitar esse processo de identificação usamos técnicas como o TAG e Corpus de treinamento, que tornam os reconhecedores de EN mais robustos.
Matheus Dos Santos Pereira resumo sobre a aula 13 de processamento de linguagem natural, sobre processamento de entidade nomeada, o primeiro tópico da aula foi extração de informação, iremos definir como requisitos funcionais para um sistema de extração de informação os seguintes tópico: Transformar os dados não estruturados (incorporados em textos) em dados estruturados, encontrar partes relevantes do texto, obter informação de trechos de texto e produzir uma representação estruturada de informação relevante. Estes tópicos tem como objetivo de: Organizar informação que seja útil para as pessoas e colocar informações de forma clara que sejam úteis para inferências realizadas por algoritmos computacionais. Diversos sistemas conseguem identificar regiões textuais de interesse para o usuário, como por exemplo data, nome e hora. O segundo tópico é o reconhecimento de entidades nomeadas, um reconhecedor deve permitir identificar e classificar as EN (entidades nomeadas) em um texto escrito em linguagem natural. As EN podem ser índices, conceitos, relações e associações de entidades, na web elas costumam ser links para informações. Foi mostrado códigos em python e exemplos dos conceitos vistos acima, antes de continuarmos o assunto para os tipos de entidades nomeadas, os tipos depende muito da aplicação, porem podemos os 6 mais ou comuns: Pessoas, organizações, locais, entidades politicas (regiões), serviços e estabelecimento e veículos. O reconhecimento pode ser algo difícil devido a ambiguidade da linguá, e da segmentação, um exemplo é a palavra banco, ela representa uma variedade grande de entidades que depende unicamente e exclusivamente do sentido do texto. Vimos alguns exemplos de como fazer o reconhecimento assim como os passos lógicos para se identificar a entidade nomeada. Depois disso vimos os recursos que temos disponíveis para estes trabalhos, uns corpus online, depois foi explicado a segunda para do trabalho que deve ser entregue na proxema semana, que deve ser o preenchimento de uma formulário, como alguma para programa referente a entrega final, este formulário deve ser submetido apenas por um integrante do grupo.
Felipe de Campos Mesquita Na aula 13 de Processamento de Linguagem Natural o tema da aula foi reconhecimento de entidades nomeadas. A bibliografia da aula continua sendo o livro Speech and language processing: An introduction to natural language processing, computational linguistics, and speech recognition, Person/Prentice Hall de Daniel Jurafsky e James H. Martin. Na primeira parte da aula comemtamos sobre o artigo Does syntax highlighting help programming novices? E a conclusão interessante sobre este artigo é que não há evidências de que evidenciar palavras da linguagem de programação ajuda novatos, algo que em um primeiro momento pode parecer uma premissa verdadeira. Depois durante a aula foi falado sobre extração de informação e que os sistemas de extração de informação nos permitem: transformar os dados não estruturados (incorporados em textos) em dados estruturados, encontrar parte relevantes de texto, obter informações de trechos de texto, e produzir uma representação estruturada de informação relevante. Os objetivos são organizar informação que seja útil para as pessoas e colocar informações de forma clara que sejam úteis para inferências realizadas por algoritmos computacionais. A respeito de entidades nomeadas, vimos na aula que consiste em identificar e classificar as entidades em um texto escrito em linguagem natural, podemos tentar identificar pessoas, localizações, organizações e instituições, datas entre outros. As entidades nomeadas podem ser índices para: conceitos, e novas relações/associações entre outras entidades. Vimos na aula alguns exemplos de textos classificados e com as entidades nomeadas, bem como trechos de códigos para usar o conceito de entidades nomeadas, nestes texto vimos que a classificação identifica pessoas, veículos, organizações e também pudemos notar que isso não é uma tarefa fácil nem mesmo para um ser humano algumas vezes, principalmente devido à ambiguidade da segmentação, muitas vezes a entidade só pode ser classificada considerando o seu contexto ao redor, como por exemplo JK (Juscelino Kubitschek) que pode ser uma rua, escola, pessoa ou até mesmo se referir à um governo.
Diego Pereira de Lima Na aula do professor Jesus Mena calco do dia 22/07, foi abordado o conceito de extração de informação e estruturação de dados não estruturados, como texto centro de pesquisa desta disciplina em geral o tema abordado foi “Reconhecimento de entidades nomeadas”. No início da aula foi explanado alguns algoritmos e de identificação de. Após isso foi abordado conceitos de extração de informação. Os sistemas de extração de informação permitem estruturar dados não estruturados. Em Processamento de Linguagem Natural o mais importante é como rotular as palavras, e trechos de informações de forma clara. Para tratamento de informação normalmente são utilizadas as expressões regulares para extração destas informações, como extrair do e-mail datas por exemplo. Assim foi exemplificado em aula, a estruturação de texto da web em uma sequência estruturada de informações. A extração de informação apesar de extrair dados do texto e estruturá-los, a busca não é unitária em palavras, mas sim em conjuntos e considerando expressões maiores e a partir dai formando “tags”. Para exemplificar a ideia, foi utilizado um algoritmo que identificava palavras com iniciais maiúsculas e “taguiava” como importantes. Foi também apresentado um pipeline para de reconhecimento de EN, o qual é dividido em segmentação das frases, ”tokerização, rotular partes da língua falada, detectar entidades e relacionar as detecções. A identificação de tags é um problema clássico, mas difícil de ser resolvido e já valeu teses de mestrado. No próprio “Kaggle” possui algumas bases para treinamento e reconhecimento de entidades nomeadas. E um reconhecedor de entidades nomeadas, este permite encontrar segmentos de texto que possuem nomes próprios e assim classifica- los. O reconhecimento é difícil e há muita ambiguidade da segmentação, assim é um trabalho árduo a identificação dos limites em detectar uma entidade ou não. No final da aula foi retomado o trabalho de implementação do código fonte a partir de um artigo científico dando novas instruções para a execução deste
Thiago Bruini Cardoso Silva A décima primeira aula da disciplina tratou sobre reconhecimento de entidades nomeadas. A aula teve início coma a recordação da técnica de feature hashing vista na última, sendo essa útil para redução de dimensionalidade de matrizes de features muito grandes. Após isso, foi dado o exemplo de aplicação do reconhecimento de entidades nomeadas em códigos por meio de "syntax highlight", sendo demonstrada sua importância por meio de artigo científico. Definiu-se extração de informação: transformação de dados não-estruturados na forma de texto em dados estruturados de maneira que seja possível sua utilização por seres humanos ou algoritmos computacionais de inferência, isso pode ser realizado tanto por meio da representação do texto em matriz (pelo uso de bag of words por exemplo) ou pela identificação de trechos relevantes. Um exemplo extração de informação pode ser visto em sistemas capazes de identificar mensagens digitadas pelo usuário e sugerir ações a partir delas, como marcar um compromisso em uma agenda a partir da presença de data no corpo da mensagem. O reconhecimento de Entidades Nomeadas ocorre pelo meio da utilização de expressões regulares e listas de nomes no texto de interesse. Um reconhecedor é capaz de identificar e classificar as Entidades Nomeadas presentes em um documento em diferentes grupos. Na web, por exemplo, as EN são associadas a links para informações adicionais. O primeiro exemplo de reconhecedor implementado em Python tem como fundamento identificar palavras iniciadas com letra maiúscula como importantes, isso leva ao problema de sempre considerar a primeira palavra de qualquer frase como importante, mesmo que seja uma stopword. As seis EN mais comuns são: pessoas, organizações, localizações, entidades geopolíticas, construções e veículos. A tarefa de reconhecimento de entidades nomeadas pode ser difícil e aberta a múltiplas ambiguidades. Por isso, há uma pipeline do processo de reconhecimento, que consiste em: segmentação de sentenças, tokenização, marcação de tags em sentenças, identificação de entidades e identificação de relações.
Felipe Rigo Yoshimura Na aula 13 de Processamento de Linguagem Natural teve como tema o reconhecimento de entidades nomeadas. Antes de se entrar no tema da aula, foi exposto um exemplo de função Hash, baseado nos conceitos da aula 12. Como tema principal, os sistemas de extração de informação servem para transformar dados não estruturados em dados estruturados. Sendo assim é possível encontrar partes relevantes do texto, extraindo informações de certos trechos e produzir um representação estruturada da informação relevante. Os objetivos principais desses sistemas são organizar informações de forma útil para as pessoas e organizar informações de forma estruturada para serem consumidas por algoritmos computacionais. Vários sistemas utilizam esse tipo de algoritmo para identificar regiões textuais, como por exemplo o e-mail identifica datas para associar com a agenda, normalmente utilizando expressões regulares ou listas de nomes. Um sistema reconhecedor de entidades nomeadas permite identificar e classificar as EN em um texto escrito em linguagem natural. No passo de identificar, basta reconhecer quais tokens são entidades e no passo de classificação é o processo de atribuir um tag a entidade analisada. As EN podem ser índices para conceitos ou novas relações entre outras entidades, um exemplo é sua utilização na web como hiperlink para mais informações. Um exemplo utilizando python mostrado na aula foi a classificação dos tokens importantes baseado se este começava com letra maiúscula, porém foram necessários alguns ajustes nesses código. Os tipos de entidades nomeadas utilizado depende muito da aplicação, porém as mais comuns são People, Organization, Location, Geo-Political Entity, Facility e Vehicles. Um reconhecedor de EN permite encontrar segmentos de texto que representem nomes próprios e classificá-los com seu tipo específico de entidade. Porém muitas vezes esse trabalho é difícil devido à ambiguidade. Uma solução é a utilização de multiplas categorias. O pipeline comum para identificar EN é: sentence segmentation, tokenization, part of speech tagging, entity detection, relation detection.
Rodolfo Azevedo Dos Santos Reconhecimento de entidades nomeadas Estudo empírico: “Does syntax highlighting help programming novices?”: O estudo empírico com 390 alunos de gradução. Os dados obtidos não proveram nenhuma evidência que comprove que “syntax highlighting” aumente a capacidade de iniciantes de entender o código fonte. Extração de informação Sistemas de extração de informação permitem transformar dados não-estruturados (Contidos em textos) em estruturados. Encontrar/obter informações em trechos de textos Objetivo: Organizar a informação para pessoas (de forma conveniente) e para algoritmos (para realizar inferências) Information retrieval SIGIR: É uma conferência em pesquisa e desenvolvimento em Information Retrieval. Exemplos: Vários sistemas atuais permitem identificar regiões textuais específicas que podem ser de interesse do usuário. Ex: Identificar uma data (agenda Apple) Para implementá-los utiliza-se expressões regulares (Regex) ou lista de nomes. Outro exemplo são dados não-estruturados na web (a partir de textos) e suas conversões para dados estruturados de modo conveniente para análises/algoritmos. Reconhecimento de entidades nomeadas - NER (Named Entity Recognition) Reconhecedor: Permite identificar e classificar as EM Reconhecimento (Contagem) em grupos: Pessoas, Trabalhos, Organizações, Lugares, etc. EN podem ser índices para: 1) Conceitos 2) Novas relações/associações entre outras entidades Na aplicação web: são links com maiores informações. Exemplo de uso: Wikipédia através do uso de dados estruturados (links) Tipos de EM mais comuns: PER (People) : Pessoas ORG (Organization) : Companhias, times LOC: Regiões, montanhas, mares GPE: Países, estados, províncias FAC: Pontes, construções, aeroportos. VEH: Carros, trens, automóveis em geral. Um reconhecedor de EN permite: Encontrar segmentos no texto e em seguida classifica-los (baseado nas classificações acima) O reconhecimento é difícil devido a ambiguidades. É necessário definir o que é e o que não é uma entidade, além dos limites. Exemplo: JK pode ser uma escola, nome próprio, avenida etc. Outro exemplo é a escolha de múltipla categoria. Recursos disponíveis: Kaggle é um corpus para treinamento de um reconhecedor de EN.
Paulo Alexander Simoes Resumo aula 13 - Reconhecimento de entidades nomeadas Na aula do dia 13 foi visto o tema reconhecimento de entidades nomeadas(REN), o qual é uma técnica de extração da informação que vem do estudo do processamento de linguagem natural. Na (REN) as entidades são extraídas e classificadas segundo a sua função pré-definida de um texto escrito em linguagem natural o que auxilia no processo de mineração de dados. Basicamente separando aquilo sobre o que estamos falando, ignorando as ações envolvidas e outros termos que julgamos menos importante para a nossa análise. Outro tema foi a extração de informação que permite:Transformar os dados não estruturados (incorporados em textos) em dados estruturados;Obter informação de trechos de texto; Produzir uma representação estruturada de informação relevante. Com isso conseguimos organizar informação que seja útil para as pessoas, colocar informações de forma clara que sejam úteis para inferências realizadas por algoritmos computacionais. Um dos exemplos que vemos hoje em dia é que vários sistemas atuais permitem identificar regiões textuais de interesse para o usuário. Email: identificar uma data para associar com a agenda. Onde frequentemente são utilizadas expressões regulares ou lista de nomes. Retornando ao REN, podemos afirmar que um reconhecedor permite identificar e classificar as EN em um texto escrito em linguagem natural. As EN podem ser índices para conceitos, novas relações, associações entre outras entidades. Na web as entidades nomeadas são associadas a Links com maiores informações. O script é uma versão muito simples de identificação de palavras importantes de um texto. Note que algumas não deveriam ser consideradas importantes. Tipos de entidades nomeadas, permite encontrar segmentos de textos que constituam nomes próprios e, em seguida, classificar seu tipo da entidade. O reconhecimento é difícil, em parte, devido à ambiguidade da segmentação. Precisamos decidir o que é uma entidade e o que não é, e quais são os limites.
Lucas Kenzo Kurokawa Sistemas de extração de informação nos permitem: transformar dados não estruturados em estruturados, encontrar partes relevantes do texto, obter informações de trechos de texto e produzir uma representação estruturada de informação relevante. Os objetivos principais são organizar informação que seja útil para pessoas e colocar as informações de forma clara para uso com algoritmos computacionais. Por exemplo: identificar uma data em um texto para associar a uma agenda. Geralmente, usa-se expressões regulares ou uma lista de nomes para isso. Reconhecedores de entidades nomeadas (NER, do ingles named entity recognition) nos permitem identificar e classificar as entidades nomeadas (EN) em um texto escrito em linguagem natural. Com isso, podem ser índices para conceitos ou novas relações/associações entre outras entidades. Na web, frequentemente vemos as entidades nomeadas como links com mais informações (wikipedia por exemplo). As EN mais comuns são pessoas (ou personagens), organizações (companias, times), locais (regiões, montanhas, mares), geopolítica (países, estados, províncias), instalações (pontes, construções, aeroportos) e veículos (aviões, trens, automóveis). Um NER permite que encontremos segmentos de texto que constituam nomes próprios e classificar seu tipo de entidade. O reconhecimento é difícil devido à ambiguidade da segmentação. Precisamos decidir o que é uma entidade e o que não é e quais os limites. Por exemplo: se identificarmos “JK” podemos classificá-lo como uma pessoa, escola, shopping, aeroporto, etc. O “pipeline” de uma NER é: texto bruto (string) com entrada, segmentação do texto (listas), tokenização (lista de listas), tagueamento nos segmentos (lista de listas de tuplas), detecção de entidade (lista de árvores), detecção de relações (lista de tuplas) e como output as relações. Para treinamento de um NER, temos corpus disponível no site do kaggle para isso. Ao fim, o professor revisou os métodos de avaliações, alterou algumas datas das entregas e comentou mais sobre a entrega 2 do projeto.
Eduardo Haberler Cardoso A décima terceira aula de PLN, ministrada no dia 22 de julho teve como tema central o reconhecimento de entidades nomeadas. Inicialmente o professor Jesus introduziu a aula apresentando um artigo que discutia sobre os possíveis benefícios que o destaque de cores ao programar pode trazer para o aprendizado de programação. Este artigo está disponível no início da aula. Em seguida entramos no tema de sistemas de extração de informação, que possibilitam estruturar dados, encontrar ou obter informações relevantes de trechos de textos ou mesmo produzir uma representação estruturada de informações relevantes. Basicamente o objetivo deste tipo de sistema é visualizar a informação de forma clara e organizada para que se torne viável alguma conclusão sobre o texto como um todo. Após alguns exemplos, entramos no tema central da aula, sobre reconhecimento de entidades nomeadas. Um reconhecedor permite identificar e classificar as entidades nomeadas em um texto. Entidades nomeadas podem ser índices para representar conceitos, novas relações ou associações entre outras entidades (no caso da web, elas são associadas a links com maiores informações). Os tipos de entidades nomeadas dependem da aplicação, porém dentre as mais comuns foram apresentadas 6, sendo elas: pessoas, organizações, locais, geo-política, instalações e veículos. Em linhas gerais, um reconhecedor de entidades nomeadas busca encontrar segmentos de texto que constituem nomes próprios e classificar o seu tipo. O desafio neste tipo de técnica é atribuir um reconhecimento preciso, uma vez que as segmentações podem sugerir diversos tipos de classificação, ou seja, existe um fator de ambiguidade importante e que precisa ser tratado. Por exemplo o nome Juscelino Kubitschek pode ser o nome de uma pessoa, escola, avenida, governo, entre outras. Para finalizar a aula, o professor disponibilizou diversos trechos de código em Python relacionados ao tema central.
Rodrigo San Martin Ignacio Gomes Reconhecimento de entidades nomeadas. Através da extração de informações textuais podem ser realizadas a estruturação de dados não estruturados, encontradas partes relevantes do texto, obtenção de informação de trechos e produção de representação estruturada contendo apenas informação relevante. Assim, dados são transformados em informação útil relevante para os usurários, bem como para que sejam realizadas inferências por algoritmos computacionais. Uma forma muito importante de extração de informações textuais é realizada relo reconhecimento de entidades nomeadas (Named Entity Recognition - NER). Esse reconhecedor tem o objetivo de identificar e classificar as entidades em um texto escrito em linguagem natural. A tarefa de identificação marca entidades diversas e posteriormente a tarefa de classificação identifica em classes diversas, como Pessoa, Data, Localização ou Organização. A partir dessas entidades nomeadas (EN), podem ser montados índices para conceitos ou novas associações entre as próprias entidades. Por exemplo, na web as EN são associadas a links que contém mais informações. Na Wikipedia, as entidades são identificadas e referenciadas para seus artigos próprios. Entre as EN mais comuns, estão pessoas, organizações, localizações, geo-política, instalações (pontes, construções, aeroportos) e veículos. Após o reconhecimento de uma EN, pode-se encontrar segmentos de texto que constituem nomes próprios e logo após classificar o tipo de entidade. O reconhecimento pode ser dificultado por ambiguidades das segmentações, por exemplo, JK (Juscelino Kubitschek) pode ser referência as diversas categorias e entidades pois pode ser referir a a escola, avenida, pessoa ou governante. Um pipeline comum para reconhecimento de EN inicia pela entrada do texto bruto, seguindo pela segmentação de sentenças ou lista de strings, posterior tokenização, tabulação de partes do texto (part of speech tagging). Nesse momento é realizada a detecção de entidades, para posteriormente serem realizadas inferências sobre essa informação.
Murilo Bolzan Dionisio Reconhecimento de entidades nomeadas: Também é comumente chamado de extração de entidade. Faz a classificação das entidades que participam de um texto em categorias específicas pré escolhidas, como alguns pequenos exemplos temos: "indivíduos", "empresas", "bairros", "meses", "escolas" e etc. É adicionado também uma certa riqueza do conhecimento semântica requerido ao conteúdo proposto, assim como bônus, também te ajuda a compreender em prontidão com o assunto de algum texto qualquer. É possível entender como um procurador de elementos do texto específico que pertencem a uma entidade individual e diferentes na frase. O pipeline quando for fazer alguma interpretação de entidades nomeadas e contém diversas camadas com intenções diferentes. Como exemplo, o caso apresentado faz uma listagem da quantidade de palavras durante a primeira camada. Considerando a implementação em Python, podemos fazer uso de bibliotecas NLTK e uso de regex que contém boas funções auxiliadoras. A seguir foram apresentados exemplos de implementação. Primeiro exemplar apresentado em aula: O programa capivara, nominado teste1.py lê e faz a interpretação das expressões regulares previamente definidas no início do código e quase não tem diferença com os código de aulas passadas. O software contabiliza cada uma das palavras em uma tupla, fazendo a organização delas em um guia e imprime as quais que são classificadas como mais importantes que as outras. No caso do exemplo, as palavras importantes eram as que se iniciavam com letra maiúscula. Segundo exemplar apresentado em aula: O programa denominado teste2.py é um upgrade do aplicativo citado anteriormente, onde é comparados também cada palavra com seu predecessor. Neste segundo caso analisado conseguimos uma precisão maior e com isso podemos concluir que analisar as palavras anteriores gera um resultado mais desejado do que somente as próprias palavras.
Gustavo Murayama Os sistemas de extração de informação tem por objetivo organizar informações que sejam úteis e colocá-las de forma clara para inferências realizadas por algoritmos computacionais. Realizam transformação de dados não estruturados em dados estruturados, encontram partes relevantes do texto, obtém informações de trechos de texto e produzem uma representação estrutura de informação relevante. Um exemplo é a possibilidade de clicar em um número que é identificado automaticamente como um número de telefone em um contexto de aplicativo de troca de mensagens em um celular, seja para telefonar ou adicioná-lo na agenda. Frequentemente são usadas expressões regulares ou uma lista de nomes. As entidades nomeadas podem ser índices para conceitos ou novas relações / associações entre outras entidades. No contexto web, o Wikipedia faz esse tipo de trabalho em que relaciona as entidades através de links. Há um projeto chamado DBpedia cujo objetivo é extrair conteúdo estruturado das informações do Wikipedia permitindo que sejam realizadas consultas sobre o conteúdo de forma semelhante a um banco de dados. Embora dependa muito da aplicação, os tipos de entidades nomeadas mais comuns são: Pessoas (People), Organização (Organization), Local (Location), Geopolítica (Geo-Political), Entidade (Entity), Instalação (Facility) e Veículos (Vehicles). O Reconhecimento de Entidades Nomeadas (Named Entity Recognition ou NER) é um reconhecedor que identifica e classifica as entidades nomeadas em um texto escrito em linguagem natural. O reconhecimento é dificultoso pela ambiguidade dos segmentos de texto encontrados. É possível, portanto, que um segmento de texto tenha múltiplas categorias. Um exemplo claro é quando tratamos do nome de uma figura famosa, como Juscelino Kubitschek. Dependendo do contexto, pode ser uma escola, uma avenida, uma pessoa ou pode estar se referindo ao governo de JK.
Mayza Cristina da Silva Aula 13 – 22/07 - Reconhecimento de entidades nomeadas – Extração de informação -Os sistemas de extração de informação permitem: Transformar os dados não estruturados (incorporados em textos) em dados estruturados. - Encontrar partes relevantes do texto. Obter informação de trechos de texto. - Produzir uma representação estruturada de informação relevante. \-- Objetivos: Organizar informação que seja útil para as pessoas. Colocar informações de forma clara que sejam úteis para inferências realizadas por algoritmos computacionais. Um reconhecedor permite identificar e classificar as EN em um texto escrito em linguagem natural. Com este reconhecedor é possível identificar entidades que possam ser, por exemplo, comumente buscadas em uma pesquisa, podendo ser um local, uma instituição, dentre outros. Estas entidades na web podem encaminhar para links que expliquem um pouco mais sobre. Um lugar que usualmente podemos ver este tipo de marcação são nas páginas da Wikipédia, em que ao visitar um texto sobre um assunto é possível navegar por outros tantos correlacionados durante o texto. Um reconhecedor de EN Permite encontrar segmentos de texto que constituam nomes próprios e, em seguida, classificar seu tipo da entidade. O reconhecimento é difícil, em parte, devido à ambiguidade da segmentação. Precisamos decidir o que é uma entidade e o que não é, e quais são os limites. Exemplo: JK ( Juscelino Kubitschek ) Escola? Avenida? Pessoa? Governo? Tipos de EN mais comuns Dependerá muito da aplicação, mas na seguinte tabela temos uma lista das 6 entidades nomeadas mais comuns. Pessoa – PER – Turing é um gigante da computação Organização – ORG – a IBM lançou novos dispositivos Localização – LOC – o mar vermelho ... Geopolítica – GPE – São Paulo está parada Facility – FAC – O edifício Banespa está aberto à visitação Veículos – VEH – é um ford clássico
Victor Arruda Ganciar _Reconhecimento de Entidades Nomeadas_ Os sistemas de extração de informação permitem: * Transformar os dados não estruturados (incorporados em texto) em dados estruturados; * Encontrar partes relevantes do texto; * Obter informação de trechos de texto; * Produzir uma representação estruturada de informação relevante. Dentre os objetivos estão: organizar informação que seja útil para as pessoas; colocar informações de forma clara que sejam úteis para inferências realizadas por algoritmos computacionais. Vários sistemas atuais permitem identificar regiões textuais de interesse para o usuário, por exemplo, identificar uma data em um email para sincronização com a agenda. Para tais tarefas frequentemente são utilizadas expressões regulares ou lista de nomes. Um reconhecedor permite identificar e classificar as entidades nomeadas em um texto escrito em linguagem natural. As entidades podem ser índices para conceitos, novas relações ou associações entre outras entidades. na web as entidades nomeadas são associadas a links com maiores informações. _Tipos de Entidades Nomeadas_ A seguinte lista apresenta os tipos de entidades nomeadas mais comuns: * People (people, characters): Turing is a giant of computer science; * Organization (companies, sport teams): The IPCC warned about the cyclone; * Location (regions, mountains, seas): The Mt. Sanitas Loop is in Sunshine Canyon; * Geo-Political (countries, states, provinces): Palo Alto is rasing the fees for parking; * Entity Facility (bridges, buildings, airports): Consider the Tappan Zee Bridge; * Vehicles (planes, trains, cars): It was a classic Ford Falcon. Um reconhecedor de entidade nomeada permite encontrar segmentos de texto que constituam nomes próprios, e em seguida, classificar seu tipo da entidade. O reconhecimento é difícil, em parte, devido à ambiguidade da segmentação. Precisamos decidir o que é um entidade e o que não é, e quais são os limites.
Gustavo Zanfelice Dib Reconhecimento de Entidade Nomeada: Algo importante para o processamento de linguagem natural é identificar quais palavras possuem mais relevância em um texto. Para isso, utilizamos o conceito de entidade nomeada. Esta técnica se baseia em utilizar palavras definidas previamente cujo qual podem agregar conhecimento semântico à análise. Também é interessante utilizar pontuação da frase, como pontos finais, exclamações e afins já que inicios de sentenças por via de regra contém maior informação da frase. (Desconsiderando as conexões entre as frases, como as palavras “Todavia”, “Entretanto”) Para a implementação em Python, podemos utilizar as bibliotecas NLTK e regex que contém boas funções auxiliares. A seguir foram demonstrados exemplos de implementação. Primeiro exemplo demonstrado na aula: O programa teste.py interpreta as entidades definidas no início do código para poder identificar a importância delas. O programa enumera as palavras em uma tupla (Organizando-as em um dicionário [em inglês]) e as imprime quais palavras são consideradas importantes. Neste exemplo conceito como bag of words são implementados também para servir de auxiliar para análise realizada. Porém ao vermos o output, a saída não corresponde fielmente ao que sabemos que é correto na prática. Segundo exemplo apresentado em aula: O programa teste2.py é um aprimoramento da versão anterior comparando a palavra com o elemento anterior. Nesta análise, foi obtida uma maior precisão, indicando que comparar não somente a palavra, mas também sua vizinhança. Reconhecedor de entidades nomeadas: Permite encontrar elementos de texto que constituem uma entidade única e distinta na frase. O pipeline para o reconhecimento de EN possui múltiplas camadas com funções distintas. No exemplo dado a primeira camada lista as palavras contidas no texto.
Arthur Veloso Kamienski A extração de informações permite transformar textos não-estruturados em dados estruturados, os quais podem ser analisados mais facilmente. Além disso, pode- se utilizar as técnicas de extração de informação para também identificar partes importantes de um texto. O reconhecimento de entidades nomeadas (NER, named entitiy recognition) é uma forma de se identificar trechos de um texto que são de interesse, por terem um significado adicional. A técnica se baseia em um reconhecedor que identifica ou classifica as entidades de um texto. A tarefa de identificação requer apenas o reconhecimento de uma entidade, mas sem a indicação do seu significado. A classificação, por outro lado, requer que a entidade seja categorizada, de forma a identificar seu significado. Essa tarefa requer um dicionário que mapeia as entidades às classes. Exemplos de classes às quais as entidades podem pertencer são: nomes de pessoas, datas, localizações, organizações, eventos e contextos. As entidades, uma vez identificadas, podem ser utilizadas como índices para relacionar entidades ou conceitos, do modo como é feito na Wikipédia, onde entidades nomeadas são links para outras páginas. A identificação de entidades pode ser feita de forma ingênua, ao selecionar palavras com a primeira letra maiúscula. Essa abordagem, apesar de funcionar para muitos casos, gera erros para as palavras que iniciam frases. Para um melhor funcionamento do algoritmo, podemos ignorar essas palavras de modo a identificar apenas as palavras com a primeira letra maiúscula que não estão no começo da frase. Existe um problema em se identificar entidades nomeadas, pois existem diversos casos de ambiguidade. Um nome de uma pessoa pode ser utilizado para nomear um lugar (rua, cidade), por exemplo.
Jean Augusto de Araujo Resumo da aula de Processamento de Linguagem Natural do dia 22/07: Reconhecimento de entidades nomeadas. A aula iniciou com uma sugestão da leitura de um livro, acerca das consequências de syntax highlighting para programadores iniciantes. O tema foi apresentado com o conceito de extração de informação. Um sistema de extração de informação pode estruturar dados, incoroporados em textos, que sejam não estruturados, identificar trechos de relevância destacada dentro do texto e obter informação de trechos contidos no texto. O objetivo é organizar informação de forma clara, ou de forma q sejam possível utilizar essa informação para algoritmos computacionais. Entre os exemplos citados, pode-se incluir um sistema de email capaz de identificar regiões textuais que sejam relevantes ou de maior interesse para o usuário, como o aviso de data e horário de uma reunião e sugerir incluir esse evento na agenda do usuário. Frequentemente são utilizadas expressões regulares ou lista de nomes, no exemplo não estruturado: "O segundo signo do zodíaco é Touro", poderia ser estrutuado como "Signos do zódiaco: 1 - X, 2. Touro". O próximo tópico apresentado foi Reconhecimento de Entidades nomeadas, abreviado por NER. Em inglês: Named Entity Recognition. A ideia é que um reconhecedor tenha como objetivo identificar e classificar essas EN de um texto dado em linguagem natural, identificando por exemplo os nomes de estabelecimentos em textos. Em questão de uso, as EN podem ser usadas como índices para conceitos ou para fazer associações com outras entidades, de forma que gere novas relações. Na web, Às entidades nomeadas são associadas Links com maiores informações. Isso é visto na wikipedia, por exemplo.
Felipe Dias Correia A aula 13 foi do tema de reconhecimento de entidades nomeadas, ministrada dia 22 de Julho, onde a aula foi introduzida sobre extração de informação, onde os sistemas podem transformar os dados não estruturados em dados estruturados, encontrar partes, obter informação ou produzir uma representação estruturada de informação relevante do textos. E foi dado alguns exemplos, como em um email, onde é possível identificar datas para associar a agenda. Depois foi abordado sobre o reconhecimento de entidades nomeadas, ou também conhecido como NER. Em que um reconhecedor permite identificar e classificar as entidades nomeadas em um texto escrito em linguagem natural, isto é, coloca as palavras em uma classificação de grupos. O uso mais comum é para índices, e o exemplo dado foi do wikipedia, onde as palavras marcadas em azul é uma forma de classificar as palavras relevantes do texto. E também foi dado alguns exemplos em python para demonstrar o uso das NER. Outro conceito dado foi de Tipos de Entidades Nomeadas, onde um uso comum é nas classificações como aparecer no textos, onde a apalavra esta em negrito e uma sigla, que indica o índice dela, e os tipos mais comuns são PER (people), ORG (organization), LOC (location), GPE (geo-political), FAC (entity facility) e VEH (vehicles), e com um reconhecedor de texto siglas é possível encontrar segmentos de textos onde da para classificar com alguns dos tipos de EN, mas há casos de reconhecimento difícil por conta de alguma ambiguidade na segmentação, como nos exemplos dados na aula, o segmento JK, que pode assumir como uma escola, avenida, pessoa ou governo.
Lucas Monteiro de Oliveira Aula 13 - Reconhecimento de entidades nomeadas Existem alguns sistemas denominados “Sistemas de dextração de informação” que permitem entre outras coisas: transformar dados não estruturados em estruturados, encontrar partes relevantes em textos, obter informações de trechos de texto e produzir uma apresentação estruturada de informações relevantes. Um reconhecedor de de entidades nomeadas permite identificar e classificar as entidades de um texto escrito em linguagem natural, resultando em uma estruturação da informação. Dentre os usos desta tecnica estão: a criação de indíces, identificação de páginas mais relevantes e que não estejam associadas por link, etc. Existem tipos de entidades nomeadas, dentre ele os mais comuns são: pessoas, organizações, locais, regiões, lugares e veículos. Desta forma, esta técnica permite encontrar segmentos de textos que constituam quaisquer umas des categorias citadas acima. Existem entretanto muitas possíveis ambiguidades nas linguagens naturais, o que acaba por dificultar o trabalho de segmentação. Um exemplo deste cenários é a expressão “JK”, que pode ser associada a escolas, avenidas, pessoas e períodos de governo. Normalmente um pipeline de processamento para esta técnica é composto de cinco passos: o de segmentação de sentença, de tokenização, de tagueamento de partes do corpus, de identificação de entidades e de detecção de relações entre as sentenças. Em casos de ambiguidade normalmente recorre-se a indentificação de entidades através da relação entre as mesmas, ou seja, o contexto em que a entidade está inserida. Existem alguns recusros disponíveis na internet para se treinar um reconhecedor de entidades nomeadas, dentre eles, pode-se encontrar no site chamado Kaggle exemplos de utilização de corpus anotado para o reconhecimento de entidades nomeadas.
Marcio Jose de Carvalho Nessa aula vimos o conceito de reconhecimento de entidades nomeadas, a definição de entidades nomeadas, a motivação e o processo de reconhecimento desses tokens em textos. Começamos vendo o que é extração de informação. O principal objetivo de sistemas de extração de informação é retirar dados de textos não-estruturados para colocar em formatos estruturados, para facilitar a consulta por humanos ou algoritmos computacionais. Esses sistemas conseguem identificar regiões de possível interesse para o usuário, utilizando expressões regulares ou listas de termos. Essas regiões de interesse podem ser usadas como links para páginas com mais informações ou para outras aplicações, como datas serem linkadas com calendários ou agendas. Essas regiões de interesse podem ser classificadas em categorias, sendo esse o conceito de entidades nomeadas. Algumas das categorias mais comuns de entidades nomeadas são “Pessoas”, “Organizações”, “Lugares”, “Entidades Geopolíticas”, “Estruturas de serviços”, “Veículos”. Programas que fazem essa classificação são chamados de reconhecedores de entidades nomeadas (Named Entity Recognizer - NER). Esses programas encontram, entre outras dificuldades, duas bem importantes, que são a definição do que é uma entidade importante e a classificação de entidades que são ambíguas em relação às categorias que aquele programa usa. O pipeline mais comum de um NER segue os passos de extrair sentenças em do texto-alvo, extrair os tokens das sentenças, classificar os tokens por função, identificar as entidades nomeadas importantes e daí realizar a classificação. Vimos alguns scripts com implementações simples de NERs baseados em árvores, e uma base de dados com corpora para treinamento de NERs. Ao fim da aula, vimos as datas atualizadas dos métodos de avaliação.
Matheus Fama Machado de Sousa Resumo aula 13 : Reconhecimento de entidades nomeadas Como ponto de partida, foi abordado um estudo sobre se há algum efeito prático na melhora do desempenho de programadores novos quando utilizam sintaxe colorida. O resultado final conclui que não houve melhoras significativas para os estudantes avaliados. Extração de informação : Extração de informação permite transformar os dados não estruturados em dados estruturados, encontrar partes relevantes do texto, obter informação de trechos de texto, produzir uma representação estruturada de informação relevante de forma a gerar informações claras e úteis para as pessoas. Vários sistemas atuais permitem identificar regiões textuais de interesse para o usuário e frequentemente são utilizadas e expressões regulares ou lista de nomes. NER – Reconhecimento de entidades nomeadas Um reconhecedor permite identificar e classificar as EN em um texto escrito em linguagem natural. As EN podem ser índices para conceitos e novas relações / associações entre outras entidades. Permite encontrar segmentos de texto que constituam nomes próprios e, em seguida, classificar seu tipo da entidade. O reconhecimento é difícil, em parte, devido à ambiguidade da segmentação. Precisamos decidir o que é uma entidade e o que não é, e quais são os limites. Por exemplo, a Sigla JK é uma escola, avenida, pessoa ou governo? Tipos de EN mais comuns As entidades nomeadas mais comuns são : Pessoa, Organização, Localização ,Geopolítica, Instalações, Veículos. Atualmente, há corpus que servem para treinar um reconhecedor de EN. Resumindo: Basicamente, um reconhecedor de EN recebe o texto “cru”, sem nenhum tratamento, segmenta o texto recebido, para cada segmento atribuí um token(tokenization) , depois atribuí tags e por último detecta as relações.
Luiz Gabriel Correia Reconhecimento de entidades nomeadas. Programar com cor para destaque do código ajuda no aprendizado? Segundo uma pequisa feita com alunos de graduação parece demonstrar que não faz diferença. Um sistema de extração de informação permite transformar dados não estruturado em estruturado. Extraindo por exemplo partes importantes de um texto, ou obter informações específicas. Para isso precisamos rotular os textos de alguma forma. Quase todos os algoritmos de atacam este problema usam algum tipo de busca em uma informação adicional para conseguir rotular palavras. Dado um texto, precisamos identificar qual são as palavras importantes e para estas, atribuir um rótulo ao tipo de palavra. A busca não pode ser apenas por palavras, precisa levar em consideração que uma mesma entidade ou conceito pode englobar mais de uma palavra. Em um exemplo simples, fazemos um script que que usa uma expressão regular para separar as palavras do texto e então, para cada palavra tenta identificar se ela é importante, simplesmente vendo se ela inicia com letra maiúscula. Tipos de Entidades Nomeadas: é preciso consultar um dicionário. Os tipos mais comuns são pessoas, organizações, locais, geo-política, entidade, veículos. Há casos de ambiguidade que precisam de contexto para serem resolvidas. O pipeline de reconhecimento, passa pela segmentação, tokenização, tagging de parte do discuso, detecção de entidade e detecção de relações. Em Python podemos usar as funções do modulo NLTK. A aula termina com uma discussão sobre os novos prazos de entrega do projeto, que será prorrogado e a entrega será feita por meio de uma formulário padronizado, já que a turma deste quadrimestre é muito grande.
Marcelo Schirbel Gomes Aula 13 - Reconhecimento de entidades nomeadas Precisamos primeiramente fazer a extração de informações relevantes do texto. Esses sistemas de extração permitem transformar os dados não estruturados em estruturados. E pra isso, precisamos encontrar partes relevantes do texto e tirar informações dessas partes. Isso seria uma representação estruturada. Os objetivos são reunir informações úteis e reuni-las para apresentação. Um exemplo de uso é a identificação de informações em e-mails. Nos quais podemos fazer agrupamentos de data e sincronizar com a agenda. E para isso precisamos identificar os tipos de palavras, sejam artigos, substantivos, nomes, verbos e etc. E esses algoritmos sempre se baseiam em buscas, e principalmente buscas em árvores e buscas hash. Devemos ter em mente que essa busca não deve se basear somente em palavras individuais, mas em um conjunto de palavras que podem representar uma ideia. Isso deixa o processo muito caro. Se esquecessemos o uso de um dicionários, precisaríamos pensar em estratégias para identificar conceitos em múltiplas palavras, como nomes científicos, nomes de cidades, nomes completos de pessoas e etc. E podemos usar essa estratégia como uso inicial para pesquisar sem o dicionário num texto. Assim economizamos tempo de processamento. Um outro problema são as palavras que podem ter múltiplos conceitos, como Juscelino Kubitcheck, que pode ser um Governo, uma pessoa, um lugar e etc. Para isso, devemos usar um dicionário para identificar o contexto da palavra. Para termos uma boa ideia da complexidade, devemos ter um conhecimento do tipo de dicionário usado, seja ela para os tipos de palavras que desejamos ter em nossa avaliação.
Matheus Miranda Teles Aula 13 - Reconhecimento de entidades nomeadas. Os sistemas de extração de informação permitem transformar dados não estruturados em dados estruturados, permite encontrar partes relevantes de textos, e obter informações, além de produzir uma informação estruturada. O objetivo da extração é fazer com que a informação seja organizada para que seja útil para uma pessoa ou para inferência de algoritmos. Existem diversos sistemas que permitem identificar regiões textuais, como num email existe a possibilidade de agendar uma data para um evento, e para isso são frequentemente utilizados expressões regulares ou lista de nomes. Outro ponto seria o reconhecimento de entidades nomeadas, que permite a identificação e classificação de entidades em um texto escrito em linguagem natural. Tendo isso em vista, a partir de um texto, podemos identificar palavras-chave e classificá-las como lugares, organizações, pessoas etc. Um uso disse seria na Wikipedia, onde as entidades nomeadas podem ser identificadas e associadas a um link para outra página no próprio site. Um exemplo simples de algoritmo é um que identifica palavras que iniciam com letra maiúscula e as classifica como entidades, e para desconsiderar artigos em início de frase, desconsideramos palavras com poucas letras e temos um algoritmo funcional. Este reconhecimento de entidades é difícil pois dado uma entidade é difícil a classificação, por exemplo, dado JK (Juscelino Kubitschek), seria isso uma escola, avenida, governo ou pessoa? Uma alternativa seria múltiplas categorias possíveis para uma entidade, assim todas estas categorias seriam atribuídas a esta entidade. Existem corpus disponíveis na internet para treinamento de um reconhecedor de entidades nomeadas.
Lucas Vitalino Severo Pais Esta aula foi referente a sistemas de reconhecimento de entidades nomeadas. Esses sistemas de extração de informação permitem transformar dados não estruturados (incorporados em textos) em dados estruturados, encontrar partes relevantes do texto, obter informação de trechos do texto e produzir uma representação estruturada de informação relevante. Os objetivos desses sistemas de extração de informação são organizar as informações que sejam úteis para as pessoas e colocar informações de forma clara q sejam úteis para inferências realizadas por algoritmos computacionais. Vários sistemas atuais permitem identificar regiões textuais de interesse para o usuário, um aplicativo de email hoje pode associar datas no corpo de um email e colocá-las em uma agenda, buscadores podem separar nomes, lugares ou buscas convencionais e associar cada categoria dessas a um serviço diferente, entre outros. Frequentemente são utilizados expressões regulares ou lista de nomes para estas tarefas. O reconhecimento de entidades nomeadas (ou NER, Named Entity Recognition em inglês) permite identificar e classificar as entidades nomeadas de um texto escrito em linguagem natural. Essas entidades nomeadas podem ser índices para conceitos, novas relações ou associações entre outras entidades. A seis entidades nomeadas mais comuns são pessoas, organizações, locais, geopolítica (países, estados, províncias, cidades e outros), infraestrutura (pontes, aeroportos, edifícios) e veículos (carros, trens, etc). O pipeline mais comum para o reconhecimento de entidades nomeadas é entrar com o texto cru, passar por um separador de frases, tokenização, agrupamento de fala, detecção de entidades, e finalmente detecção de relações nos retornando uma lista de tuplas contendo as entidades nomeadas e suas relações.
Willian Teruya Kimura Na aula do dia 22/07, foi apresentado duas telas referentes a edição de scripts em dois IDEs, um com letras coloridas e outra sem, e, a partir disso, ele questiona o seguinte ponto: a coloração auxilia no aprendizado em programação dos alunos? A aula se inicia com a temática de extração de informação, em que permite transformar dados não estruturados em estruturados, organizando informação de forma clara e organizada, com intuito de apresentar dados importantes para estudos e usar de maneira útil para inferências realizadas por algoritmos computacionais. Um exemplo de extração de informação são sistemas que permitem verificar regiões de texto que tem um valor de interesse para o usuário, como um e-mail em que é possível identificar uma data e poder associar o mesmo numa agenda. Para tal extração normalmente é utilizado expressões regulares ou lista de nomes. Outra forma de se ver a extração é a transformação de um texto web não estruturado para uma estrutura de sequência, organizando palavras-chaves por categorias. O Reconhecimento de Entidades nomeadas permite identificar as entidades nomeadas (EN) em um texto escrito em linguagem natural. Eles podem ser usados como índice para conceitos ou novas associações entre outras entidades, e na web podem ser associados a Links com maiores informações. Foi apresentado um exemplo de um script simples que identifica palavras importantes de um texto, porém ele verifica somente palavras que iniciam letras maiúsculas, o que não é eficiente. Em seguida, foi realizado um outro script que identifica de maneira melhorada as palavras importantes.
Tiago Suzukayama Nesta aula, o assunto abordado foi a extração de informação. Sistemas de extração de informação permitem que você transforme os dados não estruturados (incorporados em textos) em dados estruturados, encontre partes relevantes do texto, obtenha informação de trechos de texto e produza uma representação estruturada de informação relevante. Os objetivos de um sistema de extração de informação são organizar informação que seja útil para as pessoas, e colocar informações de forma clara que sejam úteis para inferencias realizadas por algoritmos computacionais. Vários sistemas atuais permitem identificar regiões textuais de interese para o usuário. Como por exemplo, um cliente de email identificar uma data para associar com uma agenda. Frequentemente são utilizadas expressões regulares ou lista de nomes. Um reconhecedor de entidades nomeadas (NER) permite identificar e classificar as EN - entidades nomeadas - em um texto escrito em linguagem natural. As EN podem ser índices para conceitos e novas relações / associações entre outras entidades. Os tipos mais comuns de entidades nomeadas são: pessoas, organizações, locais, geopolitico, entidades, instalações e veículos. Um reconhecedor de EN nos permite encontrar segementos de texto que constituam nomes próprios e, em seguida, classificar seu tipo da entidade. O reconhecimento é difícil, em parte, devido à ambiguidade da segmentação. É preciso decidir o que é uma entidade e o que não é, e quais são os limites. Um pipeline comum para reconhecimento de EN é: dados um texto como entrada, este é segmentads em uma lista de sentenças, que é tokenizado, tageado, e depois, quebrado em entidades, para por fim, encontrar as relações.
Luana Ferreira do Nascimento O primeiro tema a ser abordado é a extração de informação. Os sistemas de extração de informação incluem funcionalidades de transformar dados incorporados em textos em dados estruturados, encontrar as partes que são relevantes, obter as informações de certos trechos de texto e representar estas informações de forma estruturada, com o objetivo de organizar e dispor as informações de forma útil para as pessoas e programas. A primeira tarefa de extração de informação abordada será o reconhecimento de entidades nomeadas. Um reconhecedor permite destacar quais são as entidades presentes nos textos e classificar em tipos, como pessoas, datas, locais ou organizações. Os tipos de entidade mais comuns vão depender da aplicação e do contexto, mas no geral são pessoas, organizações, locais, geo-políticas, estabelecimentos e veículos. Um reconhecedor de entidades é um algoritmo capaz de encontrar partes de textos que contenham nomes próprios e então classificar estes nomes. Este reconhecimento é bem difícil por causa da ambiguidade da segmentação, ou seja, um nome próprio pode significar uma coisa diferente em cada contexto que possa ser inserido, dificultando a classificação. Para realizar este reconhecimento de entidades, um pipeline comumente utilizado é o seguinte: Primeiro o texto é inserido em um segmentador de sentenças, depois os tokens destes segmentos são extraídos, depois o sistema irá classificar de quais partes de uma fala cada token é (considerando que esta parte do programa recebe uma lista de strings), após isso as entidades são detectadas para finalmente detectar as relações entre elas e devolver uma lista de tuplas.
Henrique Augusto Santos Batista Os sistemas de extração de informação permitem em geral: Transformar os dados não estruturados em dados estruturados. Encontrar partes relevantes do texto. Obter informação relevantes de trechos de texto. Produzir uma representação estruturada de informações relevantes. Assim conseguimos organizar informação que seja útil e relevante para as pessoas e colocar informações de forma clara que sejam úteis para inferências realizadas por algoritmos computacionais. Vários sistemas atuais permitem identificar regiões textuais de interesse para o usuário por exemplo e-mail identificando uma data para associar com a agenda, frequentemente são utilizadas expressões regulares ou lista de nomes. Um reconhecedor permite identificar e classificar as inglês em um texto escrito em linguagem natural. As inglês podem ser índices para conceitos ou novas relações e associações entre outras entidades. Na web as entidades nomeadas são associadas a Links com maiores informações. Dependerá muito da aplicação, mas as proxemas seis entidades nomeadas são as mais comuns: people, organization, location, geo-political, entity, facility, vehicles. um reconhecedor permite encontrar segmentos de texto que constituam nomes próprios e, em seguida, classificar seu tipo da entidade o reconhecimento é difícil, em parte, devido à ambiguidade da segmentação precisamos decidir o que é uma entidade e o que não é, e quais são os limitespor exemplo: JK ( Juscelino Kubitschek ) é uma Escola, Avenida, Pessoa ou Governo. Outros exemplos possíveis de múltipla categoria para segmentos de texto são Washington: Person, Location, Political Entity, Organization, Vehicle. Downing St.: Location, Organization, IRA: Preson, Organization, Monetary Intrument Louis Vuitton: Person, Organization, Comecial Product


Número de resumos processados: 65.

Observação:


Arquivo gerado por um programa.