일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 컨설팅 면접
- python
- kpmg 인성검사
- 역검 전략게임
- ai역검 합격
- 오류
- 삼정kpmg 서류
- join
- 잡다 ai역검
- 삼정kpmg 취업
- 삼정kpmg mc4
- 후기
- 코딩테스트
- SQL
- 역검 전략게임 꿀팁
- MYSQL
- 역검 결과표
- 파이썬
- nlp
- 형태소분석
- 삼정kpmg pt면접
- 프로그래머스
- 서비스
- mecab
- 잡다 ai역량검사
- 토픽모델링
- lda
- pyLDAvis
- 역검 합격 꿀팁
- gensim
- Today
- Total
쥬니어 분석가
[파이썬/NLP] 텍스트 전처리 - 정제 및 정규화 feat.replace,re 본문
텍스트 정제 - replace( ) 함수
파이썬을 사용하다 보면 문장의 오탈자 수정 및 특정 단어를 다른 단어로 변환하고 싶을 때가 있습니다.
그럴 때 파이썬의 relace() 함수를 사용하면 빠르게 원하는대로 문장을 수정할 수 있습니다.
함수 사용 방법
str.replace(old, new, count)
- str: 문자열
- old: 바꾸고 싶은 문자열
- new: 바꿀 문자열
- count (선택 사항): old 문자열을 몇 번 바꿀 것인지 선택/ 기본값은 -1이며, 모든 old 문자열을 new 문자열로 변경
함수 사용 예시
import pandas as pd
text = "데이터분석은 어렵지만 유용해😊 데이터분석 공부를 으쌰으쌰 열심히해서 멋진 분석가가 될거야~^_^!"
# "데이터분석"을 "마케팅"으로 바꾸기
new_text = text.replace("데이터분석", "마케팅")
print(new_text)
기존에 “데이터분석”으로 작성되어있던 부분이 모두 “마케팅”으로 변환된 것을 확인할 수 있습니다.
이 외에도 특정 단어를 제외하는 텍스트 전처리를 할 때에도 replace() 함수를 활용할 수 있습니다.
불용어 제거
text = "데이터분석은 어렵지만 유용해😊 데이터분석 공부를 으쌰으쌰 열심히해서 멋진 분석가가 될거야~^_^!"
# 불용어 설정
stopwords = ["으쌰으쌰 ", "멋진 "]
# 불용어 제거
for word in stopwords:
text = text.replace(word, "")
print(text)
특정 단어를 삭제하고 싶을 때는 불용어 설정 후 replace로 해당 불용어를 제외하면 됩니다.
저의 경우 워드클라우드 생성 시 유사한 단어는 하나로 묶어서 확인하기 위해 replace를 사용해서 열 전체에 적용했습니다. 예를 들어 “좋았음”, “좋아요”, “좋았어요” 단어 모두 “좋아요”로 통일하고 싶을 때, 아래와 같은 코드를 사용할 수 있습니다.
열 전체에 적용하는 코드
words_to_replace = ["좋았음", "좋아요", "좋았어요"]
# 대체할 단어
replacement_word = "좋아요"
# 텍스트 변환 함수
def replace_words(text, words_to_replace, replacement_word):
for word in words_to_replace:
text = text.replace(word, replacement_word)
return text
# df["text"]열 전체 텍스트에 적용
df["text"] = df["text"].apply(lambda x: replace_words(x, words_to_replace, replacement_word))
정규표현식 - import re
정규 표현식은 특정 문자열을 찾거나, 바꾸거나, 제거하는 등 다양한 작업을 수행하는 데 활용할 수 있습니다.
저는 보통 특수문자를 제거할 때 정규표현식을 사용하곤 합니다.
함수 사용 방법
re.sub(pattern, " ", text)
- re.sub() 함수: 첫 번째 인수에 지정된 패턴에 매칭되는 문자열을 두 번째 인수에 지정된 문자열로 바꿉니다.
- pattern: 자세한 정규표현식 patten은 아래 게시물 참고
https://wikidocs.net/21703
함수 사용 예시
import re
text = "데이터분석은 어렵지만 유용해😊 데이터분석 공부를 으쌰으쌰 열심히해서 멋진 분석가가 될거야~^_^!"
# 한글 및 숫자, 기본 특수기호 외에 단어는 제외
new_text = re.sub(r"[^ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9.,!? ]", " ", text)
new_text1 = re.sub(r"[^ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9.,!? ]", "", text)
print(new_text)
print("")
print(new_text1)
new_text와 new_text1의 차이점이 보이시나요?
new_text의 경우는 특정 문자를 공백으로 치환하였고, new_text1은 특정 문자를 완전히 제거했다는 차이가 있습니다.
일반적으로 저는 문장의 형식을 위해서는 공백으로 치환하기 보다는 완전히 제거하는 방식을 주로 선호합니다.
마찬가지로 아래와 같이 열 전체에 정규표현식을 적용하여 손쉽게 텍스트 정규화를 할 수 있습니다.
# 한글 및 숫자를 제외한 단어를 공백으로 치환
df["text"] = df["text"].apply(lambda x: re.sub(r"[^ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9.,!? ]", " ", x))
이렇게 텍스트 전처리 손쉽게 끄읕
'python' 카테고리의 다른 글
[NLP/토픽모델링] 리뷰 분석 - LDA 결과 해석 (0) | 2024.03.26 |
---|---|
[NLP/토픽모델링] 리뷰 분석 - LDA 모델링, 하이퍼파라미터 튜닝 (0) | 2024.03.11 |
[파이썬/크롤링] 집닥 고객 후기 크롤링 with Selenium, BeautifulSoup (0) | 2024.02.14 |
[NLP/mecab] 품사 태그 (0) | 2024.02.14 |
[파이썬/NLP] 형태소 분석, 노래 가사 워드클라우드 feat.Mecab,Okt,kkma (1) | 2024.01.25 |