Quando uso cada um?
Além disso ... a lematização do NLTK depende de partes do discurso? Não seria mais preciso se fosse?
Quando uso cada um?
Além disso ... a lematização do NLTK depende de partes do discurso? Não seria mais preciso se fosse?
Respostas:
Curto e denso: http://nlp.stanford.edu/IR-book/html/htmledition/stemming-and-lemmatization-1.html
O objetivo da derivação e da lematização é reduzir as formas flexionadas e, às vezes, derivadas de uma palavra para uma forma básica comum.
No entanto, as duas palavras diferem em seu sabor. O stemming geralmente se refere a um processo heurístico bruto que corta o final das palavras na esperança de atingir esse objetivo corretamente na maioria das vezes, e geralmente inclui a remoção de afixos derivativos. A lematização geralmente se refere a fazer as coisas corretamente com o uso de uma análise de vocabulário e morfologia das palavras, normalmente com o objetivo de remover apenas terminações flexionadas e retornar a forma básica ou de dicionário de uma palavra, conhecida como lema.
Nos documentos do NLTK:
Lematização e stemming são casos especiais de normalização. Eles identificam um representante canônico para um conjunto de formas de palavras relacionadas.
A lematização está intimamente relacionada à derivação . A diferença é que um derivador opera em uma única palavra sem conhecimento do contexto e, portanto, não pode discriminar entre palavras que têm significados diferentes, dependendo de parte da fala. No entanto, os stemmers geralmente são mais fáceis de implementar e executar mais rapidamente, e a precisão reduzida pode não ser importante para algumas aplicações.
Por exemplo:
A palavra "melhor" tem "bom" como lema. Este link é perdido ao se originar, pois requer uma pesquisa no dicionário.
A palavra "andar" é a forma básica da palavra "andar" e, portanto, é comparável tanto na derivação quanto na lematização.
A palavra "reunião" pode ser a forma base de um substantivo ou a forma de um verbo ("conhecer"), dependendo do contexto, por exemplo, "em nossa última reunião" ou "Vamos nos encontrar novamente amanhã". Ao contrário do stemming, o lematisização pode, em princípio, selecionar o lema apropriado, dependendo do contexto.
Existem dois aspectos para mostrar suas diferenças:
Um stemmer retornará o radical de uma palavra, que não precisa ser idêntico à raiz morfológica da palavra. Geralmente, basta que as palavras relacionadas sejam mapeadas para o mesmo radical, mesmo que o radical não seja em si uma raiz válida, enquanto no lematismo , ele retornará a forma de dicionário de uma palavra, que deve ser uma palavra válida.
Na lematização , a parte do discurso de uma palavra deve ser determinada primeiro e as regras de normalização serão diferentes para diferentes partes do discurso, enquanto o derivador opera em uma única palavra sem o conhecimento do contexto e, portanto, não pode discriminar entre palavras com diferentes significados dependendo de parte do discurso.
Referência http://textminingonline.com/dive-into-nltk-part-iv-stemming-and-lemmatization
O objetivo da derivação e da lematização é reduzir a variação morfológica. Isso contrasta com os procedimentos mais gerais de "conflação de termos", que também podem abordar variações léxico-semânticas, sintáticas ou ortográficas.
A diferença real entre derivação e lematização é tríplice:
O stemming reduz as formas de palavras a (pseudo) hastes, enquanto a lematização reduz as formas de palavras a lemas válidos linguisticamente. Essa diferença é aparente em idiomas com morfologia mais complexa, mas pode ser irrelevante para muitas aplicações de RI;
A lematização lida apenas com a variação flexional, enquanto a derivação também pode lidar com a variação derivacional;
Em termos de implementação, a lematização é geralmente mais sofisticada (especialmente para linguagens morfologicamente complexas) e geralmente requer algum tipo de léxico. Por outro lado, a obtenção satisfatória pode ser alcançada com abordagens bastante simples baseadas em regras.
A lematização também pode ser apoiada por um marcador de parte da fala para desambiguar homônimos.
Como MYYN apontou, stemming é o processo de remover afixos flexionados e, às vezes, derivativos para uma forma básica com a qual todas as palavras originais provavelmente estão relacionadas. A lematização está relacionada à obtenção da palavra única que permite agrupar várias formas flexionadas. Isso é mais difícil do que derivar, porque exige levar em conta o contexto (e, portanto, o significado da palavra), enquanto ignora o contexto.
Quanto a quando você usaria um ou outro, é uma questão de quanto o seu aplicativo depende da obtenção correta do significado de uma palavra no contexto. Se você estiver fazendo tradução automática, provavelmente desejará que a lematização evite a tradução incorreta de uma palavra. Se estiver recuperando informações em mais de um bilhão de documentos, com 99% das suas consultas variando de 1 a 3 palavras, você pode se contentar com a stemming.
Quanto ao NLTK, o WordNetLemmatizer usa a parte da fala, embora você precise fornecê-la (caso contrário, o padrão é substantivos). Passá-lo "pomba" e "v" produz "mergulho" enquanto "pomba" e "n" produz "pomba".
Uma explicação orientada a exemplo sobre as diferenças entre lematização e derivação:
A lematização lida com a correspondência "carro" para "carros", juntamente com a correspondência "carro" para "automóvel".
A haste manipula a correspondência entre "carro" e "carros" .
A lematização implica em um escopo mais amplo de correspondência de palavras difusas que ainda é tratada pelos mesmos subsistemas. Implica certas técnicas para processamento de baixo nível dentro do mecanismo e também pode refletir uma preferência de engenharia por terminologia.
[...] Tomando o FAST como exemplo, seu mecanismo de lematização lida não apenas com variações básicas de palavras como singular versus plural, mas também com operadores de tesauro como "quente" e "quente".
Isso não quer dizer que outros mecanismos não lidam com sinônimos, é claro que sim, mas a implementação de baixo nível pode estar em um subsistema diferente daqueles que lidam com a base.
ianacl,
mas acho que Stemming é um hack áspero que as pessoas usam para obter todas as formas diferentes da mesma palavra em uma forma básica que não precisa ser uma palavra legítima por si só
Algo como o Porter Stemmer pode usar expressões simples para eliminar sufixos de palavras comuns
A lematização reduz a palavra à sua forma base real que, no caso de verbos irregulares, pode se parecer com a palavra de entrada
Algo como Morpha, que usa FSTs para trazer substantivos e verbos à sua forma base
O caule apenas remove ou origina os últimos caracteres de uma palavra, geralmente levando a significados e ortografia incorretos. A lematização considera o contexto e converte a palavra em sua forma básica significativa, chamada lema. Às vezes, a mesma palavra pode ter vários lemas diferentes. Devemos identificar a tag Part of Speech (POS) da palavra nesse contexto específico. Aqui estão os exemplos para ilustrar todas as diferenças e casos de uso:
Stemming é o processo de remover os últimos caracteres de uma determinada palavra, para obter uma forma mais curta, mesmo que essa forma não tenha nenhum significado.
Exemplos,
"beautiful" -> "beauti"
"corpora" -> "corpora"
O caule pode ser feito muito rapidamente.
A lematização, por outro lado, é o processo de conversão da palavra dada em sua forma base, de acordo com o significado da palavra no dicionário.
Exemplos,
"beautiful" -> "beauty"
"corpora" -> "corpus"
A lematização leva mais tempo do que a resultante.