Предположим, у вас есть данные в твиттере.
Например, есть следующий твит:
RT @Mydy_Rabycad: (английский в комментариях) ТРЕТЬ # 1 Мантра, neboli posvátné slovo,когда ты идешь и кто опаковал, не запомнишь. Ať se děje cokoli…
Очистка для дальнейшей обработки с помощью
clean_text = prxchange("s/[^\w#@]/ /",-1,text);
RT @Mydy_Rabycad Английский в комментариях ТРЕК # 1 Мантра туманностей, представленных в словаре, в том числе. si opakovat a nezapom nat A se d je cokoli
Как видите, теряется много ценных словесных символов. То, что я хотел бы получить:
RT @Mydy_Rabycad Английский в комментариях ДОРОЖКА # 1 Мантра neboli povátné slovo které je třeba si opakovat nezapomínat Ať se děje cokoli
Как правило, я хотел бы удалить все лишние символы, которые не являются частью каких-либо слов на любом языке, таких как знаки препинания, смайлики и т. Д. ... цель состоит в том, чтобы токенизировать некоторые случайные данные Твиттера.
Так что примеркод (который не работает) будет
data have;
infile datalines4 delimiter='\\\\\';
length text $200.;
input text $;
datalines4;
RT @Mydy_Rabycad: (English in comments) TRACK #1 Mantra, neboli posvátné slovo, které je třeba si opakovat a nezapomínat. Ať se děje cokoli…
;;;;
run;
data have2;
set have;
clean_text = prxchange("s/[^\w#@]/ /",-1,text);
/*Remove multiple blanks introduced through the above regex*/
clean_text = prxchange("s/\s+/ /",-1,clean_text);
run;
Итак, есть ли в SAS управляющая последовательность (9.4 T1M6), такая как \ w для английского языка, то есть что-то вроде \ p {L}, которая позволяетподмножество каждого буквенно-цифрового словаря на каждом языке?
Как указано в комментариях, следующие регулярные выражения также не работают
prxchange("s/(u?)[^\w#@]/ /",-1,text);
prxchange("s/[^\p{L}#@]/ /",-1,text);
Кроме того, функция сжатия не дает желаемых результатов с помощью 'ka'модификатор.
compress(text,' ','ka');
Вопрос связан с этим , но с SAS.