Quali sono i buoni punti di partenza per qualcuno interessato all'elaborazione del linguaggio naturale? [chiuso]

StackOverflow https://stackoverflow.com/questions/212219

  •  03-07-2019
  •  | 
  •  

Domanda

Domanda

Quindi di recente ho escogitato alcuni nuovi possibili progetti che avrebbero dovuto affrontare il "significato" derivante dal testo inviato e generato dagli utenti.

Elaborazione del linguaggio naturale è il campo che affronta questo tipo di problemi, e dopo alcuni ricerca iniziale Ho trovato OpenNLP Hub e collaborazioni universitarie come il tentativo di progetto . E stackoverflow ha questo .

Se qualcuno potesse collegarmi ad alcune buone risorse, da documenti di ricerca e testi introduttivi ad apis, sarei più felice di un bambino di 6 anni che apre i suoi regali di Natale!

Aggiornamento

Attraverso uno dei tuoi consigli ho trovato opencyc ( 'il più grande e il più base di conoscenza generale completa e motore di ragionamento di buon senso "). Ancora più sorprendente, c'è un progetto che è una versione distillata di opencyc chiamato UMBEL . Include dati semantici nella sintassi rdf / owl / skos n3.

Mi sono anche imbattuto in antlr , un generatore di parser per "costruire riconoscitori, interpreti, compilatori e traduttori dalle descrizioni grammaticali ".

E c'è una mia domanda qui, che elenca tonnellate di dati liberi e aperti .

Grazie alla community di StackOverflow!

È stato utile?

Soluzione

Chiamata difficile, la PNL è un campo molto più ampio di quanto la maggior parte della gente pensi che sia. Fondamentalmente, la lingua può essere suddivisa in diverse categorie, il che richiederà di imparare cose completamente diverse.

Prima di iniziare, lascia che ti dica che dubito che avrai un notevole successo (almeno come professionista) senza una laurea in un campo (strettamente correlato). C'è molta teoria coinvolta, la maggior parte è roba secca e difficile da imparare. Avrai bisogno di molta resistenza e soprattutto: tempo.

Se sei interessato al significato del testo, beh, questa è la prossima grande cosa. Si prevede che i motori di ricerca semantici avviino il Web 3.0, ma non siamo ancora "lì". L'estrazione della logica da un testo dipende da diversi passaggi:

  • Tokenization, Chunking
  • Disambiguazione a livello lessicale (Il tempo vola come una freccia, ma la frutta vola come una banana.)
  • Analisi sintattica
  • Analisi morfologiche (tempo, aspetto, caso, numero, quant'altro)

Un piccolo elenco, in cima alla mia testa. C'è di più :-) e molti più dettagli per ogni punto. Ad esempio, quando dico "analisi", che cos'è? Esistono molti diversi algoritmi di analisi e ci sono altrettanti formalismi di analisi. Tra i più potenti ci sono Grammatica adiacente agli alberi e Grammatica della struttura delle frasi guidata dalla testa . Ma entrambi sono poco utilizzati sul campo (per ora). Di solito, avrai a che fare con un approccio generativo semifornito e dovrai condurre tu stesso un'analisi morfologica.

Passare da lì alla semantica è un grande passo. Un'interfaccia di sintassi / semantica dipende sia dal framework semantico sintetico che impiegato, e non esiste ancora un'unica soluzione operativa. Sul lato semantico, c'è la semantica generativa classica, poi c'è Teoria della rappresentazione del discorso , semantica dinamica e molti altri. Anche il formalismo logico su cui si basa tutto non è ancora ben definito. Alcuni sostengono che si dovrebbe usare la logica del primo ordine, ma che a malapena sembra sufficiente; poi c'è la logica intensionale, come usata da Montague, ma sembra eccessivamente complessa e computazionalmente impossibile. C'è anche una logica dinamica (Groenendijk e Stokhof hanno aperto la strada a queste cose. Grandi cose!) E molto recentemente, quest'estate in realtà, Jeroen Groenendijk ha presentato un nuovo formalismo, inquisitore semantica , anche molto interessante.

Se vuoi iniziare a un livello molto semplice, leggi Blackburn and Bos ( 2005) , è roba fantastica e l'introduzione di fatto alla semantica computazionale! Di recente ho esteso il loro sistema per coprire la teoria delle partizioni delle domande (rispondere alle domande è una bestia!), Come proposto da Groenendijk e Stokhof (1982), ma purtroppo la teoria ha una complessità di O (n²) sul dominio degli individui . Nel fare ciò, ho trovato che l'implementazione di B & amp; B era un po ', ehm ... hacker, in alcuni punti. Tuttavia, ti aiuterà davvero, davvero, a immergerti nella semantica computazionale, ed è ancora una vetrina molto impressionante di ciò che può essere fatto. Inoltre, meritano ulteriori punti di forza per l'implementazione di una grammatica stabilita in Pulp Fiction (il film).

E mentre ci sono, prendi Prolog. Molte ricerche sulla semantica computazionale si basano su Prolog. Impara Prolog Now! è una buona introduzione. Posso anche consigliare " The Art of Prolog " e "Prolog Programming in Depth" di Covington e "Elaborazione del linguaggio naturale per programmatori Prolog", il primo dei quali è disponibile gratuitamente online.

Altri suggerimenti

Chomsky è totalmente la fonte sbagliata a cui cercare la PNL (e direbbe lui stesso con enfasi) - vedi: " Metodi statistici e linguistica " di Abney.

Jurafsky e Martin, di cui sopra, è un riferimento standard, ma io stesso preferisco Manning e Schütze . Se prendi sul serio la PNL, probabilmente vorrai leggere entrambi. Sono disponibili video di uno dei corsi di Manning online .

Se passi attraverso Prolog fino al capitolo DCG in Learn Prolog Now! menzionato dal Sig. Dimitrov sopra, avrai un buon inizio nel portare un po 'di semantica nel tuo sistema, dal momento che Prolog ti offre un modo molto semplice di mantenere un database di conoscenze e convinzioni, che può essere aggiornato attraverso la risposta alle domande.

Per quanto riguarda la letteratura, ho una grande raccomandazione per te: esaurire e comprare Elaborazione vocale e linguistica di Jurafsky & amp; Martin. È praticamente il libro sulla PNL (il primo capitolo è disponibile online); usato in un frillion di corsi universitari ma anche molto leggibile per i non linguisti e orientato alla pratica, mentre allo stesso tempo va abbastanza in profondità nei problemi linguistici. Non posso davvero raccomandarlo abbastanza. I capitoli 17, 18 e 21 sembrano essere ciò che stai cercando (14, 15 e 18 nella prima edizione); ti mostrano una semplice notazione lambda che si traduce abbastanza bene in Prolog DCG con funzionalità.

Oh, a proposito, su come ottenere i maestri in linguistica; se ti piace la semantica della NL, preferirei seguire tutti i corsi relativi all'intelligenza artificiale che puoi trovare (anche se qualsiasi corso sulla "semantica linguistica" semplice ", logica, semantica logica, DRT , LFG / HPSG / CCG, analisi NL, teoria linguistica formale, ecc. Non farebbero male ...)

Leggere la letteratura originale di Chomsky non è molto utile; per quanto ne so non ci sono implementazioni attuali che direttamente corrispondono alle sue teorie, tutte le sue cose utili sono praticamente riassunte da altre teorie (e chiunque rimanga vicino ai linguisti per qualsiasi questione di tempo lo farà assorbire la conoscenza di Chomsky per osmosi).

Consiglio vivamente di giocare con NLTK e di leggere Libro NLTK . NLTK è molto potente e facile da utilizzare.

Potresti provare a leggere un po 'su grammatiche strutturate a frase , che è fondamentalmente la matematica dietro molta elaborazione linguistica. In realtà non è così pesante, essendo in gran parte basato sulla teoria degli insiemi e dei grafi. L'ho studiato molte lune fa come parte di un corso di matematica discreto, e credo che ci siano molti buoni riferimenti disponibili in questa fase.

Modifica: non tanto quanto mi aspettassi su google, anche se questo sembra una buona fonte di apprendimento.

Uno dei primi esploratori della PNL è Noam Chomsky; scrisse piccoli libri sull'argomento negli anni '50 e '70. Potresti trovare quella lettura avvincente.

Cycorp ha una breve descrizione di come la loro base di conoscenza Cyc deriva significato dalle frasi.

Utilizzando una vasta base di conoscenze di fatti comuni, il sistema può determinare l'analisi più logica di una frase.

Un punto più semplice per iniziare con i mattoni è lo sguardo alla documentazione di un pacchetto che tenta di farlo. Consiglierei Python [Natural Language Toolkit (NLTK) 1 , in particolare a causa di il loro libro gratuito ben scritto , che è pieno di esempi. Non ti porterà fino a quello che vuoi (che è un problema difficile per l'IA), ma ti darà una buona base. NLTK ha parser, blocchi, grammatiche senza contesto e altro.

Questo è davvero cose difficili. Comincerei ottenendo almeno un Master in Linguistica, e poi lavorando per il mio dottorato in informatica, concentrandomi sulla PNL.

Il problema è che la maggior parte di noi non ha la comprensione della lingua. E senza quella comprensione, è dannatamente difficile implementare una soluzione.

Altri commenti danno alcune letture, che probabilmente vanno bene se vuoi iniziare a giocare con un piccolo sottoinsieme del problema, ma per trovare una soluzione davvero solida, allora non ci sono scorciatoie. È necessario il background accademico in entrambe le discipline.

Un'introduzione leggibile molto piacevole è The Language Instinct di Steven Pinker. Entra nella roba di Chomsky e racconta anche storie interessanti dal punto di vista della biologia evolutiva. Potrebbe valere la pena iniziare con qualcosa del genere prima di immergerti nei documenti di Chomsky e nel lavoro correlato, se non conosci l'argomento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top