CRF 실습 진행했다 (1) 개체명 인식 task 정의, BIO 태그 소개, 성능평가 방법

코드는 여기 : https://github.com/dhaldhd/crf_ner

교수님이 CRF 수업하시고
나는 알바로 CRF를 이용한 개체명인식 실습을 진행하였드랬다.

실습의 결론 : 여러분 그냥 오늘 한거 말고 LSTM-CRF 쓰세요.

실습 순서는


  1. 개체명 인식 task 정의, BIO 태그 소개, 성능평가 방법
  2. CRFSUITE 설치
  3. CRF 개체명 인식 실습(ESP)
  4. CRF 개체명 인식 실습(한국어)





개체명인식

예시, 설명을 위해 참고한 블로그 : https://blog.naver.com/textom/220942822228
  • 개체명(Named Entity)이란?
    •  문서에서 특정한 의미를 가지고 있는 단어 또는 어구
    • 사람, 지역, 기관, 시간, 날짜 등(도메인에 맞게 정의해서 씀, 정의하기 나름)
    • ex) <박지성:사람>은 <맨체스터 유나이티드 FC:기관> 소속 축구 선수이다.
  • 일반적인 개체명 인식 단위(한국어)
    • 음절 uni-gram, bi-gram, tri-gram
      • 음절uni-gram 
        • 박/지/성/은/_/맨/체/스/터/ ...
      • 음절bi-gram
        • 박지/지성/성은/은_/_맨/맨체/...
      • 음절tri-gram
        • 박지성/지성은/성은_/은_맨/...
      • 뭐 이런식... 이런거... 문장 맨 앞이랑 뒤에 따로 BOS(beginning of sentence) EOS(end of sentence)이런걸 추가하기두 하구 암튼 그럼
    • 형태소
      • 고등학교 국어책 참고 ㅎ_ㅎ
      • 실습은 형태소 단위로 했음(보통 형태소 단위로 젤 많이함)
  • 개체명 태그
    • BIO 태그 사용
      • 아아... 하나의 개체명이 여러개의 형태소로 이루어져 있을 수 있잖오
      • 그래서 BIO tag를 씀 밑에 예에 보면
      • 맨체스터유나이티드FC가 하나의 개체명이기 때문에
      • 개체명의 시작인 '맨체스터' 형태소에는 B_OG(Organization 개체명의 Begin이라는 거) 태그를 붙이고
      • 유나이티드랑 FC 형태소도 역시 Organization 개체명의 일부이지만 시작아니고 이어지는 부분이라서 I_OG를 부여
      • 개체명아닌데에는 O태그 부여
      • 사실 BIO 태그도 적당히 잘 정의해서 쓰면됨 I 태그 뒤에 OG나 PS 같이 개체명 범주 안붙이고 I만 쓰기도 하더라...

형태소
형태소 태그
개체명태그
박지성
NNP
B_PS
JX
O
맨체스터
NNP
B_OG
유나이티드
NNG
I_OG
FC
SL
I_OG
소속
NNG
O
축구
NNG
O
선수
NNG
O
VCP
O
EF
O

이번 실습의 task는 결국!
 input으로 형태소/형태소태그 시퀀스 들어가고 output으로 개체명 태그 시퀀스를 찍으면됨. 

포스팅 하려고 하니까 은근 설명할게 많균 귀찮으니까 여기부턴 적당히 슬슬 할거
중간에 모르는 말이 있으면 구글신께 여쭤보도록 하자

개체명(Named Entity) 성능 평가 방법

실제 정답(Answer)
Positive
Negative
예측
(Prediction)
Positive
True Positive
False Positive
Negative
False Negative
True Negative
  • Precision(정밀도)
    • 𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛=  𝑇𝑃/(𝑇𝑃+𝐹𝑃)
    • 정답으로 예측한 것 중 진짜 정답의 비율
  • Recall(재현율)
    • 𝑅𝑒𝑐𝑎𝑙𝑙=  𝑇𝑃/(𝑇𝑃+𝐹𝑁)
    • 진짜 정답 중 모델이 정답으로 예측한 것의 비율
  • F1 score
    • 𝐹_1 𝑠𝑐𝑜𝑟𝑒=  (2∗𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛∗𝑅𝑒𝑐𝑎𝑙𝑙)/(𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛+𝑅𝑒𝑐𝑎𝑙𝑙)
    • Precision과 Recall 의 조화평균
  • Example
    • 형태소
      형태소 태그
      개체명태그(예측)
      개체명태그(정답)
      박지성
      NNP
      B_PS
      B_PS
      JX
      O
      O
      맨체스터
      NNP
      B_OG
      B_OG
      유나이티드
      NNG
      O
      I_OG
      FC
      SL
      O
      I_OG
      소속
      NNG
      O
      O
      축구
      NNG
      O
      O
      선수
      NNG
      O
      O
      VCP
      O
      O
      EF
      O
      O
    • ‘Entity’ 단위로 계산! ('맨체스터유나이티드FC'가 하나의 entity, '멘체스터'/'유나이티드'/'FC' 나눠서 형태소 단위로 계산 ㄴㄴ)
    • Precision : 50%
    • Recall : 50%
    • F1 score : 50%


댓글

가장 많이 본 글