如何有效地解析不同数量元素的结构化文本字符串祝大家新年快乐!
我开始从 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,你可以在注释上使用文本浏览器;我建议将所有评论(不包括不断的描述)放在一个字符字段中。