Come posso esprimere relazioni sottili nei miei dati?


20

"A" è correlato a "B" e "C". Come faccio a dimostrare che anche "B" e "C" potrebbero essere correlati in questo contesto?

Esempio:

Ecco alcuni titoli su un recente spettacolo di Broadway:

  1. Glengarry Glen Ross di David Mamet, con Al Pacino, si apre a Broadway
  2. Al Pacino in "Glengarry Glen Ross": cosa hanno pensato i critici?
  3. Al Pacino guadagna recensioni poco brillanti per il turno di Broadway
  4. Rassegna teatrale: Glengarry Glen Ross sta vendendo le sue stelle duramente
  5. Glengarry Glen Ross; Ehi, chi ha ucciso le luci di Klieg?

Problema:

L'esecuzione di una corrispondenza di stringa fuzzy su questi record stabilirà alcune relazioni, ma non altre, anche se un lettore umano potrebbe sceglierle dal contesto in set di dati molto più grandi.

Come trovo la relazione che suggerisce che il n. 3 è correlato al n. 4? Entrambi possono essere facilmente collegati al n. 1, ma non tra loro.

Esiste un nome (googlabile) per questo tipo di dati o struttura? Che tipo di algoritmo sto cercando?

Obbiettivo:

Dati 1.000 titoli, un sistema che suggerisce automaticamente che questi 5 elementi sono probabilmente tutti sulla stessa cosa.

Ad essere onesti, è da tanto tempo che non ho programmato che non so come articolare correttamente questo problema. (Non so cosa non so, se questo ha senso).

Questo è un progetto personale e lo sto scrivendo in Python. Grazie in anticipo per qualsiasi aiuto, consiglio e suggerimenti!


1
suona come l'analisi del linguaggio naturale e / o qualche altra tecnica probabilistica è richiesta
jk.

2
Questa è un'ottima domanda!
Michael Brown,

Penso di aver visto sistemi che possono farlo implementati in Prolog.
FrustratedWithFormsDesigner il

1
@FrustratedWithFormsDesigner Sospetto che stai pensando all'unificazione nella programmazione logica ..?
Izkata,

Risposte:


14

Si chiama analisi dei cluster , che fondamentalmente raggruppa gli oggetti in cluster con proprietà simili. È un argomento enorme, ma questo dovrebbe darti un punto di partenza.


7

Stai entrando nel mondo della semantica. Ci sono servizi pubblici che analizzeranno il testo e tireranno fuori i concetti principali (una rapida ricerca dell'API Semantica mostrata in pochi) che analizzerà un documento in formato libero e restituirà i principali argomenti incontrati tra cui persone, luoghi, cose, date e concetti . Alcuni dei migliori torneranno in un formato noto come [RDF]

Se vuoi costruire il tuo sistema in grado di farlo, il campo è Natural Language Processing ed è una tana di coniglio molto intrigante da immergere.


4

Se possibile, raccogli la storia insieme al titolo. A volte i titoli possono diventare "carini" e fare solo riferimento tangenziale a ciò che viene discusso. Funziona bene con gli umani (perché hanno un contesto globale ), ma non così bene con la PNL.

Come menzionato nella risposta di Karl Bielefeldt, il raggruppamento è un buon approccio, ma il Diavolo è nei dettagli. Non devi solo scegliere un approccio di clustering che si adatti al tuo problema / spazio utente, ma devi anche capire cosa viene raggruppato.

Il mio background è in Information Retrieval (IR) degli anni '80 -'90 e ci siamo concentrati sulla ricerca di somiglianza e sul clustering basato su centroidi . I nostri documenti sono stati rappresentati da vettori di attributi ponderati , che è sostanzialmente un elenco di termini e la loro relativa importanza nel documento. Questo approccio può funzionare (anche se meglio con alcune raccolte rispetto ad altri), ma ha problemi con titoli carini, perché mancano dei termini del vocabolario chiave per legare le cose. Ma se si utilizza l'intero documento, si ottiene un elenco di termini molto più ricco (e probabilmente un migliore senso di importanza), e tale elenco di termini probabilmente renderà più facile individuare la connessione (cioè calcolare) quando si hanno titoli che sono "carino".

La mia email è nel mio profilo se vuoi entrare in problemi di generazione vettoriale, ecc.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.