Como extrair palavras de uma frase e determinar qual é a parte da fala? [fechadas]

19

Quero escrever algo que use uma frase e identifique cada palavra que ela contém e define qual parte do discurso de cada palavra.

Por exemplo

Olá Mundo, eu sou uma frase

retornaria isso

verb noun, pronoun verb adjective noun

Idealmente, eu gostaria de, eventualmente, dar um passo adiante e tomar uma sentença, e fazer com que ele entenda de forma programática o que está tentando interpretar e talvez faça algo a respeito.

Então, minha pergunta é: alguém já ouviu falar de algo assim?

Vinny
fonte
2
"Olá" é um verbo? Quero dizer, não sei mais o que seria, mas não parece um verbo.
21412 Dan Dan Ray
@ DanRay: Talvez essa seja uma pergunta para english.stackexchange.com?
StriplingWarrior
1
@DanRay haha, você vê? É por isso que estou tentando descobrir se algo pode fazer isso, porque aparentemente eu sou péssimo em gramática.
Vinny
@ Vinny - Claro que é possível. O problema é ... essa é a próxima idéia de trilhão de dólares e, no momento, ela ainda não foi transformada em produto.
Ramhound 7/07
1
@ Vinny Sim, alguém já ouviu falar de algo assim.
Tulains Córdova

Respostas:

18

Isso se chama Processamento de linguagem natural e é um campo enorme e complexo. Algo como você descreve é ​​uma conquista monumental, e mesmo as melhores soluções, como Watson , nem são perfeitas.

Coisas assim tornam o desafio: "Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo"

uma frase gramaticalmente correta no inglês americano, usada como exemplo de como homônimos e homófonos podem ser usados ​​para criar construções linguísticas complicadas. Foi discutido na literatura desde 1972 ... Também foi apresentado no livro de Steven Pinker, em 1994 The Language Instinct, como um exemplo de frase "aparentemente sem sentido", mas gramatical ...

O significado da frase fica mais claro quando se entende que ela usa a cidade de Buffalo, Nova York, e o verbo um tanto incomum "to buffalo" (que significa "intimidar ou intimidar"), e quando a pontuação e a gramática são expandidas para que a frase diz o seguinte: "Búfalo de búfalo que búfalo de búfalo, búfalo de búfalo". O significado fica ainda mais claro quando sinônimos são usados: "Bisão de búfalo que outros bisões de búfalo intimidam, eles mesmos intimidam bisão de búfalo".

Ryathal
fonte
1
É isso que estou procurando! Alguém já ouviu falar de alguém adaptando isso em uma escala menor? Código aberto? Exemplos disso sendo usado em escalas menores?
Vinny
@Vinny AFAIK nada está disponível em código aberto, pois a solução desses problemas é altamente lucrativa para as empresas, como a detecção gramatical do MS Word. No entanto, existem alguns programas de conversação e bot disponíveis.
Ryathal 7/07
1
Vinny É dificuldade não tem nada a ver com escala. O processamento de linguagem natural tem uma complexidade inerente que não é reduzida quando você reduz a "escala".
Tulains Córdova
6

Embora dividir uma frase e determinar a correção gramatical, além de resolver o seu primeiro problema, seja mais fácil do que o seu segundo problema, muitas complexidades, como substantivos verbais ou gerúndios, como natação, programação, etc. e outras complexidades, ainda é um desafio. responda.

Mas o segundo problema - as pessoas têm colocado em enormes esforços para encontrar uma solução perfeita, mas um algoritmo realmente perfeito "interpretação" não é realizável praticamente para qualquer linguagem natural como o Inglês - existem variações que vai estragar o seu algoritmo. Este campo - um híbrido entre IA, Ciência da Computação e Linguística é conhecido como PNL . Considere o seguinte: mesmo o Google Translate não é perfeito ao "interpretar" frases.

Mas, no entanto, este é um campo muito interessante para se discutir.

yati sagade
fonte
@StriplingWarrior Eu só queria contrastar suficientemente entre os dois problemas colocados pelo OP. Notado. Edite a caminho
yati sagade
4

Eu acho que você deveria começar a ler este artigo da Wikipedia:

http://en.wikipedia.org/wiki/Part-of-speech_tagging

(é um campo de pesquisa, não espere uma solução fácil para ele.)

Doc Brown
fonte
2
Deve-se acrescentar que, embora a PNL seja enorme, difícil e provavelmente intratável nos computadores atuais, a marcação de POS é a parte mais fácil, e com tamanho de corpus suficiente ou muita dedicação e redação manual de regras, ela pode ser resolvida quase perfeitamente. certamente acima de 99% de correção. Isso pode ser suficiente para suas necessidades.
22712 Kilian Foth
obrigado, é exatamente isso que eu também estava procurando.
Amc_rtty
na verdade, com base na descrição de OP, esta deve ser a resposta aceita como você observar corretamente @KilianFoth
Amc_rtty
-1

Uma maneira barata de fazer isso seria criar um banco de dados do dicionário (tenho quase certeza de que alguém fez isso).

Precisa de dois campos na tabela: wordeusage

Transforme a frase em uma matriz de cadeias (cada palavra sendo uma cadeia) e independentemente:

select 'usage' from Dictionary WHERE 'word' = $word; 

É uma solução pesada, mas que eu usei no passado.

mheinke
fonte
5
Isso pressupõe que cada palavra tenha apenas um POS possível e garanto que esse não é o caso.
microtherion
Concordado - não há como isso funcionar de maneira viável (pelo menos em inglês) com todas as palavras que possam atuar como substantivos, verbos etc., dependendo do contexto.
Derek