Haru's 개발 블로그

[NLP] 일본어 자연어 처리할 때 주의해야 할 점과 사용하는 도구 본문

머신러닝 & 딥러닝/NLP(자연어 처리)

[NLP] 일본어 자연어 처리할 때 주의해야 할 점과 사용하는 도구

Haru_29 2023. 8. 22. 14:52

일본어가 영어에 비해서 토큰화가 어려운 이유는?

1. 형태소 분석 및 품사 태깅: 영어와 같은 공백으로 구분된 문장과 달리, 일본어 문장은 구두점이나 줄 바꿈 외에는 명시적인 구분 기호가 없기 때문에 '단어' 같은 것이 애초에 불분명하다. 따라서 형태소 분석기와 같이 툴이나 옵션 설정마다 분할되는 방법이 다릅니다. 예를 들어, 「おじいさん」을 「お、じい、さん」이라고 토큰화가 가능하기 때문에 담당 관계에 대해서도 도구마다 경향이 다릅니다.

 

2. 텍스트 정규화: 일본어에는 형태 변화나 발음 변화에 의한 다양한 텍스트 변형이 존재합니다. 이러한 변형을 고려하여 데이터를 정규화하는 전처리 과정이 필요합니다.

 

3. 문화적 차이 고려: 일본어는 문화적 차이로 인해 표현이나 의미가 달라질 수 있습니다. 이러한 문화적 차이를 이해하고 적절한 학습 데이터를 확보하여 모델을 학습시켜야 합니다.

 

위의 문제를 해결하기 위한 기존의 도구와 최근 사용하는 도구는?

1.  기존에 사용하는 도구

1-1) Mecab

  • 사전, 코퍼스에 의존하지 않는 범용적인 설계
  • 조건부 확률장(CRF)에 근거한 높은 해석 정밀도
  • ChaSen이나 KAKASI에 비해 고속
  • 사전 찾아 알고리즘/데이터 구조에, 고속 TRIE 구조인 Double-Array를 채용.
  • 재입력이 가능한 라이브러리
  • 각종 스크립트 언어 바인딩(perl/ruby/python/java/C#)

1-2) Juman

  • 형태소(Morpheme) 단위로 분할
  • 불규칙 활용 및 가 conjugation 처리
  • 사전과 규칙 기반 처리
  • 확장 및 커스터마이징

2.  최근에 사용하는 도구

2-1) spaCy

  • 약 60 개 언어를 지원
  • 다양한 언어 및 애플리케이션에 대해 이미 훈련 된 모델을 사용 가능
  • BERT (변압기의 양방향 인코더 렌더링)와 같이 이전에 훈련 된 변환기를 사용한 멀티 태스킹 학습
  • 사전 훈련 된 벡터 및 단어 삽입 지원
  • 즉시 사용 가능한 실무 교육 시스템 모델
  • 언어 적으로 동기 부여 된 토큰 화
  • 명명 된 엔티티 연결, 품사 표시, 텍스트 분류, 태그 기반 종속성 분석, 문장 분할, 품사 표시, 형태 학적 분석, 형태소 분석 등에 미리 만들어진 구성 요소를 사용 가능
  • 사용자 지정 구성 요소 및 특성을 사용하여 기능 확장을 지원
  • PyTorch, TensorFlow 및 기타 프레임 워크를 기반으로 자체 모델을 생성 할 수 있도록 지원
  • 명명 된 엔터티 바인딩 및 구문 시각화 (NER, 명명 된 엔터티 인식)를위한 기본 제공 도구
  • 모델을 패키징 및 배포하고 워크 플로를 관리하는 간단한 프로세스
  • 높은 정밀도

2-2) GinZa

  • GINZA는 spaCy를 NLP Framework를 사용
  • 토큰화(형태소 해석) 처리에 SudachuPy, 단어 벡터 표현에 Chive를 사용하여 높은 해석 정밀도를 가짐
  • Ginza v5 Transformers 모델(ja_ginza_electra)은 transformers를 사정 학습 프레임워크로 사용 
  • ja_ginza_electra는 ja_ginza에 비해 5만회 학습 시의 의존 관계 라벨링,단어 의존 구조 해석의 오류를, 이전 버전과 비교하여 25% 이상을 줄일 수 있음
  • 처리 파이프라인에 morphologizer를 추가함으로서 이전보다 오류를 40%정도 낮추는 것이 가능
  • 문절 단위로 해석하는 API추가
  • 각 모델의 학습과 해석 정밀도 평가에는 UD_Japanese-BCCWJ r2.8에서 신문 기사계의 텍스트를 제외한 것을 SuDachi 사전 modeC로 재해석한 후, 문절 주사 정보를 의존 관계 라벨에 조합한 상태의 코퍼스를 사용

 

 

 

Comments