Skip to content

JN-Jeong/KorSci-Electra-based_Patent_Classification

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

과학기술정보 기반 사전학습(Pre-trained) 모델 개발 연구 (21. 5. 1. ~ 21. 10. 31.)

  • 소개 : 과학기술정보 분야 사전학습 ELECTRA 모델 개발
  • 맡은 역할 : 학습 데이터(Kipris) 전처리, 실험

Classification(kipris)

특허 데이터 (KISTI 제공)

  • CPC + IPC(R)
    • CPC, IPC : 특허분류체계
    • IPC(R) : 기존 IPC 코드로 분류된 특허 문건을 CPC 코드로 분류한 특허 문건
  • 학습 데이터 / 평가 데이터 : 1,527,579 / 381,895 (약 64GB)
  • 분류 수 : 476
    • ex) B29C, F42B, D02G ...
  • 사용한 필드 영역
    • 발명의명칭, 청구항, 요약서, 배경기술, 기술분야, 과제의해결수단, 발명의상세한설명
    • 이외의 필드들은 개조식으로 작성되어 불필요한 특수문자들이 많이 포함되어 제외

데이터 전처리

  • Case 1

    • 불용어 삭제 : “None”, “▒▒▒”, “ⓐⓐ”, “1㉾㉾㉾”, “\”, “\t”, “\n” 등 삭제
    • 불필요한 특정문자 선별 삭제 : “\‘삭제\” , “\’삭제\‘”, “\”, “\’,”, “\‘” 차례로 삭제, “None” 삭제
    • 쉼표 -> 공백문자로 변경
    • 관용적인 표현 삭제 : “제 X항에 있어서”와 같은 문장 삭제
    • 순번을 지정하는 문자 삭제 : “(710 및 720)”, “(a6 및 g6)”, “(100 및 101)” 등 삭제
    • 공백 2개이상 -> 1개로 변경
    • 정제로 인한 중복문자 제거
  • Case 2

    • 불용어 삭제 : “None”, “▒▒▒”, “ⓐⓐ”, “1㉾㉾㉾”, “\”, “\t”, “\n” 등 삭제
    • 불필요한 특정문자 선별 삭제 : “\‘삭제\” , “\’삭제\‘”, “\”, “\’,”, “\‘” 차례로 삭제, “None” 삭제
    • 쉼표 -> 공백문자로 변경
    • 관용적인 표현 삭제 : “제 X항에 있어서”와 같은 문장 삭제
    • 괄호문자 삭제 : Case 1의 순번을 지정하는 문자 삭제 대신 괄호로 묶인 문장을 모두 삭제
    • 공백 2개이상 -> 1개로 변경
    • 정제로 인한 중복문자 제거
  • Case 3

    • 불필요한 특정문자 선별 삭제 : “\‘삭제\” , “\’삭제\‘”, “\”, “\’,”, “\‘” 차례로 삭제, “None” 삭제
    • 쉼표 -> 공백문자로 변경
    • 관용적인 표현 삭제 : “제 X항에 있어서”와 같은 문장 삭제
    • 순번을 지정하는 문자 삭제 : “(710 및 720)”, “(a6 및 g6)”, “(100 및 101)” 등 삭제
    • 한글을 제외한 문자 모두 삭제
    • 공백 2개이상 -> 1개로 변경
    • 정제로 인한 중복문자 제거

사전학습 모델

  • Electra
    • Base 모델
  • 데이터
    • 학술 논문, NTIS 연구 보고서, 특허, 한국어 위키, 네이버 IT 뉴스
    • 141.58GB
    • Mecab 적용
  • 사전 크기
    • 32000

실험 결과

정제작업 토크나이저 필드 영역 Macro F-1 Micro F-1
Case 1 WordPiece 발명의명칭, 청구항, 요약서, 배경기술, 기술분야, 과제의해결수단, 발명의상세한설명 0.62 0.72
Case 2 WordPiece 발명의명칭, 청구항, 요약서, 배경기술, 기술분야, 과제의해결수단, 발명의상세한설명 0.63 0.72
Case 3 WordPiece 발명의명칭, 청구항, 요약서, 배경기술, 기술분야, 과제의해결수단, 발명의상세한설명 0.63 0.73
Case 2 WordPiece 발명의명칭, 청구항, 요약서 0.63 0.73
Case 3 WordPiece 발명의명칭, 청구항, 요약서 0.62 0.71

대부분의 정제 작업은 유사한 학습결과를 보여주었으며 Case 3가 가장 높은 성능을 보여주었다. 필드 영역을 [발명의명칭, 청구항, 요약서]로 변경하여 실험한 결과 모든 필드 영역을 사용했을 때보다 Case 2는 약간의 성능 향상이 있었으나 Case 3는 오히려 성능이 하락하는 결과가 나타났다. Case 2는 제외된 [배경기술, 기술분야, 과제의해결수단, 발명의상세한설명]의 정제작업이 적절하지 않았기 때문에 성능이 향상된 것으로 보이고 Case 2보다 Case 3에서 적절한 정제작업이 이루어진 필드 영역이 제외되었기 때문에 성능이 하락한 것으로 보인다.

오류 분석
본 연구에서는 특허 코드를 자동으로 분류하기 위한 모델을 언어 모델을 학습하였다. 학습 데이터로 쓰인 특허 코드는 세분화된 분류가 포함된 4자리 코드만을 사용하여 종류가 많아 포함되는 내용이 포괄적이기 때문에 분류하는 데에 있어서 오류를 일으켰다.
(B29C 31/00, B29C 31/02, B29C 31/04 ... 같은 코드들이 B29C에 함께 포함됨)
분류 코드를 소분류까지 분류한다면 Target label이 너무 많아지고 이번 연구처럼 코드를 4자리까지만 포함시키면 다양한 내용과 단어를 포함하여 해당 분류와 관련이 적은 텍스트를 모두 학습 데이터로 사용하게 되는 한계가 있었다. 이를 극복하기 위해 텍스트 내에서 분류 코드에 해당되는 키워드를 파악할 수 있는 개체명 인식기를 개발한다면 분류에 필요한 키워드를 추출하여 적절한 텍스트 데이터를 구축할 수 있을 것이다. 결과적으로는 해당 도메인의 분류 성능에 도움을 줄 수 있을 것이다.

명령어 예시

  • CUDA_VISIBLE_DEVICES=0 python train.py -Level 3 -s_year 2003 -e_year 2017 -batch_size 64 -max_length 256 -kisti_label false -desc all_Batch_Size_64_Max_Len_256
  • Level : 데이터 파일 이름 (전처리 level)
  • s_year : 데이터 파일 이름 (시작 연도)
  • e_year : 데이터 파일 이름 (끝 연도)
  • batch_size : 배치 사이즈
  • max_length : 최대 시퀀스 길이
  • kisti_label : kisti 데이터 label만 사용할 것인지 선택 (True : kisti label만 사용)
  • desc : 저장될 파일명 (추가 설명을 작성)