> For the complete documentation index, see [llms.txt](https://lswkim322.gitbook.io/til/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lswkim322.gitbook.io/til/til-ml/boostcamp/p-stage-klue/9.30.md).

# 오피스아워 (9.30, 목)

Relation extraction은 하나의 문장이 있을 때, 특정 단어(entity) 들 사이의 속성과 관계를 추론하는 문제

## Competition Idea & Tips

### 1. Language Model

다양한 언어모델을 사용해볼 것

* **KLUE-RoBERTa\_{small,base,large}**
  * <https://github.com/KLUE-benchmark/KLUE>
* **mBERT**
* **KoBERT**
  * <https://github.com/SKTBrain/KoBERT>
* **KoGPT2**
  * <https://github.com/gyunggyung/KoGPT2-FineTuning>
* **KoBart**
  * <https://github.com/SKT-AI/KoBART>
* **KoElectra**
  * <https://github.com/monologg/KoELECTRA>

### 2. Using special Token

Entity의 위치 정보를 이용하여 \[ENT] / \[/ENT]와 같은 special token 을 추가해본다.

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-Mkqttv2dpTQDjLvw-nn%2F-MkuT8sm_TRYgZKZec9_%2Fimage.png?alt=media\&token=648a35da-e0f3-4175-8400-d989f65a2151)

추가하는 방법도 다양한 종류가 있다.

* Entity marker: 위에 그림과 같이 시작과 끝을 표시
* ❗Typed entity marker: \[ent]가 아닌 \[PER], \[ORG] 등 type으로 표현
* ❗Typed entity marker(punct) : special token이 아닌 문장부호(.,@\*)를 사용한다.

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-Mkqttv2dpTQDjLvw-nn%2F-MkuTieYBc2zgSWPf3-G%2Fimage.png?alt=media\&token=b1e3bc5d-f301-4415-a5d3-bec14f6be78c)

{% embed url="<https://arxiv.org/abs/2102.01373>" %}

### 3. Additional Embedding Layer

Entity 유무에 따른 임베딩 레이어를 추가 한다.

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-Mkqttv2dpTQDjLvw-nn%2F-MkuUBGKmsnwuwz1_jWS%2Fimage.png?alt=media\&token=9b232c1f-8d76-4fb8-9f9b-c390d1cd9e95)

### 4. Additional Output Layer

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-Mkqttv2dpTQDjLvw-nn%2F-MkuUK989NDiTPPskBH9%2Fimage.png?alt=media\&token=32742003-5565-476a-b15c-74311da8d125)

* 언어 모델을 거쳐서 나온 임베딩 위에 LSTM등 모델을 추가해서 그 결과를 기반으로 Relation을 추출한다.
* 더 깊게 모델을 쌓고, sequence관계를 모델링할 수 있다는 장점이 있다.

### 5. Language Model Domain Adaption

사전학습된 모델을 바로 fine-tuning 하는 것이 아니라 데이터 셋으로 한번 더 사전학습을 진행하고 fine-tuning을 하는 것

* 언어 모델이 RE 데이터 셋 내의 문장들에 대해 적응(adapt) 할 수 있도록 도와줄수 있다.

### 6. Data Augmentation

부족한 데이터를 해결하기 위한 증강작업을 진행 -> 일일이 추가하기엔 너무 힘든일이다...

#### EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks

{% embed url="<https://arxiv.org/abs/1901.11196>" %}

* **Text Classification 분야에서 간단한 전처리 기법을 통해 Augmentation**
* **50%의 데이터만 가지고도 전체 데이터를 사용했을 때와 같은 성능을 보임**
* **외부 데이터 혹은 이전에 학습된 모델들을 사용하지 않음**
* **4가지 방법을 제시하며, 논문에서는 5가지 text classification task 에서 모두 성능 향상을 보임**
  * 원본데이터 : 이순신은 조선 중기의 무신이다.
  * **SR(Synonym Replacement): 문장에서 불용어를 제외한 임의의 단어를 선택 후, 동의어로 대체**
    * 이순신은 조선 중기의 ***장수***&#xC774;다.
  * **RI(Random Insertion): 문장의 임의의 위치에 임의의 단어를 삽입**
    * 이순신은 ***과거*** 조선 중기의 무신이다.
  * **RS(Random Swap): 문장의 임의의 두 단어의 위치를 스왑**
    * 이순신은 ***무신*** 중기의 ***조선***&#xC774;다.
  * **RD(Random Deletion): 문장내의 임의의 단어를 삭제**
    * 이순신은 (조선) 중기의 무신이다.

{% embed url="<https://github.com/kakaobrain/pororo/blob/master/examples/>" %}

PORORO를 활용한 예시 코

* 주어진 Dataset이 작을때 사용하면 성능향상을 보인다.
* 모든 Dataset에 Augmentation 하면 미미한 향상만을 보인다.

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkuYmNSnua-F5rkxJTU%2F-Mku_55k2HamecITK1ux%2Fimage.png?alt=media\&token=65b6218b-48cc-468a-924e-10a27771e686)

#### ❗AEDA : An Easier Data Augmentation Technique for Text Classification, 2021

* 단어가 아닌 무작위로 문장부호(. ? : !,)를 넣고 이를 학습데이터로 학습한다.
* 추가하는 문장부호의 개수는 \[0, 전체 단어의 갯수의 1/3] 내에서 무작위로 추출

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkuYmNSnua-F5rkxJTU%2F-Mku_Tcnh3zYl6s2o5pD%2Fimage.png?alt=media\&token=b1853b5d-9ba9-40be-92ff-e83284b5a422)

* 시간이 부족하면 이걸 사용하는 것을 추천
* EDA보다 전반적으로 높은 성능을 보인다고 한다.

#### Round-trip trainslation (a.k.a. Back-translation)

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkuYmNSnua-F5rkxJTU%2F-MkuaXu5b6N11ibuwhnL%2Fimage.png?alt=media\&token=d96782f1-ee0d-4a96-862e-c19029cf1577)

* 한국어를 다른 언어로 번역하고 다시 한국어로 번역하게 되면 새로운 학습 샘플을 생성할 수 있다.
* 어떤 언어로 변환을 하느냐에 따라 성능에 차이가 생길 수 있다고 한다.

> 개인적인 생각으로는 한국어의 번역기의 성능이 현재 엄청 좋진않은거 같아서 의미가 있을지 모르겠다..

#### Single or Multi?

## Recent Studies for Relation Extraction

### 1. Relation Extraction on Special Domain

### 2. Document-level Relation Extraction

문장 단위가 아닌 문장 단위에서의 RE Task

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkuYmNSnua-F5rkxJTU%2F-MkucBcxvmOY4ngTaoHM%2Fimage.png?alt=media\&token=6ff05329-b8f1-4b56-acf5-7cd63b773ccd)

### 3. Graph-based Relation Extraction

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjcKlzGhHYe2bvmxTwS%2F-MkuYmNSnua-F5rkxJTU%2F-MkucJJDk3k2vM75GS58%2Fimage.png?alt=media\&token=360fb1d5-9714-4c13-9117-672c7afc4636)

문서 단위의 Entity 관계를 그래프로 하여 관계를 추론하는 것
