Come posso estrarre parole da una frase e determinare quale parte del discorso è ciascuna? [chiuso]

19

Voglio scrivere qualcosa che prende una frase e identifica ogni parola che contiene e definisce quale parte del discorso è ogni parola.

Ad esempio

Hello World, I am a sentence

restituirebbe questo

verb noun, pronoun verb adjective noun

Idealmente, mi piacerebbe alla fine fare un passo in più e prendere una frase e farla a livello di programmazione per capire cosa sta cercando di interpretare e magari fare qualcosa al riguardo.

Quindi la mia domanda è, qualcuno ha sentito di qualcosa di simile?

    
posta Vinny 07.02.2012 - 18:58
fonte

4 risposte

18

Questo è chiamato Natural Language Processing ed è un campo enorme e complesso. Qualcosa come descrivi è un risultato monumentale, e anche le migliori soluzioni, come Watson , non sono affatto perfette .

Cose come questa lo rendono difficile: "Bufalo bufalo Bufalo bufalo bufalo Bufalo bufalo"

a grammatically correct sentence in American English, used as an example of how homonyms and homophones can be used to create complicated linguistic constructs. It has been discussed in literature since 1972... It was also featured in Steven Pinker's 1994 book The Language Instinct as an example of a sentence that is "seemingly nonsensical" but grammatical...

The sentence's meaning becomes clearer when it's understood that it uses the city of Buffalo, New York and the somewhat-uncommon verb "to buffalo" (meaning "to bully or intimidate"), and when the punctuation and grammar is expanded so that the sentence reads as follows: "Buffalo buffalo that Buffalo buffalo buffalo, buffalo Buffalo buffalo." The meaning becomes even clearer when synonyms are used: "Buffalo bison that other Buffalo bison bully, themselves bully Buffalo bison."

    
risposta data 07.02.2012 - 19:22
fonte
6

Anche se dividere una frase e determinare la correttezza grammaticale e risolvere il tuo primo problema è più facile del tuo secondo problema, molte complessità come i verbi o i gerundi come il nuoto, la programmazione, ecc. e altre complicazioni simili, è ancora una sfida - Vedi la risposta di Morons.

Ma il tuo secondo problema - le persone hanno compiuto enormi sforzi per trovare una soluzione perfetta, ma un algoritmo di "interpretazione" davvero perfetto non è realizzabile praticamente per nessun linguaggio naturale come l'inglese - ci sono variazioni che saranno rovina il tuo algoritmo. Questo campo - un ibrido tra intelligenza artificiale, informatica e linguistica è noto come PNL . Considera questo: anche Google Translate non è perfetto quando si "interpretano" le frasi.

Tuttavia, questo è un campo molto interessante con cui dilettarsi.

    
risposta data 07.02.2012 - 19:25
fonte
4

Penso che dovresti iniziare a leggere questo articolo di Wikipedia:

link

(è un campo di ricerca, non aspettarti alcuna soluzione facile per questo.)

    
risposta data 07.02.2012 - 19:24
fonte
-1

Un modo economico per farlo sarebbe quello di creare un database del dizionario (sono quasi certo che qualcuno lo abbia fatto).

Sono necessari due campi nella tabella: word e usage

Trasforma la frase in una serie di stringhe, (ogni parola è una stringa) e indipendentemente:

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

È una soluzione pesante, ma che ho usato in passato.

    
risposta data 28.05.2013 - 18:54
fonte

Leggi altre domande sui tag