JMP 中的關鍵字共現網路?你好社區! 有誰知道如何在 JMP 中建立關鍵字共現網路圖,該圖可以作為腳本儲存到資料表中,並與其他圖進行互動? 我可以呼叫 R 來製作圖表,但當我將其帶回 JMP 時它是靜態的。 我是標準 JMP 用戶,我希望找到一種不涉及「僅在 JMP Pro 中可用」字樣的解決方案,因為 JMP Pro 授權遠遠超出了我的預算。 預先感謝任何人都可以提供的建議。自動化和腳本編寫回覆:JMP 中的關鍵字共現網路?嗨,克雷格,工作得很有魅力! 謝謝。 我在下面附上了我的圖形。 由於我已將所有語料庫管理步驟儲存為列屬性(重新編碼、短語、停用詞、詞幹異常),因此它們會在腳本執行時自動套用。 我將開始嘗試一些參數,看看它們如何影響結果圖。 我有很多應用程序,這種圖形很有幫助,至少在資料探索階段是這樣,所以我會一遍又一遍地使用這個腳本。 再次感謝您的所有幫助!
凱西
回覆:JMP 中的關鍵字共現網路?很不錯!
Stemming might help combine some of the near-duplicatesStemming might help combine some of the near-duplicates詞幹擷取可能有助於合併一些接近重複的內容
問題似乎是 JMP 15 與 16;您可以建立自己的標籤列:
// load some documents that might separate into some categories
dt1 = Open( "z:/Fully Screened Subset With Abstracts and LatLongs.jmp" ); // 5000 is too many, subset 36...
originalnames = dt1 << getColumnNames();
te = dt1 << Text Explorer(
Text Columns( :AbstractProofed ), // 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", "ebooks", "enough", "though", "rather", "better", "common", "possible",
"weight", "present", "series", "necessary", "placed", "therefore", "towards", "footnote", "something","slowly","around","behind","looking","seemed","nothing",
"probably","called","easily","distributing","paragraph"
}
),
Minimum Characters per Word( 6 ),
Stemming( "no 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 << savedocumenttermmatrix( Maximum Number of Terms( 100 ), Minimum Term Frequency( 25 ), Weighting( "BINARY" ) ); // 0 or 1 if it occurs
te << closewindow;
// remove all-connected columns
allnames = dt1 << getColumnNames();
For( iname = N Items( allnames ), iname > N Items( originalnames ), iname -= 1,
// If( !Any( dt1[0, iname] ),
If( All( dt1[0, iname] ),
dt1 << deletecolumns( iname )
)
);
allnames = dt1 << getColumnNames();
cols = (N Items( originalnames ) + 1) :: N Items( allnames );
//
//dt1 << 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 )}))
//);
dt2 = dt1 << Data Table( "Fully Screened Subset With Abstracts and LatLongs" ) << Transpose(
columns( allnames[cols] ),
Label( :Title),
Label column name( "Title" ),
Output Table( "Transpose of Fully Screened Subset With Abstracts and LatLongs" )
);
dt2<<NEWCOLUMN></NEWCOLUMN>
由於我新增了標籤列,因此我必須在列清單中說明它。
此顯示與正常的聚類樹狀圖顯示沒有真正的差異;此圖中的圓圈節點是樹狀圖的根,其他所有內容都以圓形圖案呈扇形展開。 這是更容易閱讀。 您可能需要告訴觀眾使用單字之間連接路徑的長度(而不僅僅是鄰近度)作為連結性的衡量標準。
您還需要使用文字瀏覽器部分;我使用的停用詞特定於每本書中的古騰堡項目文檔樣板,並且字長為 6,並且詞幹選擇可能不是您文件的最佳選擇。
編輯:並結合一些字也許:北方、南方、西方、東方對你的目的來說可能都意味著同樣的事情?
回覆:JMP 中的關鍵字共現網路?嗨克雷格,
就是這樣! 我修改了您為我的資料表發送的腳本(請參閱附加的腳本和表格檔案)。 一切都很好,但我無法讓標籤功能運作。 我看了三遍,我發誓我完全複製了你的程式碼。 您是否看到任何可能阻礙其工作的因素? 我得到的情節圖像如下。 正如您所看到的,術語標籤僅顯示為點。 再次感謝你。 對此,我真的非常感激!

回覆:JMP 中的關鍵字共現網路?這也不是真的,但也許更接近。 我透過選擇分支中的根節點然後為資料表中選定的行著色來對它們進行著色。 需要花一些時間手工策劃停用詞才能製作出漂亮的圖片。
TransposedTransposed轉置
// 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", "ebooks", "enough", "though", "rather", "better", "common", "possible",
"weight", "present", "series", "necessary", "placed", "therefore", "towards", "footnote", "something","slowly","around","behind","looking","seemed","nothing",
"probably","called","easily","distributing","paragraph"
}
),
Minimum Characters per Word( 6 ),
Stemming( "no 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 << savedocumenttermmatrix( Maximum Number of Terms( 100 ), Minimum Term Frequency( 25 ), Weighting( "BINARY" ) ); // 0 or 1 if it occurs
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] ),
If( All( 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 )}))
//);
dt3 = dt2 << Data Table( "Subset of books5000" ) << Transpose(
columns( allnames[cols] ),
Label( :Title ),
Label column name( "Title" ),
Output Table( "Transpose of Subset of books5000" )
);
dt3 << Hierarchical Cluster(
Y( (dt3 << getColumnNames)[2 :: N Cols( dt3 )] ),
Label( Transform Column( "Transform[Title]", Nominal, Formula( Left( :Title, Length( :Title ) - 7 ) ) ) ),
Method( "Ward" ),
Standardize Data( 1 ),
Show Dendrogram( 0 ),
Dendrogram Scale( "Distance Scale" ),
Number of Clusters( 13 ),
Constellation Plot( 1 ),
SendToReport( Dispatch( {"Constellation Plot"}, "Clust Hier", FrameBox, {Frame Size( 948, 827 )} ) )
);回覆:JMP 中的關鍵字共現網路?我自 1994 年以來一直是 JMP 的忠實擁護者,因此我知道它的許多優勢以及如何透過不同的途徑解決不同的問題(這只是我喜歡它的原因之一)。 我總是從 JMP 開始。 我的專業社群以 R 用戶為主。 他們可以進行各種分析,但 R 創建互動式資料視覺化(我的菜)的能力甚至無法與 JMP 相提並論。 所以,我堅持使用 JMP。 然而,隨著統計方法的發展,大部分新分析只能透過R 或JMP Pro 實現,而不是使用標準JMP 許可證(例如,各種文字分析平台、基本模型選擇程序,這些是我所在領域的標準做法) )。 這使得我更難在 JMP 中進行全面、從頭到尾的分析。 隨著 JMP Pro 和標準 JMP 的差距越來越大,我發現自己正在向社群諮詢,尋找可以使用標準 JMP 授權來解決我的問題的可能解決方案。Craige 的貼文是社群幫助我找到在標準 JMP 中使用 DTM 對文件進行分組的方法的一個很好的例子。 我最近的帖子詢問是否有類似的解決方案可以在標準 JMP 中使用 DTM 對術語進行分組。
在這種特定情況下,我嘗試將關鍵字共現網頁圖形合併到我在標準 JMP 中建立的現有互動式視覺化中。我不認為我是在嘗試重新發明輪子。 我認為我要么遇到了標準 JMP 許可證中的功能障礙(也許),要么我缺乏如何實現這一目標的知識/創造力(更有可能)。我買不起 JMP Pro。 這就是我的現實,我認為它不會很快改變。 您提到的潛在類別分析和潛在語意分析平台僅在 JMP Pro 中可用。 當我詢問有關標準 JMP 許可證功能的問題並得到答覆告訴我只能在 JMP Pro 中執行某些操作時,這並沒有真正幫助我。 如果我的問題有助於解決JMP Pro 用戶的問題,我會很高興,但我仍然面臨著最初的難題,即嘗試在標準JMP 中做一些需要更多創造力和知識(JMP 用戶社區的兩個令人驚嘆的品質)的事情我自己擁有。
我感謝 JMP、JMP 的技術支援人員(他們非常棒)以及這個使用者社群。 在我的預算變得比以往任何時候都大之前,我可能會繼續在這裡提出有關使用標準 JMP 許可證完成工作的創造性方法的問題(有時可能會挑戰極限)。 我同意 Mark 的觀點,即需要先學習 JMP(25 年來我一直很喜歡這樣做)。 儘管如此,我有時還是很難理解如何使用標準 JMP 許可證來滿足我不斷擴展的分析和視覺化需求。 我仍然希望有一種合法的方法可以使用標準 JMP 建立關鍵字共現網路圖來對具有完全互動性並可以儲存為 JMP 表腳本的術語進行分組。 我不知道該怎麼做。 鑑於我閱讀 JMP 文件、搜尋 JMP 社群貼文以及自己進行試驗的正常過程,我無法弄清楚如何做到這一點。 如果沒有 JMP Pro 許可證就無法完成,我會讓它隨波逐流,並將此圖形類型排除在我的視覺化之外。
抱歉回覆太長。 如果 JMP 中的任何人想要權衡一些關於如何在買不起 JMP Pro 時使用標準 JMP 的策略,我希望得到一些建議(似乎是一個很好的部落格主題)。 也許這不是這個討論區的主題。 如果不是的話我很抱歉。 如果有人對此有任何建議,請隨時透過 caseylott@ymail.com 離線與我聯絡。
回覆:JMP 中的關鍵字共現網路?只需添加到@Craige_Hales ' 可協助您可以使用潛在類別分析對行(文件)進行分組,並使用潛在語意分析對列(術語)進行分組。 這些平台可在「分析」>「多元方法」下找到。 (它們也是內建的,專門用於 JMP Pro 中的文字資源管理器。)請參閱 JMP 文件...
JMP 的想法是擁有許多可以協同工作的強大平台。 我的比喻是圖形計算器。 按鈕有很多,通常需要多個按鈕才能完成工作。 也就是說,沒有一個按鈕可以“完成所有工作”,但您可以做到這一點。 您需要學習 JMP 作為第一種方法,而不是嘗試重新建立自訂應用程式。 為什麼要重新發明輪子?
回覆:JMP 中的關鍵字共現網路?嗨克雷格,
我剛剛意識到您發送的腳本使用 DTM 中的值來根據文檔之間術語的相似用法創建文檔集群。 在這種情況下,每個節點代表一個文檔,每個連結都基於聚類分析的距離值。 我正在嘗試做一些稍微不同的事情。
我想創建一個像這樣的星座圖,其中每個節點代表 DTM 中的一個術語,每個連結都基於某種描述關鍵字共現的統計資料。 這遠遠超出了我的專業知識。 我喜歡這樣一個圖的想法,但我不確定以某種方式重新格式化 DTM 是否合適,以便可以在術語最終作為節點的情況下進行聚類分析(或者我將如何做到這一點)。 這將實現我的目標,即在 JMP 中根據術語相關性生成圖形,我可以將其用作互動式資料視覺化中的全域過濾器。 然而,這種結束方式會創建一個不基於文字分析最佳實踐的圖形嗎? 對於那些了解這個領域的人來說,使用聚類分析來說明關鍵字共現是否不合適? 如果是這樣,是否有人在 JMP 中構建了可以進行關鍵字共現分析(使用適當的統計方法進行此類分析)的任何東西?我有興趣聽取社區對此的回饋。 我很抱歉我原來的帖子不太清楚。 Craige,當我需要群集文件時,我一定會使用您在第一個回復中發送的腳本! 謝謝。
回覆:JMP 中的關鍵字共現網路?一次使用一行可能不是正確的答案;這不一定是圖中鄰居的常用詞。 除非兩個空間鄰居共享一些單字。
回覆:JMP 中的關鍵字共現網路?我不知道;我認為對於每一行,您都需要該行的 3 或 4 個最重要的單字(列名稱),並且它們可能是具有最大值的單字。 當您查看某些行時,這看起來正確嗎? 如果是這樣,建立該標籤列就不需要太多的預處理步驟。
回覆:JMP 中的關鍵字共現網路?嗨克雷格,
這太棒了! 我不是 JSL 專家,但我讓它與我的數據一起工作。 我唯一不知道該怎麼做的是建立一個標籤標識符,該標識符使用文件術語矩陣中術語的列名稱。 我的文檔術語矩陣有 252 列。 每個欄位名稱均使用術語詞幹值和後綴 TF IDF2 自動格式化。 例如,一列名為“distribut·TF IDF 2”,另一列名為“mountain·TF IDF 2”。 我希望星座點標籤是詞幹術語,不含後綴(例如,distribut· 或 mountain·)。 有沒有一種簡單的方法可以使用文件術語矩陣的列名稱中的值作為點標籤?
非常感謝您提供這個腳本。
凱西
回覆:JMP 中的關鍵字共現網路?你可以得到一些相關的東西,也許,像這樣。 並且它與桌子相連。 而不是專業版。
Constellation Plot from ClusteringConstellation Plot from 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 )}))
);