diff --git a/klue_re.ipynb b/klue_re.ipynb index a0d909f..e44ff05 100644 --- a/klue_re.ipynb +++ b/klue_re.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "concerned-regulation", + "id": "alternative-artwork", "metadata": {}, "source": [ "# BERT를 활용한 관계추출(Relation Extraction, RE)\n", @@ -29,7 +29,7 @@ }, { "cell_type": "markdown", - "id": "lightweight-application", + "id": "innocent-symbol", "metadata": {}, "source": [ "# 필요한 라이브러리를 설치합니다.\n", @@ -39,7 +39,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "inner-crime", + "id": "alternate-solid", "metadata": {}, "outputs": [ { @@ -86,7 +86,7 @@ }, { "cell_type": "markdown", - "id": "critical-trading", + "id": "antique-display", "metadata": {}, "source": [ "# 필요한 라이브러리를 import 합니다." @@ -95,7 +95,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "regulated-musician", + "id": "funny-monster", "metadata": {}, "outputs": [], "source": [ @@ -112,7 +112,7 @@ }, { "cell_type": "markdown", - "id": "mineral-justice", + "id": "relative-founder", "metadata": {}, "source": [ "# GPU 사용을 위해 device를 설정합니다." @@ -121,7 +121,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "pediatric-monday", + "id": "removed-combining", "metadata": {}, "outputs": [], "source": [ @@ -130,7 +130,7 @@ }, { "cell_type": "markdown", - "id": "earned-thirty", + "id": "confident-advance", "metadata": {}, "source": [ "# KLUE RE 데이터셋을 가져옵니다." @@ -139,7 +139,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "proprietary-pioneer", + "id": "functional-devices", "metadata": {}, "outputs": [ { @@ -156,7 +156,7 @@ }, { "cell_type": "markdown", - "id": "modern-rendering", + "id": "adaptive-familiar", "metadata": {}, "source": [ "# 데이터셋은 train과 validation 데이터로 구성되어 있습니다. \n", @@ -168,7 +168,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "dried-fellowship", + "id": "jewish-graphics", "metadata": {}, "outputs": [ { @@ -197,7 +197,7 @@ }, { "cell_type": "markdown", - "id": "geological-engagement", + "id": "broad-venezuela", "metadata": {}, "source": [ "# 데이터 구성\n", @@ -207,7 +207,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "bearing-budapest", + "id": "aging-lingerie", "metadata": {}, "outputs": [ { @@ -238,7 +238,7 @@ }, { "cell_type": "markdown", - "id": "irish-shoulder", + "id": "naked-mineral", "metadata": {}, "source": [ "# train데이터에서 각 label의 수를 살펴보겠습니다.\n", @@ -255,7 +255,7 @@ { "cell_type": "code", "execution_count": 7, - "id": "miniature-token", + "id": "compact-serial", "metadata": {}, "outputs": [ { @@ -314,11 +314,11 @@ }, { "cell_type": "markdown", - "id": "broke-basket", + "id": "starting-boating", "metadata": {}, "source": [ "# 개체 양 끝에 special token을 추가합니다.\n", - "KLUE 논문에 따르면 object 개체의 양 끝에는 \\, \\을, subject 개체의 양 끝에는 \\, \\ 토큰을 추가하여 개체의 위치를 표시한 후에 모델의 입력으로 주어집니다.\n", + "KLUE 논문에 따르면 object 개체의 양 끝에는 , 을, subject 개체의 양 끝에는 , 토큰을 추가하여 개체의 위치를 표시한 후에 모델의 입력으로 주어집니다.\n", "\n", "따라서 데이터에 있는 entity index를 이용해서 해당 토큰을 추가해줍니다.\n", "\n", @@ -332,7 +332,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "creative-asbestos", + "id": "directed-direction", "metadata": {}, "outputs": [], "source": [ @@ -368,7 +368,7 @@ { "cell_type": "code", "execution_count": 9, - "id": "threaded-client", + "id": "valuable-nightmare", "metadata": {}, "outputs": [], "source": [ @@ -380,7 +380,7 @@ { "cell_type": "code", "execution_count": 10, - "id": "bored-replication", + "id": "intellectual-conflict", "metadata": {}, "outputs": [ { @@ -408,7 +408,7 @@ }, { "cell_type": "markdown", - "id": "auburn-logic", + "id": "labeled-division", "metadata": {}, "source": [ "# klue/bert-base 모델을 사용할 예정이므로 모델에 맞는 tokenizer를 가져옵니다." @@ -417,7 +417,7 @@ { "cell_type": "code", "execution_count": 11, - "id": "beginning-penetration", + "id": "minus-leisure", "metadata": {}, "outputs": [], "source": [ @@ -427,7 +427,7 @@ { "cell_type": "code", "execution_count": 12, - "id": "initial-drawing", + "id": "placed-bulgarian", "metadata": {}, "outputs": [], "source": [ @@ -436,7 +436,7 @@ }, { "cell_type": "markdown", - "id": "opening-links", + "id": "shared-absolute", "metadata": {}, "source": [ "# tokenizer를 이용한 토큰화 결과가 어떻게 나오는지 살펴보도록 하겠습니다.\n", @@ -446,7 +446,7 @@ { "cell_type": "code", "execution_count": 13, - "id": "french-nitrogen", + "id": "exciting-office", "metadata": {}, "outputs": [], "source": [ @@ -456,7 +456,7 @@ { "cell_type": "code", "execution_count": 14, - "id": "improved-tourist", + "id": "recorded-fighter", "metadata": {}, "outputs": [ { @@ -477,7 +477,7 @@ { "cell_type": "code", "execution_count": 15, - "id": "answering-replica", + "id": "signal-montreal", "metadata": {}, "outputs": [], "source": [ @@ -489,7 +489,7 @@ }, { "cell_type": "markdown", - "id": "ranging-reception", + "id": "swiss-export", "metadata": {}, "source": [ "토큰화 결과로 Bert모델의 입력으로 필요한 input_ids, token_type_ids, attention_mask가 나오는 것을 확인할 수 있습니다.\n", @@ -500,7 +500,7 @@ { "cell_type": "code", "execution_count": 16, - "id": "fixed-heater", + "id": "funded-mission", "metadata": {}, "outputs": [ { @@ -520,7 +520,7 @@ }, { "cell_type": "markdown", - "id": "patent-korea", + "id": "textile-party", "metadata": {}, "source": [ "토큰화 된 문장을 다시 디코딩 해봄으로써 원본 문장을 얻을 수 있는지 확인해봅니다.\n", @@ -531,7 +531,7 @@ { "cell_type": "code", "execution_count": 17, - "id": "becoming-browser", + "id": "opposed-johnston", "metadata": {}, "outputs": [ { @@ -551,11 +551,11 @@ }, { "cell_type": "markdown", - "id": "sunset-questionnaire", + "id": "alien-crack", "metadata": {}, "source": [ "# Special token 추가\n", - "위에서 개체에 맞게 4개의 토큰(\\, \\, \\, \\)을 문장에 추가해주었는데, 해당 토큰들을 tokenizer에 special token이라고 알려주지 않으면 추가한 토큰들은 일반 문자로 인식되어서 토큰화될 수 있습니다. \n", + "위에서 개체에 맞게 4개의 토큰(, , , )을 문장에 추가해주었는데, 해당 토큰들을 tokenizer에 special token이라고 알려주지 않으면 추가한 토큰들은 일반 문자로 인식되어서 토큰화될 수 있습니다. \n", "\n", "따라서 토큰화가 되지 않도록 추가한 4개의 토큰을 tokenizer에 special token으로 추가 해 줍니다." ] @@ -563,7 +563,7 @@ { "cell_type": "code", "execution_count": 18, - "id": "positive-blame", + "id": "prime-weekend", "metadata": {}, "outputs": [], "source": [ @@ -573,7 +573,7 @@ }, { "cell_type": "markdown", - "id": "unlike-terminology", + "id": "assigned-photograph", "metadata": {}, "source": [ "데이터로더 및 학습에 필요한 값들을 설정합니다." @@ -582,7 +582,7 @@ { "cell_type": "code", "execution_count": 19, - "id": "assumed-parts", + "id": "blessed-albuquerque", "metadata": {}, "outputs": [], "source": [ @@ -600,7 +600,7 @@ }, { "cell_type": "markdown", - "id": "nearby-packet", + "id": "modified-grammar", "metadata": {}, "source": [ "# 학습에 이용할 데이터셋과 데이터로더를 만들어 줍니다." @@ -609,7 +609,7 @@ { "cell_type": "code", "execution_count": 20, - "id": "domestic-hampshire", + "id": "illegal-cincinnati", "metadata": {}, "outputs": [], "source": [ @@ -634,7 +634,7 @@ { "cell_type": "code", "execution_count": 21, - "id": "tracked-regression", + "id": "actual-lighting", "metadata": {}, "outputs": [], "source": [ @@ -647,7 +647,7 @@ }, { "cell_type": "markdown", - "id": "virtual-vertex", + "id": "nuclear-thomas", "metadata": {}, "source": [ "# klue/bert-base 모델을 로드합니다.\n", @@ -668,7 +668,7 @@ { "cell_type": "code", "execution_count": 22, - "id": "refined-cornell", + "id": "recreational-monitoring", "metadata": {}, "outputs": [ { @@ -689,7 +689,7 @@ }, { "cell_type": "markdown", - "id": "enormous-germany", + "id": "iraqi-ebony", "metadata": {}, "source": [ "모델 구성의 마지막에 있는 classifier 부분을 보시면 출력 차원이 30으로 설정되어 있는 것을 확인할 수 있습니다." @@ -698,7 +698,7 @@ { "cell_type": "code", "execution_count": 23, - "id": "congressional-south", + "id": "loved-puppy", "metadata": {}, "outputs": [ { @@ -1014,7 +1014,7 @@ }, { "cell_type": "markdown", - "id": "modular-party", + "id": "subtle-attachment", "metadata": {}, "source": [ "# Bert Embedding Layer을 resize합니다.\n", @@ -1031,7 +1031,7 @@ { "cell_type": "code", "execution_count": 24, - "id": "editorial-johnston", + "id": "quality-management", "metadata": {}, "outputs": [ { @@ -1051,7 +1051,7 @@ }, { "cell_type": "markdown", - "id": "polar-intention", + "id": "applied-ethnic", "metadata": {}, "source": [ "학습 도중 Loss, Accuracy 계산 및 저장을 간단하게 하기 위해 AverageMeter를 클래스를 이용합니다." @@ -1060,7 +1060,7 @@ { "cell_type": "code", "execution_count": 25, - "id": "numerical-pitch", + "id": "general-lawrence", "metadata": {}, "outputs": [], "source": [ @@ -1080,7 +1080,7 @@ }, { "cell_type": "markdown", - "id": "developed-qatar", + "id": "federal-attack", "metadata": {}, "source": [ "# Model fine-tuning\n", @@ -1094,7 +1094,7 @@ { "cell_type": "code", "execution_count": 26, - "id": "modern-ancient", + "id": "assisted-doctor", "metadata": {}, "outputs": [ { @@ -1236,7 +1236,7 @@ }, { "cell_type": "markdown", - "id": "steady-climb", + "id": "sorted-environment", "metadata": {}, "source": [ "# 학습된 모델을 저장합니다." @@ -1245,7 +1245,7 @@ { "cell_type": "code", "execution_count": 27, - "id": "built-petite", + "id": "mounted-bearing", "metadata": {}, "outputs": [], "source": [ @@ -1255,7 +1255,7 @@ }, { "cell_type": "markdown", - "id": "amended-debut", + "id": "relevant-freight", "metadata": {}, "source": [ "# Validation 결과 확인\n", @@ -1265,7 +1265,7 @@ { "cell_type": "code", "execution_count": 28, - "id": "expanded-shopping", + "id": "experienced-somalia", "metadata": {}, "outputs": [ { @@ -1288,7 +1288,7 @@ { "cell_type": "code", "execution_count": 29, - "id": "retained-works", + "id": "palestinian-essex", "metadata": {}, "outputs": [], "source": [ @@ -1302,7 +1302,7 @@ { "cell_type": "code", "execution_count": 30, - "id": "fleet-kidney", + "id": "korean-edwards", "metadata": {}, "outputs": [], "source": [ @@ -1319,7 +1319,7 @@ }, { "cell_type": "markdown", - "id": "configured-chase", + "id": "brief-review", "metadata": {}, "source": [ "0번 라벨은 \"관계 없음\"이므로 해당 문장에 대해서 예측이 정확하게 됐음을 알 수 있습니다." @@ -1328,7 +1328,7 @@ { "cell_type": "code", "execution_count": 31, - "id": "million-mailing", + "id": "sought-cross", "metadata": {}, "outputs": [ { @@ -1348,7 +1348,7 @@ }, { "cell_type": "markdown", - "id": "educated-receiver", + "id": "guided-wallet", "metadata": {}, "source": [ "다음으로 관계가 있는 문장에 대한 예측 결과를 살펴보겠습니다." @@ -1357,7 +1357,7 @@ { "cell_type": "code", "execution_count": 32, - "id": "little-showcase", + "id": "later-amendment", "metadata": {}, "outputs": [ { @@ -1380,7 +1380,7 @@ { "cell_type": "code", "execution_count": 33, - "id": "local-cancer", + "id": "dried-dallas", "metadata": {}, "outputs": [], "source": [ @@ -1394,7 +1394,7 @@ { "cell_type": "code", "execution_count": 34, - "id": "interpreted-airport", + "id": "adjusted-intelligence", "metadata": {}, "outputs": [], "source": [ @@ -1411,7 +1411,7 @@ }, { "cell_type": "markdown", - "id": "particular-compensation", + "id": "mature-olympus", "metadata": {}, "source": [ "3번 라벨은 \"org:place_of_headquarters\" 이므로 해당 문장에 대해서 예측이 정확하게 됐음을 알 수 있습니다." @@ -1420,7 +1420,7 @@ { "cell_type": "code", "execution_count": 35, - "id": "domestic-vietnam", + "id": "pleased-imperial", "metadata": {}, "outputs": [ { @@ -1440,7 +1440,7 @@ }, { "cell_type": "markdown", - "id": "wrapped-invite", + "id": "spread-wedding", "metadata": {}, "source": [ "# 모델 평가\n", @@ -1454,7 +1454,7 @@ { "cell_type": "code", "execution_count": 36, - "id": "wrapped-phoenix", + "id": "identical-steps", "metadata": {}, "outputs": [], "source": [ @@ -1478,7 +1478,7 @@ { "cell_type": "code", "execution_count": 37, - "id": "metric-cruise", + "id": "divided-workstation", "metadata": {}, "outputs": [ { @@ -1516,7 +1516,7 @@ }, { "cell_type": "markdown", - "id": "theoretical-background", + "id": "greenhouse-residence", "metadata": {}, "source": [ "약 61.93의 F1 score를 기록했습니다. 하이퍼파라미터, 모델 구조 등을 변경시켜 다양한 학습을 시도해보세요!" @@ -1525,7 +1525,7 @@ { "cell_type": "code", "execution_count": 38, - "id": "imposed-globe", + "id": "civilian-costa", "metadata": {}, "outputs": [ { @@ -1545,7 +1545,7 @@ }, { "cell_type": "markdown", - "id": "local-insulation", + "id": "loaded-mother", "metadata": {}, "source": [ "학습된 모델은 Huggingface Model Hub에 배포되어 있고, 언제든지 다운받아서 활용이 가능합니다.\n", @@ -1555,7 +1555,7 @@ }, { "cell_type": "markdown", - "id": "shared-dating", + "id": "challenging-saturday", "metadata": {}, "source": [ "# Reference" @@ -1563,7 +1563,7 @@ }, { "cell_type": "markdown", - "id": "drawn-trick", + "id": "wrong-criterion", "metadata": {}, "source": [ "### klue-transformers-tutorial\n",