2011-09-25 20 views
6

Mi piacerebbe avere una parola (ad esempio "Apple") e elaborare un testo (o forse più). Mi piacerebbe venire con termini correlati.Ad esempio: elaborare un documento per Apple e scoprire che iPod, iPhone, Mac sono termini relativi alla "Apple".Algoritmo per trovare le parole correlate in un testo

Qualche idea su come risolvere questo?

+0

controllo questo fuori: http://semantic-link.com/ –

risposta

9

Come punto di partenza: la tua domanda riguarda text mining.

Esistono due modi: un approccio statistico e un modulo di elaborazione del linguaggio naturale (nlp).

non so molto di PNL, ma può dire qualcosa circa l'approccio statistico:

  1. È necessario qualche rappresentazione spazio vettoriale dei documenti, vedere http://en.wikipedia.org/wiki/Vector_space_model http://en.wikipedia.org/wiki/Document-term_matrix http://en.wikipedia.org/wiki/Tf%E2%80%93idf

  2. Per imparare la semantica, vale a dire: parole diverse significano lo stesso, o una parola può avere significati diversi, è necessario un corpus di testi di grandi dimensioni per l'apprendimento. Come ho detto questo è un approccio statistico, quindi hai bisogno di molti campioni. http://www.daviddlewis.com/resources/testcollections/

    Forse si hanno molti documenti dal contesto che si intende utilizzare. Questa è la situazione migliore.

  3. È necessario recuperare i fattori latenti da questo corpus.Più comuni sono:

    Questi metodi comportano molti matematica. O lo fai, o devi trovare buone librerie.

posso consigliare i seguenti libri:

+0

Per i manichini come me, costruiamo solo una grande matrice di co-occorrenza. Questo ci dice che le parole si verificano insieme ed è in realtà abbastanza decente. Che si tratti di sinonimi e di quel genere di cose ... questa è IA e in realtà non esiste, anche se Hoifung Poon alla UW ha fatto delle ricerche accurate su questa (analisi semantica senza supervisione). – nflacco

2

come tutti di aI, è un problema molto difficile. si dovrebbe guardare in natural language processing

Un approccio molto, molto semplicistico può essere quello di costruire una tabella di parole 2d, con per ogni coppia di parole la distanza media (in wo rds) che compaiono nel testo. Ovviamente dovrai limitare la distanza massima considerata e possibilmente anche il numero di parole. Quindi, dopo aver elaborato un sacco di testo avrai un indicatore di quanto spesso certe parole appaiono nello stesso contesto.

2

Quello che vorrei fare è ottenere tutte le parole in un testo e creare una lista di frequenza (con quale frequenza appare ogni parola). Forse anche aggiungere ad esso un fattore euristico su quanto lontano la parola è da "Apple". Quindi leggi più documenti e cancella le parole che non sono comuni in tutti i documenti. Quindi stabilire la priorità in base alla frequenza e alla distanza dalla parola chiave. Ovviamente, otterrete molta spazzatura e forse mancherete alcune parole rilevanti, ma regolando l'euristica dovreste ottenere almeno alcune partite decenti.

+0

pensare di più a questo proposito, dovresti anche dargli da mangiare alcuni testi che non sono correlati a "Apple" ed escludere le parole che appaiono in quei testi. Questo eliminerà le parole comuni come "il", "di", ecc. – Radu

1

La tecnica che stai cercando si chiama Latent Semantic Analysis (LSA). A volte è anche chiamato Indicizzazione semantica latente. La tecnica opera sull'idea che i concetti correlati si verificano insieme nel testo. Usa le statistiche per costruire le relazioni verbali. Dato un corpus di documenti abbastanza grande, risolverà sicuramente il tuo problema di trovare parole correlate.

Problemi correlati