working_helen

[데이터 전처리] 마켓컬리 리뷰 데이터 전처리, kiwipiepy 형태소 분석기 본문

deep daiv./NLP project

[데이터 전처리] 마켓컬리 리뷰 데이터 전처리, kiwipiepy 형태소 분석기

HaeWon_Seo 2024. 9. 5. 14:16

수집한 마켓컬리 리뷰 데이터에 대해 전처리를 진행한 과정을 정리해본다. 

 

 

1. kiwipiepy 형태소 분석기
2. PyKoSpacing
3. 띄어쓰기 교정 과정 

 


 

현재 dataframe 

  • '국 · 탕 · 찌개' 카테고리 내 상품 목록 

 

 

  • '국 · 탕 · 찌개' 카테고리 상품의 리뷰 목록 

 

 

 

 

전체 전처리 과정 

결측치 제거 : review 열에 존재하는 5개의 결측치 제거
→ 중복값 제거 : 3181개의 중복되는 리뷰 제거 (동일인이 동일한 내용으로 이중 작성한 리뷰)

한국어 리뷰만 사용 : 아예 영어로만 쓰여진 826개의 리뷰들을 제거
정규 표현식으로 특수문자 + 이모티콘 제거
    ① r"[^가-힣A-Za-z0-9\w\s]" : 한국어, 영어, 숫자, 띄어쓰기, 줄바꿈을 제외한 모든 문자를 제거
    ② r"([ㄱ-ㅎㅏ-ㅣ])\1{1,}" : 'ㅋㅋ', 'ㅠㅠ'와 같이 하나의 모음 혹은 자음으로 이루어진 문자 제거
 'product_type' 통일 : 같은 상품이지만 상품명이 변하며 다르게 인식된 'product_type'을 통일

띄어쓰기 교정 : kiwipiepy 형태소 분석기 이용

 

 

 

 

 

1. kiwipiepy 형태소 분석기

- Korean Intelligent Word Identifier 엔진을 사용하는 한국어 자연어 처리 파이썬 라이브러리
- 형태소 분석을 기반으로 품사 추출, 구문 분석, 사용자 정의 사전 지원 등의 task를 수행 

- 한국어 특유의 복잡한 문법과 어휘를 처리하는 데 최적화

 

 

1) kiwipiepy의 장점 

- Python으로 구현되고 C++로 작성된 성능 최적화 모듈을 사용

적은 메모리를 사용하면서도 빠르게 대용량 텍스트 데이터를 처리할 수 있음 

Mecab이나 Komoran과 같이 Java Runtime Environment (JRE) 또는 Java Development Kit (JDK)의 설치가 필요한 Java 기반 라이브러리와 달리, Java 의존성이 없는 kiwipiepy는 별도의 Java 시스템 설치 없이 Python에서 바로 실행할 수 있어 호환성 문제를 줄이고 더 자유롭게 배포할 수 있다는 장점이 있음 



2) kiwipiepy의 띄어쓰기 교정 기능
- 0.11.1 (2022-04-03) 버전부터 띄어쓰기 교정을 수행하는 Kiwi.space() method가 추가됨 

- 형태소 분석 결과에 기반하여 한국어 텍스트의 띄어쓰기를 자동으로 교정 

 

!pip install kiwipiepy

from kiwipiepy import Kiwi

kiwi.space("이문장을 띄어 쓰기해주세요")
>>> "이 문장을 띄어 쓰기 해 주세요"

#`reset_whitespace=True`는 아예 기존 문장에 있던 공백들을 무시하고 띄어쓰기 교정
kiwi.space("이문장을 띄어 쓰기해주세요", reset_whitespace=True)
>>> "이 문장을 띄어쓰기해 주세요"

 

 

 

 

2. PyKoSpacing

- 전희원님이 개발한 오픈소스 한국어 전처리 패키지
  깃헙에서 다운받은 후 파이썬 라이브러리로 import하여 사용 가능 
- 형태소 분석기가 아닌, 방대한 한국어 말뭉치를 사용해 학습한 한국어 띄어쓰기 딥러닝 모델 

- 띄어쓰기 교정 및 맞춤법 교정을 지원 

!pip install git+https://github.com/haven-jeon/PyKoSpacing.git

from pykospacing import Spacing

spacing = Spacing()
spacing("이문장을 띄어 쓰기해주세요")
>>> "이 문장을 띄어 쓰기해주세요"

 

 

 

 

 

3. 띄어쓰기 교정 과정 

- 앞선 전처리 과정을 모두 거친 텍스트 예시 

 

 

- 4가지 방법 시도

  • kiwipiepy 형태소 분석기

 

 

  • PyKoSpacing

 

 

  • KoNLPy 형태소 분석기

 

 

  • 오픈소스 ETRI-et5 모델 (출처)

 

 

 

➡️ 최종 선택 = kiwipiepy를 사용한 띄어쓰기 교정 

 

- 현재 약 150만개에 달하는 텍스트 데이터 → 처리 속도가 빠른 kiwipiepy의 장점 이용 
- 향후 이 리뷰 요약 서비스가 '국 · 탕 · 찌개' 카테고리 외 다른 카테고리로도 확장될 가능성이 존재 

  다른 형태소 분석기들에 비해 사용 환경 조건에서 제약이 적어 배포에 유용한 kiwipiepy의 장점 이용 
- kiwipiepy가 내재적으로 제공해주는 띄어쓰기 mothod를 사용 가능
- 실제로 몇가지 리뷰 문장 예시에 적용해 본 결과 다른 방법에 비해 성능이 좋았고,

  네이버 맞춤형 교정기를 사용했을때의 결과와도 가장 근접한 성능을 보임 

 

 

- 전처리 후 dataframe 모습 

 

 

 

 

 

 

Reference

https://wikidocs.net/233361
https://bab2min.github.io/kiwipiepy/v0.18.0/kr/#kiwipiepy.Kiwi.space
https://wikidocs.net/92961

https://haru0229.tistory.com/57
https://velog.io/@acdongpgm/NLP-%ED%95%9C%EA%B5%AD%EC%96%B4-%EA%B5%AC%EC%96%B4%EC%B2%B4%EB%8C%80%ED%99%94%EC%B2%B4-%EB%A7%9E%EC%B6%A4%EB%B2%95-%EA%B5%90%EC%A0%95%EA%B8%B0Korean-typos-corrector-ET5-Text2Text-Generation#%ED%95%9C%EA%B5%AD%EC%96%B4-%EB%A7%9E%EC%B6%A4%EB%B2%95-%EA%B5%90%EC%A0%95%EA%B8%B0