将非结构化地名清除为结构化格式

时间:2018-03-26 18:43:20

标签: openrefine google-refine

我在屏幕下方有大约300万个非结构化数据。我尝试使用Google优化或OpenRefine来使其正确无误。但是,我无法找到合适的方法来做到这一点。我是这个工具的新手。任何人的帮助将不胜感激。此外,这个工具处理300k记录非常慢。如果我正在尝试某些事情,需要花费大量时间来处理并提供输出。

或者请建议其他任何开源工具和技术都这样做吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

正如欧文在评论中所说,你的问题可能过于宽泛,无法得到可接受的答案。我们可以为您提供一般程序。

在Open Refine中,您需要根据凌乱的列创建一个列并应用转换来删除不需要的字符。您必须使用正则表达式。但为此,能够识别模式是必要的。我不清楚为什么" ST" " Nat.secu ST。"很重要,但不是"美国"在" Massy Intertech US"。甚至不是" 36"在" Plowk 36" (谷歌不知道这个词,所以我不确定是否是组织名称。)

然而,基于你的十五行,我们似乎区分了一些清晰的模式。例如,看起来你必须删除包含#的字符串末尾的标记(没有空格的字符集)。为此,Open Refine中的GREL公式可能如下所示:

value.trim().replace(/\b\w+#\w+\b$/,'')

如果你不清楚,这是一个截屏视频。

enter image description here

但有时公司名称可能包含#,在这种情况下,您需要创建更复杂的规则。例如,仅当字符串包含两个以上的单词时才删除标记。

if(value.split(' ').length() > 2, value.replace(/\b\w+#\w+\b$/, ''), value)

对于您将要找到的其他模式等等(例如,最后包含4个以上数字和1个数字序列的任何数字序列)

如有疑问,请随时查看Open Refine documentation