2010-09-21 12 views
10

Sto creando un'applicazione in .NET.Generatore di frasi usando il Thesaurus

Ho ricevuto il nome dell'applicazione in esecuzione http://www.spinnerchief.com/. Ha fatto ciò di cui avevo bisogno, ma non ho ricevuto aiuto da Google. Ho bisogno di risultati funzionali per la mia applicazione, in cui gli utenti possono dare una frase e quindi l'utente può ottenere la stessa frase, ma averla formulata in modo diverso.

Ecco un esempio di voglio che voglio.

Supponiamo di mettere una frase che è "Pankaj è un brav'uomo". L'output dovrebbe essere simile al seguente:

Pankaj è una persona eccezionale.
Pankaj è un uomo eccezionale.
Pankaj è un ragazzo accettabile.
Pankaj è un tipo meraviglioso.
Pankaj è un maschio superbo.
Pankaj è un brav'uomo.
Pankaj è uno splendido gentiluomo

+1

+1 per un modo intelligente per far sì che gli occhiali di protezione ti sembrino davvero fantastici quando ti togli la maschera! –

risposta

-3

Io non so niente di .Net, ma si dovrebbe considerare di usare una funzione di dizionario (sono sicuro che ci sia uno, o per lo meno una libreria che semplifica il processo di se non c'è).

Quindi, dovresti passare attraverso la stringa e pronunciare parole come "è" o "a". Solo prendendo le parole per cui vuoi avere sinonimi.

Dopo questo, è piuttosto semplice avere un ciclo che sputa le frasi.

Buona fortuna.

+1

Cosa intendi per funzione del dizionario? –

7

Per eseguire correttamente questa operazione per qualsiasi frase arbitraria, è necessario eseguire l'analisi del linguaggio naturale della frase sorgente. Si consiglia di esaminare il SharpNLP library - è una libreria gratuita di strumenti di elaborazione del linguaggio naturale per C# /. NET.

Se stai cercando un approccio più semplice, devi essere disposto a sacrificare la correttezza in una certa misura. Ad esempio, è possibile creare un dizionario di parole trigger che, quando appaiono in una frase, vengono sostituite con sinonimi di un thesaurus. Il problema con questo approccio è assicurarsi di sostituire una parola con una parte equivalente del parlato. In inglese, è possibile che alcune parole siano diverse parti del discorso (verbo, aggettivo, avverbio, ecc.) In base al loro uso contestuale in una frase.

Un'ulteriore considerazione da affrontare (se non si sta utilizzando una libreria NLP) è derivata. Nella maggior parte delle lingue, alcune parti del discorso sono coniugate/modificate (verbi in inglese) in base al soggetto a cui si applicano (o all'oggetto, al relatore o al tempo della frase).

Se tutto ciò che si vuole fare è sostituire gli aggettivi (come nel tuo esempio) l'approccio all'uso delle parole trigger può funzionare - ma non sarà prontamente estensibile. Prima di fare qualsiasi cosa, ti suggerirei di definire chiaramente i requisiti e le regole per il tuo dominio problematico ... e usarlo per decidere quale percorso intraprendere.

3

Per questo, la cosa migliore da usare è WordNet e si tratta di relazioni hyponym/hypernym. Esiste una libreria WordNet .Net. Per ogni parola che vuoi alternare, puoi ottenere il suo hypernym (cioè per persona, un hypernym significa "la persona è un tipo di ...") o l'iponimo ("X è un tipo di persona"). Quindi basta sostituire la parola che stai alternando.

Volete essere sicuri di avere la corretta parte del discorso (es. Sostantivo, aggettivo, verbo ...) e c'è anche il problema dei sensi, che può introdurre alcune alterazioni indesiderate (il senso # 1 è il più comune).

Problemi correlati