Análise de idioma para encontrar palavras importantes


9

Estou procurando informações e teorias sobre como abordar um tópico lexical.

Digamos que eu tenha uma coleção de strings, que podem ser apenas uma sentença ou potencialmente várias sentenças. Eu gostaria de analisar essas strings e extrair as palavras mais importantes, talvez com uma pontuação que indique a probabilidade da palavra ser importante.

Vejamos alguns exemplos do que quero dizer.

Exemplo 1:

"Eu realmente quero um Keurig, mas não posso pagar um!"

Este é um exemplo muito básico, apenas uma frase. Como humano, posso ver facilmente que "Keurig" é a palavra mais importante aqui. Além disso, "pagar" é relativamente importante, embora claramente não seja o ponto principal da frase. A palavra "eu" aparece duas vezes, mas não é importante, pois não nos informa nenhuma informação. Eu poderia esperar ver um hash de palavras / pontuações mais ou menos assim:

"Keurig" => 0.9
"afford" => 0.4
"want"   => 0.2
"really" => 0.1
etc...

Exemplo 2:

"Acabei de ter uma das melhores práticas de natação da minha vida. Espero que eu possa manter meus tempos na competição. Se ao menos eu tivesse lembrado de pegar meu relógio não à prova d'água".

Este exemplo possui várias frases, portanto, haverá palavras mais importantes por toda parte. Sem repetir o exercício pontual do exemplo 1, eu provavelmente esperaria ver duas ou três palavras realmente importantes: "natação" (ou "prática de natação"), "competição" e "relógio" (ou "impermeável") assistir "ou" relógio não impermeável ", dependendo de como o hífen é tratado).

Dado alguns exemplos como este, como você faria algo semelhante? Existem bibliotecas ou algoritmos (de código aberto) existentes na programação que já fazem isso?


Além disso, esta é minha primeira publicação em programmers.stackexchange.com. Desculpas se este é o lugar errado e pertence ao StackOverflow ou outro site SE. É um prazer mudar a pergunta, se necessário.
precisa

Não entendo da pergunta o que você está tentando realizar. Para o primeiro exemplo em particular, as palavras "Keurig" e "affordable" podem ser identificadas por uma simples verificação estatística: entre as palavras da frase, essas duas palavras são menos comuns em inglês do que as outras. Portanto, se você tivesse um banco de dados de frequências de palavras, poderia identificá-las facilmente.
Qwertie

Respostas:


5

Definitivamente, existem pessoas pensando no problema que você descreve. O ranking e a extração de palavras únicas relevantes no texto de João Ventura e Joaquim Ferreira da Silva (pdf) são uma boa introdução às técnicas de classificação existentes, bem como sugestões de aprimoramento. Todas as técnicas descritas descrevem um corpus (muito texto) versus uma ou duas linhas de texto. Seu corpus teria que ser a coleta de todas as amostras ou possivelmente muitos corpora de amostras coletadas de fontes específicas. Lembre-se de que a relevância de uma única palavra (unigrama) é um problema não resolvido. Como o artigo descreve:

"... usando métodos puramente estatísticos, esse tipo de classificação nem sempre é simples ou exato, porque, embora a noção de relevância seja um conceito fácil de entender, normalmente não há consenso sobre a fronteira que separa relevância de não relevância. Por exemplo, palavras como "República" ou "Londres" têm relevância significativa e palavras como "ou" e "uma vez que" não têm relevância alguma, mas e quanto a palavras como "ler", "terminar" e "próximo"? de palavras são problemáticas porque geralmente não há consenso sobre seu valor semântico ".

Existem muitos kits de ferramentas de processamento de linguagem natural de código aberto . (Cuidado. Algumas ferramentas são gratuitas para pesquisa, mas requerem uma licença comercial para uso comercial.) Elas facilitarão sua vida, independentemente da abordagem escolhida.

Estou mais familiarizado com o Natural Language Toolkit (NLTK) . É fácil de usar, bem documentado e é apresentado no livro Natural Language Processing with Python (disponível gratuitamente on-line). Como um exemplo simples do que o NLTK pode fazer por você, imagine usar seu tagger de parte do discurso . Com a parte do discurso de cada palavra identificada, você pode considerar substantivos próprios muito importantes e adjetivos menos. Os verbos podem ser importantes e os advérbios, menos. Não é de forma alguma um ranking de ponta, mas você obtém informações úteis com pouco esforço. Quando você estiver pronto para passar para uma análise mais sofisticada, a capacidade interna do NLTK de tokenizar, marcar, dividir e classificar permitirá que você se concentre nos outros detalhes da sua solução.


1

O processamento de linguagem natural é sua própria disciplina, com bastante pesquisa formal realizada. Eu começaria olhando para lá.

Eu também reconsideraria minhas necessidades. Mesmo após mais de 50 anos de pesquisa, os melhores cientistas da computação conseguiram criar o Siri. Eu não esperaria que um computador fizesse com êxito o que você está falando com regularidade.

Se houver certas limitações no discurso (como a Siri assumindo que você tem um simples comando ou pergunta), pode ser melhor. Reconsiderar minhas necessidades (supondo que eu precise de PNL) incluiria definir minhas limitações. Depois disso, provavelmente caçaria uma tonelada de exemplos. Em parte para testar tudo o que for apresentado, mas muitas soluções modernas envolvem aprendizado de máquina. Eu precisaria desses exemplos como entrada para a curva de aprendizado.

Então, em resumo, duvido seriamente que algo possa lhe dar boas pontuações nesse tipo de cenário livre de contexto.


+1 para a Siri dig ... ou promoção ... #
Aaron McIver
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.