Puoi ottenere qualcosa di correlato, forse, come questo. Ed è collegato al tavolo. E non Pro.
Grafico delle costellazioni dal clustering
// load some documents that might separate into some categories
dt1 = Open( "f:/gutenberg/books5000.jmp" ); // 5000 is too many, subset 36...
dt1 << selectwhere( Starts With( Loc Class, "D501" ) | Starts With( Loc Class, "TX:" ) | Starts With( Loc Class, "Q" ) | Starts With( Loc Class, "P" ) );
dt2 = dt1 << subset( selected rows( 1 ) );
Close( dt1, nosave );
originalnames = dt2 << getColumnNames();
te = dt2 << Text Explorer(
Text Columns( :text ), // the entire document is in one cell of the row
Add Stop Words(
{"agreement", "almost", "another", "company", "copyright holder", "electronic", "foundation", "gutenberg", "literary archive", "little",
"person or entity", "project", "public domain", "research", "without"}
),
Minimum Characters per Word( 6 ),
Stemming( "Stem for Combining" ),
Language( "English" )
);
te << savedocumenttermmatrix( Maximum Number of Terms( 300 ), Minimum Term Frequency( 25 ), Weighting( "TF IDF" ) );//BINARY would use ALL rather than !any, below
te << closewindow;
// remove all-connected columns
allnames = dt2 << getColumnNames();
For( iname = N Items( allnames ), iname > N Items( originalnames ), iname -= 1,
If( !Any( dt2[0, iname] ),
dt2 << deletecolumns( iname )
)
);
allnames = dt2 << getColumnNames();
cols = (N Items( originalnames ) + 1) :: N Items( allnames );
dt2 << Hierarchical Cluster( Y( allnames[cols] ),
Label( Transform Column( "Label", Character, Formula( Left( left(LoC Class,4)||:Subject||:Title, 20 ) ) ) ), // build your own identifier here
Method( "Ward" ), Standardize Data( 1 ), Dendrogram Scale( "Distance Scale" ),
Number of Clusters( 4 ), Constellation Plot( 1 ), Show Dendrogram( 0 ),
SendToReport(Dispatch({"Constellation Plot"},"Clust Hier",FrameBox,{Frame Size( 1056, 716 )}))
);Ciao Craige,
È brillante! Non sono un mago di JSL, ma ho funzionato con i miei dati. L'unica cosa che non riesco a capire come fare è creare un identificatore di etichetta che utilizzi i nomi delle colonne per i termini nella matrice dei termini del documento. La matrice dei termini del mio documento ha 252 colonne. Ogni nome di colonna viene formattato automaticamente con i termini valore con radice e il suffisso TF IDF2. Ad esempio, una colonna è denominata "distribut · TF IDF 2" un'altra è denominata "montagna · TF IDF 2". Vorrei che le etichette dei punti della costellazione fossero il termine con la radice, senza il suffisso (ad esempio, distribut · o mountain ·). Esiste un modo semplice per utilizzare i valori dai nomi delle colonne della matrice dei termini del documento come etichette di punti?
Grazie mille per aver fornito questo script.
Casey
Non sono sicuro; Penso che per ogni riga vorresti le 3 o 4 parole più importanti (nomi di colonna) per quella riga, e potrebbero essere quelle con il valore più grande. Sembra giusto quando guardi alcune righe? In tal caso, creare quella colonna di etichette non sarebbe un passaggio di pre-elaborazione.
Usare una riga alla volta potrebbe non essere la risposta giusta; quella non dovrà essere una parola comune con i vicini nel diagramma. A meno che due vicini spaziali non condividano alcune parole.
Ciao Craige,
Mi sono appena reso conto che lo script che hai inviato utilizza valori in un DTM per creare gruppi di documenti basati su usi simili di termini tra i documenti. In questo caso, ogni nodo rappresenta un documento e ogni collegamento si basa su un valore di distanza dall'analisi del cluster. Sto cercando di fare qualcosa di leggermente diverso.
Vorrei creare un grafico a costellazione come questo in cui ogni nodo rappresenta un TERM nel DTM e ogni collegamento si basa su una sorta di statistica che descrive la ricorrenza delle parole chiave. Questo è molto al di fuori della mia esperienza. Mi piace l'idea di una trama del genere, ma non sono sicuro che sarebbe appropriato riformattare il DTM in qualche modo in modo che possa essere eseguita un'analisi del cluster dove i termini finiscono come nodi (o come lo farei). Ciò raggiungerebbe il mio obiettivo di avere un elemento grafico in JMP basato sulla correlazione dei termini che posso utilizzare come filtro globale in una visualizzazione dati interattiva. Tuttavia, questo tipo di end-around creerebbe una grafica che non si basa sulle migliori pratiche di analisi del testo? Per quelli di voi che comprendono questo campo, questo uso dell'analisi dei cluster sarebbe inappropriato per illustrare la ricorrenza delle parole chiave? In tal caso, qualcuno ha creato qualcosa in grado di eseguire analisi di cooccurrence di parole chiave (utilizzando metodi statistici adeguati per questo tipo di analisi) in JMP?Sono interessato a ricevere feedback dalla comunità su questo. Mi scuso per il fatto che il mio post originale non fosse più chiaro. Craige, userò sicuramente lo script che hai inviato nella tua prima risposta per quando avrò bisogno di raggruppare i documenti! Grazie.
Aggiungendo solo a @Craige_Hales 'aiuto che puoi usare Latent Class Analysis per raggruppare righe (documenti) e Latent Semantic Analysis per raggruppare colonne (termini). Queste piattaforme sono disponibili in Analizza> Metodi multivariati. (Sono anche integrati e specializzati per Text Explorer in JMP Pro.) Vedere la documentazione di JMP ...
L'idea è che JMP abbia molte piattaforme potenti che funzionano insieme. La mia analogia è una calcolatrice grafica. Ci sono molti pulsanti e spesso ci vuole più di un pulsante per portare a termine il lavoro. Vale a dire che non esiste un pulsante che "fa tutto", ma puoi arrivarci. È necessario apprendere JMP come primo approccio invece di provare a ricreare un'applicazione personalizzata. Perché reinventare la ruota?
Sono un fedele di JMP dal 1994, quindi sono consapevole dei suoi molti punti di forza e di come diversi problemi possono essere risolti attraverso percorsi diversi (questa è solo una delle cose che mi piace di questo). Inizio sempre con JMP. La mia comunità professionale è dominata dagli utenti R. Possono fare tutti i tipi di analisi, ma la capacità di R di creare visualizzazioni interattive dei dati (cosa mia) non è nemmeno allo stesso livello di JMP. Quindi, rimango con JMP. Tuttavia, con l'evolversi dei metodi statistici, una percentuale maggiore di analisi più recenti è possibile solo tramite R o JMP Pro, ma non utilizzando una licenza JMP standard (ad esempio, varie piattaforme di analisi del testo, procedure di selezione del modello di base che sono prassi standard nel mio campo ). Ciò rende più difficile per me eseguire analisi olistiche dall'inizio alla fine in JMP. Mentre JMP Pro e JMP standard si allontanano sempre di più, mi ritrovo a consultare la comunità per possibili soluzioni ai miei problemi che posso ottenere con una licenza JMP standard.Il post di Craige è stato un ottimo esempio della comunità che mi ha aiutato a trovare un modo per raggruppare i documenti utilizzando un DTM in JMP standard. Il mio post più recente ha chiesto se esiste una soluzione simile che potrebbe essere possibile per raggruppare i termini utilizzando un DTM in JMP standard.
In questo caso specifico, sto cercando di incorporare un grafico di rete di ricorrenza di parole chiave in una visualizzazione interattiva esistente che ho creato in JMP standard.Non credo di provare a reinventare la ruota. Penso di imbattermi in un muro di funzionalità nella licenza JMP standard (forse) o in una mancanza di conoscenza / creatività da parte mia su come ottenerlo (più probabile).Non posso permettermi JMP Pro. Questa è la mia realtà e non vedo che cambierà presto. Entrambe le piattaforme Latent Class Analysis e Latent Semantic Analysis che hai menzionato sono disponibili solo in JMP Pro. Quando pongo domande sulle funzionalità della licenza JMP standard e ricevo risposte che mi dicono che posso fare qualcosa solo in JMP Pro, non mi aiuta davvero. Sono felice se le mie domande aiutano a risolvere i problemi per gli utenti di JMP Pro, ma mi rimane ancora il problema originale di provare a fare qualcosa in JMP standard che richiede più creatività e conoscenza (due qualità sorprendenti della comunità di utenti di JMP) rispetto a Possiedo da solo.
Sono grato per JMP, per il personale di supporto tecnico di JMP (che è fantastico) e per questa comunità di utenti. Fino a quando il mio budget non diventerà molto più grande di quanto non sia mai stato, probabilmente continuerò a fare domande qui sui modi creativi per fare le cose utilizzando una licenza JMP standard (che a volte potrebbe essere eccessiva). Sono d'accordo con Mark sul fatto che bisogna prima imparare JMP (cosa che mi piace fare da oltre 25 anni). Tuttavia, a volte faccio fatica a capire come soddisfare le mie esigenze di analisi e visualizzazione in espansione con una licenza JMP standard. Spero ancora che esista un modo legittimo per utilizzare un JMP standard per creare un diagramma di rete di ricorrenza di parole chiave per raggruppare termini che hanno piena interattività e possono essere salvati come script di tabella JMP. Non so come farlo. Dato il mio normale processo di lettura della documentazione di JMP, ricerca dei post della community di JMP e solo sperimentazione da solo, non sono stato in grado di capire come farlo. Se non può essere fatto senza una licenza JMP Pro, lo lascerò andare alla deriva e lascerò questo tipo di grafico fuori dalla mia visualizzazione.
Ci scusiamo per la lunga risposta. Se qualcuno di JMP vuole valutare alcune strategie su come cavarsela con JMP standard quando non puoi permetterti JMP Pro, mi piacerebbe un consiglio (sembra un buon argomento del blog). Forse non è un argomento per questo forum di discussione. Mi scuso se non lo è. Non esitate a contattarmi offline a caseylott@ymail.com se qualcuno ha suggerimenti per questo.