2013-02-13 11 views
7

Python fornisce la libreria NLTK che è una vasta risorsa di testo e corpus, insieme a un gran numero di metodi di estrazione e di elaborazione del testo. C'è un modo per confrontare le frasi in base al significato che trasmettono per una possibile corrispondenza? Cioè, un matcher intelligente frase?Confronto di frasi in base al loro significato

Per esempio, una frase come giggling at bad jokes e I like to laugh myself silly at poor jokes. Entrambi trasmettono lo stesso significato, ma le frasi non corrispondono a distanza (le parole sono diverse, Levenstein Distance fallirebbe male!).

Ora immaginiamo di avere un'API che espone funzionalità quali trovate here. In base a ciò, abbiamo meccanismi per scoprire che la parola giggle e laugh corrispondono al significato che trasmettono. Bad non corrisponderanno a poor, quindi può essere necessario aggiungere ulteriori strati (come corrispondono nel contesto di parole come joke, poiché bad joke è generalmente uguale poor joke, anche se bad person non corrisponde a poor person!).

Una sfida importante sarebbe quella di scartare cose che non alterano molto il significato della frase. Quindi, l'algoritmo deve restituire lo stesso grado di matchness tra la prima frase e questo: I like to laugh myself silly at poor jokes, even though they are completely senseless, full of crap and serious chances of heart-attack!

Così, con quella disponibile, c'è qualche algoritmo come questo che è stato ancora concepito? O devo inventare la ruota?

+0

Ho esaminato questo un paio di settimane fa. Non sono un esperto di NLTK, ma penso che dovrai inventare la ruota o trovare una corrispondenza sfocata che sia stata costruita su NLTK. Non sono riuscito a trovare una soluzione, ma sospetto che ci sia qualcosa là fuori. Stavo cercando di abilitare la classificazione automatica delle risposte di testo in formato libero per rivedere le domande per la preparazione del test. Pubblica un aggiornamento se trovi qualcosa. – jimhark

+0

Sicuro. Andrà bene. Stavo pensando ad un algo basato sul grafico, sarebbe uguale a fare questo? – SexyBeast

+0

Ragazzi, prima di fare downvoting con entusiasmo o votare per la chiusura, almeno dare una spiegazione. Solo perché è anonimo e chiunque può fare qualsiasi cosa, non avere la mano alta .. – SexyBeast

risposta

4

Avrete bisogno di un algoritmo di modellazione argomento più avanzato e, naturalmente, di alcuni corpora per addestrare il vostro modello, in modo da poter facilmente gestire sinonimi come ridacchiare e ridere!

In python, puoi provare questo pacchetto: http://radimrehurek.com/gensim/ Non l'ho mai usato ma include i classici metodi di spazi vettoriali semantici come lsa/lsi, proiezione casuale e persino lda.

Il mio preferito è la proiezione casuale, perché è più veloce e comunque molto efficiente (lo sto facendo in java con un'altra libreria).

Problemi correlati