한국어 BERT, HanBert를 소개합니다.

HanBERT Package에는 한국어 BERT와 이를 사용하기 위한 한국어 분석기 Moran, 그리고 기계독해 예제 등이 포함되어 있습니다. HanBert를 이용한 재미있는 [기계독해 데모] 를 방문해 보세요.
HanBert의 상업적인 활용을 위해서는 [상업적 활용] 을 참고해주세요.


 

 

Pre-trained Hangul-BERT (HanBert-54kN)

  • HanBert-54kN : HanBert 기본 모델 (600만 Step 학습)
    • bert_config.json
    • checkpoint
    • model.ckpt-6000000.data-00000-of-00001
    • model.ckpt-6000000.meta
    • model.ckpt-6000000.index
    • vocab_54k.txt
  • HanBert-54kN-IP : 특허문서를 추가하여 만들어진 기본 모델 (기본 500만 + 특허 100만)
    • bert_config.json
    • checkpoint
    • model.ckpt-6000000.data-00000-of-00001
    • model.ckpt-6000000.meta
    • model.ckpt-6000000.index
    • vocab_54k.txt
  • HanBert-54kN-MRC : 기계독해 학습 데이터로 Fine-tuning된 모델 (mrc_test.py에서 사용)
    • bert_config.json
    • checkpoint
    • model.ckpt-60000.data-00000-of-00001
    • model.ckpt-60000.meta
    • model.ckpt-60000.index
    • vocab_54k.txt
  • usr_local_moran : 한국어 분석 라이브러리와 DB
    • libmoran4dnlp.so
    • moran.db
    • udict.txt
    • uentity.txt
  • src :
    • 구글에서 배포한 프로그램
      • modeling.py
      • optimization.py
    • 구글에서 배포한 프로그램을 구미에 맞게 수정한 프로그램 by TwoBlock Ai
      • mrc_test.py : 기계 독해 맛보기
      • run_korquad_1.0.py : 기계 독해 (KorQuAD 1.0 학습 프로그램)
    • 구글에서 배포한 프로그램을 구미에 맞게 수정한 프로그램 by TwoBlock Ai
      • tokenization.py : 한글 토크나이저 (moran 구동 모듈 포함)
      • tokenization_test.py : 한글 토크나이저 테스트
    • 투블럭Ai에서 배포하는 형태소 분석 구동 프로그램 by TwoBlock Ai
      • moran.py
      • moran_test.py

 


Training Settings

  • 학습 코퍼스 (일반 문서)
    • size : 3.5억개 문장, 113억개 형태소, 70G바이트
    • Dup : 1 ~ 10 (코퍼스 성격에 따라 조합)
  • 학습 코퍼스 (특허 문서)
    • size : 3.7억개 문장, 150억개 형태소, 75G바이트
    • Dup : 2
  • 학습 환경
    • Google TPU V3-8
    • 기본 학습 Step수 : 600만
    • 특허 추가 Step수 : 600만 (일반 500만 + 특허문서 100만)
  • 한국어 형태소 분절
    • moran wiki 버젼 : moran-2013 버젼 형태소 분석기의 Deep NLP 버젼
    • 품사를 표시하지 않고 음절단위로 분절 및 ~기호 부착
    • 앞의 형태소에 붙여야 하는 경우 ~, 그런데 기능어였던 경우 ~~
    • moran.db (126M) : 기본 지식 (64만단어 + 57만 기분석사전 + 174만 명칭어) + wiki 표제어 (445,701 단어)
    • 초당 0.5M 수준의 분절 속도 (형태소 분석후, 분절 + 기호 부착)
  • Vocab
    • 크기 : 총 54000표제어 : 53800개 단어 + 200개의 여유 공간

 


Requirements

  • Python : 3.6.8
  • tensorflow-gpu : 1.11.0
  • OS : ubuntu 18.04

How to Install

  • 모델과 DB File의 크기가 4G입니다. Git 배포 용량을 초과합니다.
  • 윈도우 버젼이나, ubuntu 18.04와 호환되지 않는 환경은 코드를 지원하고 있지 않습니다.
  • hanbert54kN.tar.gz를 풀면, 맨처음 해야 하는 일은 moran의 활성화입니다.
  • 다른 디렉토리에 사용하고 싶은 경우는 이 글의 아래부분에 설명되어 있습니다.
1
2
3
4
tar xvfz hanbert.tar.gz
cd HanBert-54kN/
sudo mkdir /usr/local/moran
cp usr_local_moran/* /usr/local/moran
  • Moran의 동작여부 확인
    • $ python src/tokenization_test.py
    • Cat.12가 600 Mbps,
    • 12 ~~가 600 ~mbps
    • ['cat.12', '~~가', '600', 'mbps', ',']
    • cat.12 ~~가 600 mbps , Cat.12가 600 Mbps
    • ['나', '~~는', '걸어가', '~~고', '있', '~~는', '중', '~~입', '~~니다', '.', '나는걸어', '가', '~~고', '~있', '~~는', '중', '~~입', '~~니다', '.', '잘', '분류', '~~되', '~~기', '~~도', '한', '~~다', '.', '잘', '먹', '~~기', '~~도', '한', '~~다', '.']
    • 나 ~~는 걸어가 ~~고 있 ~~는 중 ~~입 ~~니다 . 나는걸어 가 ~~고 ~있 ~~는 중 ~~입 ~~니다 . 잘 분류 ~~되 ~~기 ~~도 한 ~~다 . 잘 먹 ~~기 ~~도 한 ~~다 .
    • ['나', '~~는', '걸어가', '~~고', '있', '~~는', '중', '~~입', '~~니다', '.', '나', '##는걸', '##어', '가', '~~고', '~있', '~~는', '중', '~~입', '~~니다', '.', '잘', '분류', '~~되', '~~기', '~~도', '한', '~~다', '.', '잘', '먹', '~~기', '~~도', '한', '~~다', '.']
    •  
  • HanBert에 대해서는 더 이상의 필요사항이 없습니다.
  • 추가적인 사항들은 구글에서 공개한 https://github.com/google-research/bert 실행 환경과 동일합니다.
    • Python : 3.6.8
    • tensorflow-gpu : 1.11.0
  • KorQuAD 1.0 학습 (https://korquad.github.io/category/1.0_KOR.html)
    • KorQuAD 1.0의 데이터를 다운로드 받으세요. KorQuAD_v1.0_train.json, KorQuAD_v1.0_dev.json
    • 평가용 프로그램을 다운로드 받으세요. KorQuAD_v1.0_dev.json
    • 예제로 나와있는 코드를 실행해 보세요
      • python src/run_korquad_1.0.py --init_checkpoint=HanBert-54kN --bert_config_file=HanBert-54kN/bert_config.json --vocab_file=HanBert-54kN/vocab_54k.txt --do_train=true --do_predict=true --train_batch_size=16 --num_train_epochs=1.0 --learning_rate=3e-5 --train_file=korquad.1.0/KorQuAD_v1.0_train.json --predict_file=korquad.1.0/KorQuAD_v1.0_dev.json --output_dir=result python evaluate-v1.0.py korquad.1.0/KorQuAD_v1.0_dev.json result/predictions.json

기계 독해 맛보기

  • 미리 학습을 시킨 기계 독해 모델로 느껴보실 수 있도록 학습된 모델을 소개합니다.
    • Model명 : HanBert-54kN-MRC
    • epochs : 3.0
  • 학습 데이터가 서로 다른 지침으로 작성되어서 동일한 형식의 질문에 각각 다른 답변의 유형이 존재합니다.
    • 학습데이터의 품질에 대해서도 의구심이 있지만, 공개되어 있는 학습데이터를 사용하여 학습하였습니다.
      • 문제시 되는 것들 :
      • 예 : 어디에서 출발해? A) 부산 B) 부산에서
  • 학습 데이터
    • HanBert-54kN + 기계독해 학습 데이터 (총 253,466건)
      • NIA의 기계독해 데이터 : 162,632건
      • KorQuAD 1.0의 데이터 : 66,181건
      • KorQuAD 2.0의 데이터 : 24,653건
  • 실행 방법과 예제
  • HanBert-54kN-MRC 디렉토리에 있는 bert_config와 model, vocab을 사용하세요.
  • src/mrc_test.py 코드에 기본으로 지정되어 있으나, 디렉토리가 변경된 경우에 지정해 주셔야 합니다.

Moran (한국어 문장을 Deep NLP용 한국어 표현으로 변환) 예제

  • moran.db, libmoran4dnlp.so의 위치는 /usr/local/moran 입니다.
  • MorAn20 패키지 설치를 통해서 DB의 위치와 상관없이 클라우드와 도커환경에서도 사용할 수 있습니다.
  • moran.py의 소스코드에서 libmoran4dnlp.so의 위치를 수정하실 수 있습니다.
  • udict.txt는 사용자 기분서-사전입니다. 띄어쓰기 단위인 어절에 대한 분석 결과를 등록할 수 있습니다.
  • uentity.txt는 사용자 명칭어 사전입니다. 현재버젼에서는 제공되지 않는 기능이므로, 그대로 두시면 됩니다.
>>> import moran
>>> moran_tokenizer = moran.MoranTokenizer()
>>> x = '한국어 BERT를 소개합니다.'
>>> moran_line = moran.text2moran(x, moran_tokenizer)
>>> print(moran_line)
['한국어', 'bert', '~~를', '소개', '~~합', '~~니다', '.']
>>> x = '<table> <tr> <td> 한국어 BERT를 소개합니다. </td> </tr> </table>'
>>> moran_line = moran.text2moran(x, moran_tokenizer)
>>> print(moran_line)
['<table>', '<tr>', '<td>', '한국어', 'bert', '~~를', '소개', '~~합', '~~니다', '.', '</td>', '</tr>', '</table>']

Contacts

  • info@tbai.info, 주식회사 투블럭에이아이, https://twoblockai.com/
  • HanBert와 Moran의 기술 및 Resouce 도입과 튜닝, 현업 적용 등의 상업적 이용을 위한 문의를 환영합니다.
  • HanBERT_MRC, HanBERT_NER의 라이센스에 대한 문의를 환영합니다.
  • 자체 보유중인 코퍼스와 투블럭Ai가 보유한 정제된 코퍼스를 통합하여 자체적인 BERT를 개발하기 위한 문의를 환영합니다.

HanBert-54kN [다운로드]

구글 드라이브에서 다운로드 됩니다.


HanBert 굽는데는 일부 TFRC 프로그램의 협찬을 받았습니다.

2019년 개방형 경진대회 우수기업 사업화 지원의 결과물 중 일부 입니다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 오라클 기본 샘플 데이터베이스 졸리운_곰 2014.01.02 25084
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 24563
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 25942
27 [java dbms][database] [컴] Apache Derby 사용하기 - 4 - in-memory DB 졸리운_곰 2021.04.15 76
26 [java dbms][database] [컴] Apache Derby 사용하기 - 3 - Apache Derby Network Server 졸리운_곰 2021.04.15 17
25 [java dbms][database] [컴] Apache Derby 사용하기 - 2 - sql script tool ij 사용하기 졸리운_곰 2021.04.15 123
24 [java dbms][database] [컴] Apache Derby 사용하기 - 1 - Derby 설치 file 졸리운_곰 2021.04.15 110
23 실습 2 - GROUP 졸리운_곰 2020.09.30 20
22 [SQL 가이드] 데이터베이스 모델의 이해 (Understanding Database model) file 졸리운_곰 2020.06.13 122
21 [SQL 가이드] 식별자(Identification)의 개념 file 졸리운_곰 2020.06.13 60
20 [SQL 가이드] 관계(relationship)의 개념 file 졸리운_곰 2020.06.13 83
19 [SQL 가이드] 속성(attribute)의 개념 file 졸리운_곰 2020.06.13 28
18 [SQL 가이드] 엔티티의 개념 file 졸리운_곰 2020.06.13 203
17 [SQL] join의 on절과 where절 차이 졸리운_곰 2020.05.16 34
16 JOIN*(3개 테이블) and GROUP BY*(보이지않더라도 key칼럼으로) and ORDER BY 졸리운_곰 2020.05.16 50
15 다중 테이블에서 데이터 검색 - JOIN file 졸리운_곰 2020.05.16 23
14 IFNULL(MYSQL), ISNULL(MSSQL), NVL(ORACLE) 졸리운_곰 2018.07.24 72
13 4 Ways to Join Only The First Row in SQL file 졸리운_곰 2018.07.03 39
12 DBMS별 기존테이블 SELECT해서 새 테이블에 INSERT하여 데이터 ... file 졸리운_곰 2018.01.22 136
11 SOL 개발자의 현주소 : 개발자가 SQL 작성시 고쳐야 하는 태도 file 졸리운_곰 2018.01.01 111
10 오라클 운반 최소 단위 BLOCK file 졸리운_곰 2017.07.15 355
9 재미있는 DB 이야기 ‘놀라운 마방진의 세계’ file 졸리운_곰 2017.07.15 827
8 재미있는 DB 이야기 ‘사라진 날짜를 찾아라’ file 졸리운_곰 2017.07.15 614
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED