SlideShare a Scribd company logo
1 of 8
Download to read offline
Keras 기반 오픈소스 ANAGO를 활용한
한글 NER
2018. 11. 21.
이현민
목차
1. 개요
2. Tagging
3. Class 구성
4. 모델 작성 시 고려 사항
5. ANAGO 소개
6. 예측 결과 예시
1. 개요
Ⅰ. 개요
 배경
− NER을 하기 위해서는 단순히 DNN 알고리즘 구현을 하는 것 외에 Tagging 결과를 Entity별로 성능을 확인할
수 있는 모듈을 필요로 합니다. 또한 예측된 결과의 Entity 정보를 포함하는 JSON 형태와 같은 구조화된
결과를 도출할 수 있어야 합니다.
− Python, Keras, Bidirectional-LSTM으로 되어 있는 오픈소스 ANAGO를 활용 한글데이터에 적용하여 경량의
솔루션을 찾고자 함.
Keras 기반 오픈소스를 ANAGO를 이용한 한글 NER 의 개요를 소개합니다.
2. Tagging
Ⅰ. 개요
 Character 기반 BIO Tagging
아 B-LC
프 I-LC
가 I-LC
니 I-LC
스 I-LC
탄 E-LC
의 O
O
활용된 Tagging 형식을 소개 합니다.
Location Entity의 시작
Location Entity의 마지막
3. Class 구성
Ⅰ. 개요
 데이터 구성
학습 및 테스트에 사용된 데이터 셋 구성을 소개합니다.
Entity Tag Name Entity Logical Name TRAIN SET TEST SET
DT 날짜 472 131
TI 시간 64 11
OG 기관 533 154
LC 위치 473 210
4. 모델 작성 시 고려 사항
Ⅰ. 개요
 고려사항
− 영어 텍스트 기반 NER에서는 word 기반 내지는 word + character 기반으로 라벨링 및 모델을 만들면 됨.
하지만 한글 기반 NER은 단어기반으로 하기가 어려움.
− [ 문제점 ] 이름을 Entity로 식별한다고 하면 “최순실은 국정 농단을 저질렀다". 에서 "최순실/은/으로"
구분되면 좋은데, 최/순실은 또는 최순/실은 등 tokenizer에 따라 다양하게 나뉘게 됨. 즉 Entity의 종류 및
tokenizer의 종류에 따라 달라 token이 달라지게 됨. 이는 학습 및 성능에 매우 부정적인 영향을 미치게 됨.
− [ 방향 1 ] tagging을 할때 결국은 문자열 중에서 character 기반으로 하는 것이 합리적. “최순실은 국정농단을
저질렀다“ 같으면 최(B-NM)순(I-NM)실(E-NM)은(O) 국(O)정(O)농(O)단(O)을(O)... 와 같이 tagging의 결과가
나오게 됨.
− [ 방향 2 ] NER의 성능은 character 단위가 아니라 객체(Entity) 단위로 성능이 측정되어야 함. 즉 후처리로
객체 단위로 Detecting 여부를 식별하고 객체 단위로 Multi-Class 기준의 성능결과가 나와야 함!!!
− 임베딩 방식 및 알고리즘의 선택 이전에 위의 방향1, 방향2가 기본적으로 가능해야 함.
NER 에 한글 대상 적용 시 고려 사항을 소개합니다.
5. ANAGO 소개
Ⅰ. 개요
 Anago 소개
− Bidirectional LSTM 기반으로 작성이 되어 있음.
− word 기반에서는 다양하게 적용할 수 있는 옵션들에 제공됨.
− CRF 적용 여부
− WORD + Character 동시 적용
− word embedding 선택적으로 적용 등.
− https://github.com/Hironsan/anag
Python, Keras 기반 오픈소스 ANAGO를 소개합니다.
6. 예측 결과 예시
Ⅰ. 개요
한글 적용 성능 결과 및 예측 예시를 소개 합니다. 오탈자가 있어도 잘 식별 합니다.
 예측 예1
입력 데이터 :아프니스칸의 장래를
출력 결과 :
{'words': ['아', '프', '니', '스', '칸', '의', ' ', '장', '래', '를'],
'entities': [{'text': '아 프 니 스 칸',
'type': 'LC',
'score': 0.9482332468032837,
'beginOffset': 0,
'endOffset': 5}]}
 예측 예2 ( 오탈자 )
입력 데이터 : 아프니스탄의 장래를
출력 결과 :
{'words': ['아', '프', '니', '스', '탄', '의', ' ', '장', '래', '를'],
'entities': [{'text': '아 프 니 스 탄',
'type': 'LC',
'score': 0.9648435711860657,
'beginOffset': 0,
'endOffset': 5}]}

More Related Content

What's hot (8)

파이썬을 활용한 자연어분석 기초
파이썬을 활용한 자연어분석 기초파이썬을 활용한 자연어분석 기초
파이썬을 활용한 자연어분석 기초
 
파이썬을 활용한 자연어 분석 - 추가분
파이썬을 활용한 자연어 분석 - 추가분파이썬을 활용한 자연어 분석 - 추가분
파이썬을 활용한 자연어 분석 - 추가분
 
자연어2 | 1차강의
자연어2 | 1차강의자연어2 | 1차강의
자연어2 | 1차강의
 
파이썬과 자연어 4 | word/doc2vec
파이썬과 자연어 4 | word/doc2vec파이썬과 자연어 4 | word/doc2vec
파이썬과 자연어 4 | word/doc2vec
 
자연어4 | 1차강의
자연어4 | 1차강의자연어4 | 1차강의
자연어4 | 1차강의
 
자연어1 | 1차강의
자연어1 | 1차강의자연어1 | 1차강의
자연어1 | 1차강의
 
Sequence to Sequence Learning with Neural Networks
Sequence to Sequence Learning with Neural NetworksSequence to Sequence Learning with Neural Networks
Sequence to Sequence Learning with Neural Networks
 
CS294-112 18
CS294-112 18CS294-112 18
CS294-112 18
 

Similar to KERAS 기반 오픈소스 ANAGO를 활용한 한글 NER

[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java유리 하
 
[강의] OOP 개요
[강의] OOP 개요[강의] OOP 개요
[강의] OOP 개요Nohyun Kee
 
Spark Day 2017 Machine Learning & Deep Learning With Spark
Spark Day 2017 Machine Learning & Deep Learning With SparkSpark Day 2017 Machine Learning & Deep Learning With Spark
Spark Day 2017 Machine Learning & Deep Learning With SparkSangHoon Lee
 
자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)중선 곽
 
Phrase Tagger, 구문 태거
Phrase Tagger, 구문 태거Phrase Tagger, 구문 태거
Phrase Tagger, 구문 태거찬희 이
 
NLU Tech Talk with KorBERT
NLU Tech Talk with KorBERTNLU Tech Talk with KorBERT
NLU Tech Talk with KorBERTLGCNSairesearch
 
생체 광학 데이터 분석 AI 경진대회 3위 수상작
생체 광학 데이터 분석 AI 경진대회 3위 수상작생체 광학 데이터 분석 AI 경진대회 3위 수상작
생체 광학 데이터 분석 AI 경진대회 3위 수상작DACON AI 데이콘
 
[Langcon2020]롯데의 딥러닝 모델은 어떻게 자기소개서를 읽고 있을까?
[Langcon2020]롯데의 딥러닝 모델은 어떻게 자기소개서를 읽고 있을까?[Langcon2020]롯데의 딥러닝 모델은 어떻게 자기소개서를 읽고 있을까?
[Langcon2020]롯데의 딥러닝 모델은 어떻게 자기소개서를 읽고 있을까?ssuseraf7587
 
문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의Kwangyoun Jung
 
[Apex Trigger 연재강의 6회차] 트리거를 실무에서 어디에 어떻게 사용 하는가?
[Apex Trigger 연재강의 6회차] 트리거를 실무에서 어디에 어떻게 사용 하는가?[Apex Trigger 연재강의 6회차] 트리거를 실무에서 어디에 어떻게 사용 하는가?
[Apex Trigger 연재강의 6회차] 트리거를 실무에서 어디에 어떻게 사용 하는가?JaewonLee153
 
[NUGU Conference 2018] 세션 B-3.2 : 지식기술 소개 2
[NUGU Conference 2018] 세션 B-3.2 : 지식기술 소개 2[NUGU Conference 2018] 세션 B-3.2 : 지식기술 소개 2
[NUGU Conference 2018] 세션 B-3.2 : 지식기술 소개 2NUGU developers
 
파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)SK(주) C&C - 강병호
 
C'est la vie (hello bert!)
C'est la vie (hello bert!)C'est la vie (hello bert!)
C'est la vie (hello bert!)Junho Lee
 
deep encoder, shallow decoder reevaluating non-autoregressive machine transl...
deep encoder, shallow decoder  reevaluating non-autoregressive machine transl...deep encoder, shallow decoder  reevaluating non-autoregressive machine transl...
deep encoder, shallow decoder reevaluating non-autoregressive machine transl...taeseon ryu
 
11장 시스템
11장 시스템11장 시스템
11장 시스템kidoki
 
[오픈소스컨설팅]MyBatis Basic
[오픈소스컨설팅]MyBatis Basic[오픈소스컨설팅]MyBatis Basic
[오픈소스컨설팅]MyBatis BasicJi-Woong Choi
 
김윤환_포트폴리오
김윤환_포트폴리오김윤환_포트폴리오
김윤환_포트폴리오Yun-hwan Kim
 

Similar to KERAS 기반 오픈소스 ANAGO를 활용한 한글 NER (20)

[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java
 
[강의] OOP 개요
[강의] OOP 개요[강의] OOP 개요
[강의] OOP 개요
 
Spark Day 2017 Machine Learning & Deep Learning With Spark
Spark Day 2017 Machine Learning & Deep Learning With SparkSpark Day 2017 Machine Learning & Deep Learning With Spark
Spark Day 2017 Machine Learning & Deep Learning With Spark
 
자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)
 
Phrase Tagger, 구문 태거
Phrase Tagger, 구문 태거Phrase Tagger, 구문 태거
Phrase Tagger, 구문 태거
 
NLU Tech Talk with KorBERT
NLU Tech Talk with KorBERTNLU Tech Talk with KorBERT
NLU Tech Talk with KorBERT
 
생체 광학 데이터 분석 AI 경진대회 3위 수상작
생체 광학 데이터 분석 AI 경진대회 3위 수상작생체 광학 데이터 분석 AI 경진대회 3위 수상작
생체 광학 데이터 분석 AI 경진대회 3위 수상작
 
[Langcon2020]롯데의 딥러닝 모델은 어떻게 자기소개서를 읽고 있을까?
[Langcon2020]롯데의 딥러닝 모델은 어떻게 자기소개서를 읽고 있을까?[Langcon2020]롯데의 딥러닝 모델은 어떻게 자기소개서를 읽고 있을까?
[Langcon2020]롯데의 딥러닝 모델은 어떻게 자기소개서를 읽고 있을까?
 
문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의
 
Nlp study1
Nlp study1Nlp study1
Nlp study1
 
[Apex Trigger 연재강의 6회차] 트리거를 실무에서 어디에 어떻게 사용 하는가?
[Apex Trigger 연재강의 6회차] 트리거를 실무에서 어디에 어떻게 사용 하는가?[Apex Trigger 연재강의 6회차] 트리거를 실무에서 어디에 어떻게 사용 하는가?
[Apex Trigger 연재강의 6회차] 트리거를 실무에서 어디에 어떻게 사용 하는가?
 
파이썬 데이터 분석 (18년)
파이썬 데이터 분석 (18년)파이썬 데이터 분석 (18년)
파이썬 데이터 분석 (18년)
 
[NUGU Conference 2018] 세션 B-3.2 : 지식기술 소개 2
[NUGU Conference 2018] 세션 B-3.2 : 지식기술 소개 2[NUGU Conference 2018] 세션 B-3.2 : 지식기술 소개 2
[NUGU Conference 2018] 세션 B-3.2 : 지식기술 소개 2
 
KSC2020 PT
KSC2020 PTKSC2020 PT
KSC2020 PT
 
파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)
 
C'est la vie (hello bert!)
C'est la vie (hello bert!)C'est la vie (hello bert!)
C'est la vie (hello bert!)
 
deep encoder, shallow decoder reevaluating non-autoregressive machine transl...
deep encoder, shallow decoder  reevaluating non-autoregressive machine transl...deep encoder, shallow decoder  reevaluating non-autoregressive machine transl...
deep encoder, shallow decoder reevaluating non-autoregressive machine transl...
 
11장 시스템
11장 시스템11장 시스템
11장 시스템
 
[오픈소스컨설팅]MyBatis Basic
[오픈소스컨설팅]MyBatis Basic[오픈소스컨설팅]MyBatis Basic
[오픈소스컨설팅]MyBatis Basic
 
김윤환_포트폴리오
김윤환_포트폴리오김윤환_포트폴리오
김윤환_포트폴리오
 

KERAS 기반 오픈소스 ANAGO를 활용한 한글 NER

  • 1. Keras 기반 오픈소스 ANAGO를 활용한 한글 NER 2018. 11. 21. 이현민
  • 2. 목차 1. 개요 2. Tagging 3. Class 구성 4. 모델 작성 시 고려 사항 5. ANAGO 소개 6. 예측 결과 예시
  • 3. 1. 개요 Ⅰ. 개요  배경 − NER을 하기 위해서는 단순히 DNN 알고리즘 구현을 하는 것 외에 Tagging 결과를 Entity별로 성능을 확인할 수 있는 모듈을 필요로 합니다. 또한 예측된 결과의 Entity 정보를 포함하는 JSON 형태와 같은 구조화된 결과를 도출할 수 있어야 합니다. − Python, Keras, Bidirectional-LSTM으로 되어 있는 오픈소스 ANAGO를 활용 한글데이터에 적용하여 경량의 솔루션을 찾고자 함. Keras 기반 오픈소스를 ANAGO를 이용한 한글 NER 의 개요를 소개합니다.
  • 4. 2. Tagging Ⅰ. 개요  Character 기반 BIO Tagging 아 B-LC 프 I-LC 가 I-LC 니 I-LC 스 I-LC 탄 E-LC 의 O O 활용된 Tagging 형식을 소개 합니다. Location Entity의 시작 Location Entity의 마지막
  • 5. 3. Class 구성 Ⅰ. 개요  데이터 구성 학습 및 테스트에 사용된 데이터 셋 구성을 소개합니다. Entity Tag Name Entity Logical Name TRAIN SET TEST SET DT 날짜 472 131 TI 시간 64 11 OG 기관 533 154 LC 위치 473 210
  • 6. 4. 모델 작성 시 고려 사항 Ⅰ. 개요  고려사항 − 영어 텍스트 기반 NER에서는 word 기반 내지는 word + character 기반으로 라벨링 및 모델을 만들면 됨. 하지만 한글 기반 NER은 단어기반으로 하기가 어려움. − [ 문제점 ] 이름을 Entity로 식별한다고 하면 “최순실은 국정 농단을 저질렀다". 에서 "최순실/은/으로" 구분되면 좋은데, 최/순실은 또는 최순/실은 등 tokenizer에 따라 다양하게 나뉘게 됨. 즉 Entity의 종류 및 tokenizer의 종류에 따라 달라 token이 달라지게 됨. 이는 학습 및 성능에 매우 부정적인 영향을 미치게 됨. − [ 방향 1 ] tagging을 할때 결국은 문자열 중에서 character 기반으로 하는 것이 합리적. “최순실은 국정농단을 저질렀다“ 같으면 최(B-NM)순(I-NM)실(E-NM)은(O) 국(O)정(O)농(O)단(O)을(O)... 와 같이 tagging의 결과가 나오게 됨. − [ 방향 2 ] NER의 성능은 character 단위가 아니라 객체(Entity) 단위로 성능이 측정되어야 함. 즉 후처리로 객체 단위로 Detecting 여부를 식별하고 객체 단위로 Multi-Class 기준의 성능결과가 나와야 함!!! − 임베딩 방식 및 알고리즘의 선택 이전에 위의 방향1, 방향2가 기본적으로 가능해야 함. NER 에 한글 대상 적용 시 고려 사항을 소개합니다.
  • 7. 5. ANAGO 소개 Ⅰ. 개요  Anago 소개 − Bidirectional LSTM 기반으로 작성이 되어 있음. − word 기반에서는 다양하게 적용할 수 있는 옵션들에 제공됨. − CRF 적용 여부 − WORD + Character 동시 적용 − word embedding 선택적으로 적용 등. − https://github.com/Hironsan/anag Python, Keras 기반 오픈소스 ANAGO를 소개합니다.
  • 8. 6. 예측 결과 예시 Ⅰ. 개요 한글 적용 성능 결과 및 예측 예시를 소개 합니다. 오탈자가 있어도 잘 식별 합니다.  예측 예1 입력 데이터 :아프니스칸의 장래를 출력 결과 : {'words': ['아', '프', '니', '스', '칸', '의', ' ', '장', '래', '를'], 'entities': [{'text': '아 프 니 스 칸', 'type': 'LC', 'score': 0.9482332468032837, 'beginOffset': 0, 'endOffset': 5}]}  예측 예2 ( 오탈자 ) 입력 데이터 : 아프니스탄의 장래를 출력 결과 : {'words': ['아', '프', '니', '스', '탄', '의', ' ', '장', '래', '를'], 'entities': [{'text': '아 프 니 스 탄', 'type': 'LC', 'score': 0.9648435711860657, 'beginOffset': 0, 'endOffset': 5}]}