AI/NLP

논문 속 RE Task 관련 데이터셋 이해하기 | TAC Relation Extraction Dataset | KLUE

cstory-bo 2023. 12. 25. 15:06

RE 데이터셋을 구축하기 위해 RE 관련 논문 2개를 데이터셋 구축 위주로 보았다.

TAC Relation Extraction Dataset

Position-aware Attention Supervised Data Improve Slot filling 논문 안에 있는 내용이다.


Slot filling 과제는 Subject 엔티티Object 엔티티relation tag를 채우는 것을 말한다.

 

이 논문의 경우는 새로운 데이터셋인 TACRED를 생성하였다.
이전에 TAC KBP로 Knowledge base를 확장하기 위한 데이터셋이나 SemEval-2010등이 있었는데

양이 적거나 task에 적합하지 않아서 새로 만들었다고 한다.

 

TAC KBP 챌린지를 통해서 데이터를 가져왔으며 2009-2015년까지의 데이터를 사용하였으며 Mechanical Turk를 이용해서 주석을 달았다.

총 106,264개의 데이터들을 모았으며 2009-2012년도 까지의 데이터를 training, 2013은 dev set, 2014은 test set으로 나누었다. 2015년은 slot filling evaluation을 위해서 따로 뺐다.

연도별로 자르는 이 방식이 편리할 수는 있지만 엔티티 종류나 개수, 레이블등이 연도마다 불균형할 수도 있어서 좋지 않을 것 같다.

그래도 기존 데이터셋에 비해 10배 정도 더 많은 데이터를 갖고있다는 것이 장점이며 그리고 더 많은 relation을 갖고있어 slot filling task에 더 좋은 성능을 보여준다.


문장의 길이도 길어져 조금 더 복잡한 문장으로 task 난이도를 높였다고 볼 수 있다.

 

데이터 수집 방식으로는
1) LDC example - Document에 해당 개체명이 어떻게 나와있는지 부터 태깅을 시작해서 2단계를 거쳐 완성한다. + HIT방식 (Generated example에 비해 처음부터 태깅하는 방식)
2) Generated example - 기존의 시스템을 가지고 개량을 해서 태깅하는 방식으로 진행한다.(주체, 대상이 나오는 상황에서 관계만 지정)

LDC example로 1만개, Generated example로 11만개를 만들고 중복을 제거하였다. 그랬더니 4천개 정도 문장이 지워졌기에 여유분을 두어 데이터 제작이 중요하다는 것을 알 수 있다.

작업자들의 작업 신뢰를 위해 데이터셋에 대한 질문을 제공해서 얼마나 잘 푸는지로 검증하였다. 만약 25%이상의 에러가 넘으면 재작업을 하는 방식으로 진행하였다.
데이터 작업자들의 Fleiss Kappa를 측정하고 54.4%가 나온 것을 확인하였다.

***KBP - Knowldege Base를 확장하기 위한 것들로 Slotfilling과 Entity Linking으로 구별된다.

KLUE-RE

이 논문에서는 RE task를 Single sentence classification task로 보고

sub, obj로 relation triplet을 만드는 것이 목적이다.


30개의 label을 사용하고 있으며 no-relation이 빠진 micro f1 score를 계산하여 모델을 평가하였다.

 

WIKIPEDIA, WIKITREE, POLICY - 위키피디아는 온라인 백과사전과 비슷하며 위키트리는 언론사이며 폴리시는 정부정책에 대한 기사들을 모아놓은 말뭉치이다.
이렇게 구어가 아닌 문어성이 짙은 말뭉치들을 가져왔다.
그리고 social bias나 korean hate speech에 관련된 것을 필터링하였다.

TAC-KBP를 참고하였으나 한국어의 특성상 새로운 relation들도 추가를 하였다.

 

NER단계와 관계를 주석하는 2가지 단계로 진행하였으며
첫번째 단계에서
1) KB-based sampling - knowledge base를 기반으로한 샘플링 방법(위키피디아, 나무위키 등으로 구축)
2) uniform sampling - no-relation 데이터도 포함하기 위해 인위로 만든 문장
2가지 접근방법을 사용하였다.

두번째 단계에서는
5개 중에 4개 이상의 파일럿 질문을 맞춘 163명의 사람들로 관계를 정의하는 작업을 수행했다.
추가로 작업과정에서 데이터 자체에 에러가 있는 경우나 개인정보, 비윤리적인 정보인 경우 따로 체크를 할 수 있게 하였다.

특징적으로 Train, Dev, Test set에서 Dev, Test set으로 갈 수록 no-relation 비율을 높였으며 5%이상의 relation인 것들도 몇가지 있었다.

마무리

논문들을 보면서 짧게나마 어떻게 데이터셋을 모았는지 알 수 있었으며,
데이터셋을 만드는 것이 막막했는데 어떤 과정을 거치는 지 알 수 있었다.
그리고 혐오표현이나 이런 것들을 필터링하는 윤리에 관한 부분도 신경 써야한다는 것도 다시 상기시킬 수 있어서 좋았다.