정규 표현식이 뭔가요?
HTML 태그 제거
웹에서 추출한 텍스트의 경우 HTML태그가 붙어있는 경우가 가끔 존재
HTML태그는 어떻게 생겼나요?
html은 앞과 뒤에 태그를 붙이는데, 앞부분 태그는 <와 >로, 끝부분 태그는 </와 >로 작성한다.
ex. <title> 인사이트 </title>
어떻게 제거하나요?
BeautifulSoup의 get_text()함수를 통해 HTML 태그 안에 들어있는 텍스트를 꺼냄.
→ 정확하고 안전한 방법 but 시간 오래걸림..
정규표현식을 활용하여 제거
: <로 시작해서 >로 끝나는 문자열은 모두 제거.
→ 빠른 속도로 처리 가능, but HTML태그가 아닌 부분이 함께 제거될 가능성 존재.
re.sub('<.+?>', '', text, re.S)
: <로 시작해서 어떤 글자가 한글자 이상 있고 >로끝나는 부분은 ''로 바꾸어 없애주세요
(re.S :줄바꿈 문자를 포함하여 모든 문자와 매치할 수 있도록 한다.) ← 컴파일 옵션
구두점 및 특수문자 제거
구두점 및 기호 표현의 경우 자연어 처리 패키지의 토큰화를 통해 분리가 가능함.
하지만 이모지와 같은 특수문자의 경우 토큰화가 되지 않을 가능성이 있음.
⇒ 정규표현식을 활용하여 구두점 및 특수문자를 제거함.
(영어or 한글or 숫자 가 아닌 모든 문자열을 제거하자.)
re.sub('[^a-zA-Z]', ' ', text)
: 소문자 알파벳 or 대문자 알파벳이 아닌 텍스트에 대하여 ''로 대체하여 그 텍스트를 제거.
(원하는 경우 0-9를 추가해 숫자 텍스트도 남길 수 있으며, 한글의 경우 '가-힣'을 추가.)
.lower() 함수를 통한 해당 스트링의 모든 대문자를 소문자로 전환
→ 대문자 단어와 소문자 단어를 같은 단어로 인식하게 하기 위해.
여기서 토큰이란?
: 텍스트 분석에 활용하는 문법적으로 나눌 수 없는 언어 요소
어떻게 하나요?
띄어쓰기 단위로 단어 분리
→ 단어의 문법에 의해 변환된 형태를 구분하지 못하여 올바른 분석을 하기 어려움.
자연어 처리 패키지 활용
불용어란?
: 조사, 접미사 같은 문장에서 자주 등장하지만 실제 의미 분석을 하는데에 기여하지 못하는 단어들
→ 출현 빈도 기반의 텍스트 분석을 정확하고 올바르게 하기 위해서는 불용어를 찾아 제거해야 함.
영어 stopwords는 nltk 라이브러리에서 내려받아서 리스트로 다룰 수있음
한국어는 보편적 불용어 리스트가 없음.
→ 인터넷에 떠도는 불용어 리스트들이 있으나, 사용자가 임의로 만든 리스트.
(본인이 분석하고자 하는 텍스트에서의 불용어와 맞지 않을 수 있음)
→ txt나 csv로 미리 정리해 놓고 불러와서 사용하는 적절한 방법이라고 함.