하이브 0.13을 사용하고 있습니다! 내 데이터에서 "힙합"및 "록 음악"과 같은 여러 토큰을 찾고이를 "힙합"및 "록 음악"으로 바꾸고 싶습니다. 기본적으로 공백없이 바꾸십시오. 하이브에서 regexp_replace 함수를 사용했습니다. 아래는 내 쿼리이며 위의 두 가지 예제에서 잘 작동합니다.하이브 - 여러 문자열에 대한 regexp_replace 함수
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가 있으며 공백을 제거한 위치에서 효율적으로 교체 할 수 있기를 원합니다. 나는 힙합과 락 음악과 일치하는 패턴을 만들 수 있지만 대체 할 때 단순히 공백을 자르고 싶습니다. 아래는 내가 시도한 것이다. 나는 또한 regexp_replace를 사용하여 trim을 시도했지만 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
;