Analisi del linguaggio per trovare parole importanti

8

Sto cercando un input e una teoria su come affrontare un argomento lessicale.

Diciamo che ho una collezione di stringhe, che può essere solo una frase o potenzialmente più frasi. Mi piacerebbe analizzare queste stringhe e strappare le parole più importanti, magari con un punteggio che denota la probabilità che la parola sia importante.

Diamo un'occhiata ad alcuni esempi di cosa intendo.

Esempio 1:

"I really want a Keurig, but I can't afford one!"

Questo è un esempio molto semplice, solo una frase. Come umano, posso facilmente vedere che "Keurig" è la parola più importante qui. Inoltre, "permettersi" è relativamente importante, anche se chiaramente non è il punto principale della frase. La parola "I" appare due volte, ma non è affatto importante dal momento che non ci dice alcuna informazione. Potrei aspettarmi di vedere un hash di parole / punteggi come questo:

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

Esempio n. 2:

"Just had one of the best swimming practices of my life. Hopefully I can maintain my times come the competition. If only I had remembered to take of my non-waterproof watch."

Questo esempio ha più frasi, quindi ci saranno parole più importanti in tutto. Senza ripetere l'esercizio del punto dell'esempio n. 1, probabilmente mi aspetterei di vedere due o tre parole veramente importanti venire fuori da questo: "nuoto" (o "pratica di nuoto"), "competizione", & "guarda" (o "orologio impermeabile" o "orologio non impermeabile" a seconda di come viene gestito il trattino).

Dato un paio di esempi come questo, come faresti per fare qualcosa di simile? Esistono librerie o algoritmi esistenti (open source) in programmazione che già lo fanno?

    
posta Matt Huggins 17.12.2012 - 23:23
fonte

2 risposte

5

Ci sono sicuramente persone che pensano al problema che descrivi. Classifica ed estrazione di singole parole pertinenti nel testo (pdf) è João Ventura e Joaquim Ferreira da Silva una buona introduzione alle tecniche di classificazione esistenti e suggerimenti per il miglioramento. Tutte le tecniche che descrivono si basano su un corpus (un sacco di testo) contro una o due righe di testo. Il tuo corpus dovrebbe essere la raccolta di tutti i campioni o forse di molti corpora di campioni raccolti da fonti specifiche. Tieni presente che la rilevanza di parola singola (unigramma) è un problema irrisolto. Come descrive la carta:

"...using purely statistical methods, this kind of classification isn’t always straightforward or even exact because, although the notion of relevance is a concept easy to understand, normally there's no consensus about the frontier that separates relevance from non-relevance. For instance, words like "Republic" or "London" have significative relevance and words like "or" and "since" have no relevance at all, but what about words like "read", "terminate" and "next"? These kind of words are problematic because usually there’s no consensus about their semantic value."

Ci sono molti strumenti per l'elaborazione della lingua naturale . (Fai attenzione: alcuni strumenti sono gratuiti per la ricerca ma richiedono una licenza commerciale per uso commerciale.) Ti renderanno la vita più facile indipendentemente dall'approccio scelto.

Sono più familiare con Natural Language Toolkit (NLTK) . È facile da usare, ben documentato ed è incluso nel libro Natural Language Processing with Python (disponibile gratuitamente online). Come semplice esempio di ciò che NLTK potrebbe fare per te, immagina di utilizzare il suo tagger di parte del discorso . Con la parte del discorso di ciascuna parola identificata, potresti considerare i nomi propri molto importanti e gli aggettivi in meno. I verbi potrebbero essere importanti e gli avverbi meno così. Non è affatto una classifica all'avanguardia, ma ottieni informazioni utili con poco sforzo. Quando sei pronto per passare a un'analisi più sofisticata, la capacità integrata di tokenize, tag, chunk e classify di NLTK ti consente di concentrarti sugli altri dettagli della tua soluzione.

    
risposta data 19.12.2012 - 22:28
fonte
1

L'elaborazione del linguaggio naturale è la sua disciplina con un sacco di ricerche formali fatte su di esso. Vorrei iniziare guardando lì.

Vorrei anche riconsiderare i miei bisogni. Anche dopo oltre 50 anni di ricerca, i migliori scienziati informatici sono riusciti a trovare Siri. Non mi aspetto che un computer faccia con successo ciò di cui stai parlando con regolarità.

Se ci sono alcune limitazioni al discorso (come Siri supponendo che tu abbia un semplice comando o domanda) può essere migliore. Riconsiderare i miei bisogni (supponendo che abbia bisogno della PNL) includerebbe la definizione dei miei limiti. Dopo di ciò, probabilmente andrei a caccia di un sacco di esempi. In parte per testare qualsiasi cosa mi venga in mente, ma molte soluzioni moderne implicano l'apprendimento automatico. Avrei bisogno di quegli esempi come input per la curva di apprendimento.

Quindi, in sintesi, dubito seriamente che qualcosa sarà in grado di darti dei buoni punteggi in questo tipo di scenario libero dal contesto.

    
risposta data 17.12.2012 - 23:34
fonte

Leggi altre domande sui tag