이름과 주변 문맥 추출하기
스위스 정치인에 대한 데이터셋을 다시 사용해 보겠습니다. 이 데이터셋은 두 개의 변수로 구성돼 있어요. 스위스 정치 관련 뉴스 기사 모음인 articles와, 여러 스위스 정치인 이름으로 이루어진 벡터 politicians입니다.
이미 이름별 등장 횟수는 셌지만, 이름을 세는 데서 그치지 않고 그 이름이 어떤 문맥에서 쓰였는지도 보면 더 흥미롭지 않을까요? 예를 들어, 여성 정치인과 남성 정치인의 문맥이 서로 다른지 비교할 수 있겠죠. 이를 위해 정치인 이름 주변의 텍스트를 추출해야 합니다.
텍스트에는 단어 문자 \\w와 마침표 .나 쉼표 , 같은 구두점 [:punct:]이 함께 있으므로, 이 두 문자 유형을 모두 매치하는 패턴을 만들어야 해요.
이 연습은 강의의 일부입니다
R 중급 정규 표현식
연습 안내
- 벡터
politicians를 사용해, 2장에서 했던 것처럼 OR 패턴으로 합쳐 주세요. - 대괄호
[]안에 단어 문자와 구두점 둘 다를 매치하는 사용자 지정 패턴을 만드세요. - glue를 사용해 새로 만든
context를polit_pattern의 앞과 뒤에 모두 추가하세요.\\s?는 정치인 이름 뒤에 공백이 있거나 없을 수 있음을 나타냅니다.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Create our polit_pattern again by collapsing "politicians"
polit_pattern <- glue_collapse(___, sep = "|")
# Match one or more word characters or punctuations
context <- "([___[___]]+\\s){0,10}"
# Add this pattern in front and after the polit_pattern
polit_pattern_with_context <- glue(
"{___}({polit_pattern})\\s?{___}"
)
str_extract_all(
articles$text,
pattern = polit_pattern_with_context
)