Neste post entenderemos como processar anáforas utilizando. Antes de processar anáforas devemos antes entender o que são anáforas. Esse conceito é bem simples e você vai entender bem rápido, porém, computacionalmente tratar esse tipo de fenômeno é um pouco mais complexo
Esse post faz parte de um conjunto de conteúdos sobre PLN. Quer saber mais? clique aqui.
Leia estes versos de Manuel Bandeira:
“Vi uma estrela tão alta,
Vi uma estrela tão fria!
Vi uma estrela luzindo
Na minha vida vazia”.
Observe que o poeta inicia os três primeiros versos com a mesma expressão “Vi uma estrela”, com o objetivo de enfatizar essa ideia. Esse recurso usado tão frequentemente na poesia é uma figura de linguagem chamada anáfora.
A anáfora consiste em repetir uma palavra ou expressão a espaços regulares durante o texto. É muito comum nas trovas populares, cordéis e poemas.
No contexto de Processamento de Linguagem Natural a resolução de anáforas aparece mais comumente como a resolução de pronomes de acordo com referencias apresentadas anteriormente no texto. Observe o exemplo: John is a employee. He always is late.
Neste exemplo o empregado chamado John é apresentado. Na segunda frase o nome de John é substituído pelo pronome “He”. Realizar o reconhecimento destas conexões é um problema bastante complexo em NLP. Caso seja necessário descer a este nível de detalhe, é possível consultar artigos que explicitam a técnica. Confira alguns links que podem ajudar neste trabalho.
Buscando uma abordagem mais prática, demonstraremos a seguir um exemplo de resolução de anáforas na língua inglesa.
Observe a seguinte frase:
“Barack Obama was born in Hawaii. He is the president. Obama was elected in 2008.”
Aqui temos três sentenças distintas, são elas:
1 – Barack Obama was born in Hawaii.
2 – He is the president.
3 – Obama was elected in 2008.
Na segunda frase, por exemplo, o pronome “He” refere-se ao presidente Barack Obama. O objetivo do algoritmo implementado é identificar esta relação.
A universidade de Stanford apresentou um módulo do seu parser que resolve este problema. Veja um exemplo de código Java que utiliza o algoritmo de resolução de Anáforas.
import java.util.Properties;
import edu.stanford.nlp.coref.CorefCoreAnnotations;
import edu.stanford.nlp.coref.data.CorefChain;
import edu.stanford.nlp.coref.data.Mention;
import edu.stanford.nlp.ling.CoreAnnotations;
import edu.stanford.nlp.pipeline.Annotation;
import edu.stanford.nlp.pipeline.StanfordCoreNLP;
import edu.stanford.nlp.util.CoreMap;
public class AnaphoraResolutionExample {
public static void main(String[] args) throws Exception {
Annotation document = new Annotation("Barack Obama was born in Hawaii. He is the president. Obama was elected in 2008.");
Properties props = new Properties();
props.setProperty("annotators", "tokenize,ssplit,pos,lemma,ner,parse,mention,coref");
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
pipeline.annotate(document);
System.out.println("---");
System.out.println("coref chains");
for (CorefChain cc : document.get(CorefCoreAnnotations.CorefChainAnnotation.class).values()) {
System.out.println("t" + cc);
}
for (CoreMap sentence : document.get(CoreAnnotations.SentencesAnnotation.class)) {
System.out.println("---");
System.out.println("mentions");
for (Mention m : sentence.get(CorefCoreAnnotations.CorefMentionsAnnotation.class)) {
System.out.println("t" + m);
}
}
}
}
Saida:
coref chains
CHAIN3-[“Barack Obama” in sentence 1, “He” in sentence 2, “Obama” in sentence 3]
—
mentions
Barack Obama
Hawaii
—
mentions
the president
He
—
mentions
Obama
2008
Vale ressaltar que para que este código funcione é necessário ter adicionado as bibliotecas do Stanford Parser. Este exemplo e outros códigos podem ser acessados no nosso GitHub.
Clique na imagem abaixo para acessar:
Esse post foi modificado em 30 de novembro de 2022 10:07
This website uses cookies.