Hive - regexp_replace 多个字符串的函数

Hive - regexp_replace function for multiple strings

我正在使用配置单元 0.13!我想在我的数据中找到多个标记,如 "hip hop" 和 "rock music",并将它们替换为 "hiphop" 和 "rockmusic" - 基本上用白色 space 替换它们。我在配置单元中使用了 regexp_replace 函数。下面是我的查询,它适用于上述 2 个示例。

drop table vp_hiphop;
create table vp_hiphop as
select userid, ntext,
       regexp_replace(regexp_replace(ntext, 'hip hop', 'hiphop'), 'rock music', 'rockmusic') as ntext1
from  vp_nlp_protext_males
;

但是我有 100 个这样的 bigrams/ngrams,我希望能够在我刚刚删除白色的地方进行有效替换space。我可以模式匹配短语 - 嘻哈和摇滚音乐,但在替换中我只想 trim 白色 spaces。以下是我尝试过的。我还尝试将 trim 与 regexp_replace 一起使用,但它需要 regexp_replace 函数中的第三个参数。

drop table vp_hiphop;
create table vp_hiphop as
select  userid, ntext,
        regexp_replace(ntext, '(hip hop)|(rock music)') as ntext1
from  vp_nlp_protext_males
;

您可以使用 TRANSLATE 函数从字符串中删除所有出现的子字符串,以将子字符串替换为空字符串。对于您的查询,它会变成这样:

drop table vp_hiphop;
create table vp_hiphop as
select  userid, ntext,
        translate(ntext, ' ', '') as ntext1
from  vp_nlp_protext_males
;