如何有效地解析不同數量元素的結構化文本字符串祝大家新年快樂!
我開始從 Kaggle 探索這個數據集: https://www.kaggle.com/chicago/chi-restaurant-inspections . 每行是一次餐廳檢查,單列是違規列表。 值得慶幸的是,違規行為由“|”分隔。 下面的示例。 違規次數不一。
40. 提供製冷和金屬桿式溫度計且顯眼 - 評論:需要桿式溫度計來監測食品溫度。 指示提供和維護。 | 41. 房屋內沒有垃圾、不必要的物品、清潔設備已妥善存放 - 評論:觀察到後方准備區的一些物品沒有抬高到離地面 6 英寸的高度。 必須提升和維護。 | 38. 通風:房間和設備按要求通風:管道:安裝和維護 - 評論:廚房後部食品準備區暴露的手洗水槽排水緩慢。 必須修理和維護。 | 32. 食品和非食品接觸表面經過適當設計、建造和維護 - 評論:觀察到地下室的生鏽食品儲藏架。 必須重新粉刷和維護。 | 34. 地板:按規范建造、清潔、良好維修、安裝蓋板、使用無塵清潔方法 - 評論:觀察到地下室托盤下方的地板上有污垢和碎屑。 必須清潔和維護。
查看結構:ViolationID#。 Violation_Type - 評論。 我可以想到兩種方法將這些字符串解析為 ID#、Type、Comments:
1)Cols > Utilities > Text to Columns,然後Tables > Stack,然後刪除空白行,然後用Word(text,delimiter)解析新列
2) 使用 Words(Violations, "|") 創建如下列表,然後處理列表中的每個元素
{“40。 提供製冷和金屬桿式溫度計且顯眼 - 評論:需要桿式溫度計來監測食品溫度。 指示提供和維護。 ”、“41。 房屋內沒有垃圾、不必要的物品、清潔設備已妥善存放 - 評論:觀察到後方准備區的一些物品沒有抬高到離地面 6 英寸的高度。 必須提升和維護。 ", " 38. 通風:房間和設備按要求通風:管道:安裝和維護 - 評論:廚房後部食品準備區暴露的手洗水槽排水緩慢。 必須修理和維護。 ”、“32。 食品和非食品接觸表面經過適當設計、建造和維護 - 評論:觀察到地下室的生鏽食品儲藏架。 必須重新粉刷和維護。 ", " 34. 地板:按規范建造、清潔、良好維修、安裝蓋板、使用無塵清潔方法 - 評論:觀察到地下室托盤下方的地板上有污垢和碎屑。 必須清潔和維護。”}
我沒有太多使用列表的經驗。
使用列表 {}、使用 Text to Columns 方法會更有效,還是有更好的方法? 如果列表方法是最有效的,那麼最有效的方法是什麼來等效於 Tables > Stack for each row, element in the list?
或者,有一列帶有 InspectionID#。 使用 InspectionID# 作為鍵將其分成兩個表而不是創建一個巨大的堆疊表會更有效嗎?
回复:如何有效地解析不同數量元素的結構化文本字符串克雷奇:
謝謝! 作為文本分析新手,我以前從未使用過模式匹配功能。 很好地解決了這個問題。 我肯定會花一些時間學習正則表達式和模式匹配。
順便說一句 - 文本分析將成為一個很棒的掌握 JMP 網絡研討會主題!
回复:如何有效地解析不同數量元素的結構化文本字符串只玩前 100 行,這是一張地圖:
LocationsLocations地點
這是一個公式列,僅用於獲取評論字段:
a = :Violations;
b = "";
Pat Match( a, // full violation text
Pat Repeat(
Pat Arb() + "Comments:"
+ ( Pat Break( "|" ) | Pat Rem()) >> c // the interesting bit
+ Pat Test( // not really a test, just some JSL to build text
b = b || "|" || c; // build text here
1; // always succeed the test
)
),
NULL, // no replacement
FULLSCAN // get the final one
);
b;
文本瀏覽器可以使用新的列來形成集群
clustersclusters集群
根據實際檢查結果繪製評論的集群編號看起來很有希望;集群 2 評論未獲得不及格分數,集群 4 評論未通過。 通常類似於“觀察到的油脂堆積在通風罩過濾器上。 必須清潔通風罩過濾器”(通過)與“禁止洗手或摘下食品手套”(未通過)。
clustered by comment textclustered by comment text按評論文本聚類
回复:如何有效地解析不同數量元素的結構化文本字符串我不認為 145K 行對於任何解析想法來說都不會太慢。 我認為您可能需要每種違規行為的指示器列,0 或 1。 如果你有 JMP 13,你可以在註釋上使用文本瀏覽器;我建議將所有評論(不包括不斷的描述)放在一個字符字段中。