VOOZH about

URL: https://huggingface.co/iknow-lab/ko-flan-zero-v0-0731

⇱ iknow-lab/ko-flan-zero-v0-0731 · Hugging Face


사용 예시

# Load model directly
from transformers import AutoTokenizer, AutoModelForSequenceClassification

tokenizer = AutoTokenizer.from_pretrained("iknow-lab/ko-flan-zero-v0-0731")
model = AutoModelForSequenceClassification.from_pretrained("iknow-lab/ko-flan-zero-v0-0731")

def inference(instruction, input, labels):
 instruction = f"{input} [SEP] {instruction}"
 inputs = tokenizer([instruction] * len(labels), labels, truncation=True, padding=True, return_tensors="pt")
 
 scores = model(**inputs).logits.squeeze(1).tolist()
 output = dict(zip(labels, scores))

 print(instruction, output)

inference(
 "문장을 감성분류해주세요",
 "아 영화 개노잼",
 ["긍정적", "부정적"]
)

inference(
 "글과 관련된 내용을 만들어주세요",
 "예전에는 주말마다 극장에 놀러갔는데 요새는 좀 안가는 편이에요",
 ["영화에 관한 글이다", "드라마에 관한 글입니다"]
)


inference(
 "글을 읽고 시장에 미칠 영향을 판단해보세요",
 """인천발 KTX와 관련한 송도역 복합환승센터가 사실상 무산, 단순 철도·버스 위주 환승시설로 만들어진다. 이 때문에 인천시의 인천발 KTX 기점에 앵커시설인 복합환승센터를 통한 인근 지역 경제 활성화를 이뤄낸다는 계획의 차질이 불가피하다.

25일 시에 따르면 연수구 옥련동 104 일대 29만1천725㎡(8만8천평)에 추진 중인 2만8천62가구 규모의 송도역세권구역 도시개발사업과 연계, KTX 송도역 복합환승센터와 상업시설·업무시설 등의 조성을 추진 중이다. """,
 ["긍정", "부정", "중립"]
)

실행 결과

아 영화 개노잼 [SEP] 문장을 감성분류해주세요
{'긍정적': -7.878206253051758, '부정적': 50.96009826660156}

예전에는 주말마다 극장에 놀러갔는데 요새는 좀 안가는 편이에요 [SEP] 글과 관련된 내용을 만들어주세요
{'영화에 관한 글이다': 25.37109375, '드라마에 관한 글입니다': -31.869916915893555}

인천발 KTX와 관련한 송도역 복합환승센터가 사실상 무산, 단순 철도·버스 위주 환승시설로 만들어진다. 이 때문에 인천시의 인천발 KTX 기점에 앵커시설인 복합환승센터를 통한 인근 지역 경제 활성화를 이뤄낸다는 계획의 차질이 불가피하다.

25일 시에 따르면 연수구 옥련동 104 일대 29만1천725㎡(8만8천평)에 추진 중인 2만8천62가구 규모의 송도역세권구역 도시개발사업과 연계, KTX 송도역 복합환승센터와 상업시설·업무시설 등의 조성을 추진 중이다.  [SEP] 글을 읽고 시장에 미칠 영향을 판단해보세요
{'긍정': -61.86758804321289, '부정': 23.72732925415039, '중립': -70.4837417602539}

학습 데이터 구성

{
 "splits": "train",
 "tasks": "nsmc,apeach,korquad_v1.0,klue_mrc,klue_nli,klue_ynat,kor_nlu,unsmile,klue_re,kobest_copa,kobest_hellaswag,kobest_boolq,kobest_wic,niklex,nikl_absa",
 "max_instance_per_task": 20000,
 "split_train": {
 "nsmc": 20000,
 "apeach": 7895,
 "korquad_v1.0": 20000,
 "klue_mrc": 17553,
 "klue_nli": 8046,
 "klue_ynat": 20000,
 "kor_nlu": 20000,
 "unsmile": 15002,
 "klue_re": 20000,
 "kobest_copa": 3075,
 "kobest_hellaswag": 499,
 "kobest_boolq": 3664,
 "kobest_wic": 3317,
 "niklex": 20000,
 "nikl_absa": 2139
 },
 "split_train_total": 181190
}

평가(test set)

task accuracy
nsmc 85.92
jason9693/APEACH 32.12
klue-ynat 77.59
kobest-boolq 76.99
kobest-copa 61.2
kobest-hellaswag 코드 버그 있어서 제외
kobest-sentineg 55.92
kobest-wic 58.49

평가 방식

  • 모델에 [CLS] {input} [SEP] {instruction} [SEP] label [SEP] 형식으로 넣고 나온 positive와 negative끼리 비교함.
  • positive는 정답 라벨을 사용하고, negative는 정답 라벨이 아닌 모든 라벨을 사용
  • 정답 라벨의 점수가 모든 negative보다 높을 경우 맞춘 것으로 간주함. 이런 식으로 accuracy 측정.

테스트에 사용한 매핑 코드

klue_ynat_labelToTextDict = {
 0: "IT과학",
 1: "경제",
 2: "사회",
 3: "생활문화",
 4: "세계",
 5: "스포츠",
 6: "정치",
}
klue_ynat_labels = set(klue_ynat_labelToTextDict.values())

def klue_ynat_mapper(item):
 positives = [klue_ynat_labelToTextDict[item["label"]]]
 return {
 "instruction": "문장을 읽고 주제를 분류하세요",
 "input": item["title"],
 "positives": positives,
 "negatives": klue_ynat_labels - set(positives)
 }

kobest_wic_labels = ["아니오", "예"]

def kobest_wic_mapper(item):
 return {
 "instruction": "주어진 두 문장에서 단어 {word}은(는) 동일한 의미로 사용되었나요?".format(word=item["word"]),
 "input": "문장1: {context_1}\n문장2: {context_2}".format(**item),
 "positives": [kobest_wic_labels[item['label']]],
 "negatives": [kobest_wic_labels[1 - item['label']]]
 }

copa_question = {
 "결과": "이후에 이어질 결과는?",
 "원인": "이러한 일이 일어난 원인은?"
}

def kobest_copa_mapper(item):
 answers = [item["alternative_1"], item["alternative_2"]]
 return {
 "instruction": copa_question[item["question"]],
 "input": item["premise"],
 "positives": [answers[item['label']]],
 "negatives": [answers[1 - item['label']]]
 }


def kobest_hellaswag_mapper(item):
 answers = [item[f"ending_{i}"] for i in range(1, 5)]
 label = answers[item['label']]
 answers.remove(label)

 return {
 "instruction": "이후에 이어질 내용으로 가장 적절한 것은?",
 "input": item["context"],
 "positives": [label],
 "negatives": answers
 }

kobest_boolq_labels = ["아니오", "예"]
def kobest_boolq_mapper(item):
 return {
 "instruction": item["question"],
 "input": item["paragraph"],
 "positives": [kobest_boolq_labels[item['label']]],
 "negatives": [kobest_boolq_labels[1 - item['label']]]
 }

kobest_sentineg_labels = ["부정", "긍정"]
def kobest_sentineg_mapper(item):
 return {
 "instruction": "주어진 문장의 감정을 분류하세요",
 "input": item["sentence"],
 "positives": [kobest_boolq_labels[item['label']]],
 "negatives": [kobest_boolq_labels[1 - item['label']]]
 }

nsmc_labels = ["부정", "긍정"]
def nsmc_mapper(item):
 return {
 "instruction": "주어진 문장의 감정을 분류하세요",
 "input": item["document"],
 "positives": [nsmc_labels[item['label']]],
 "negatives": [nsmc_labels[1 - item['label']]]
 }

apeach_labels = ["혐오 표현이 아닙니다", "혐오표현"]
def apeach_mapper(item):
 return {
 "instruction": "혐오성을 분류해보세요.",
 "input": item["text"],
 "positives": [nsmc_labels[item['class']]],
 "negatives": [nsmc_labels[1 - item['class']]]
 }



EVAL_LIST = {
 "klue-ynat": dict(
 load_args=dict(
 path="klue",
 name="ynat",
 split="validation"
 ),
 mapper=klue_ynat_mapper
 ),
 "nsmc": dict(
 load_args=dict(
 path="nsmc",
 split="test"
 ),
 mapper=nsmc_mapper
 ),
 "apeach": dict(
 load_args=dict(
 path="jason9693/APEACH",
 split="test"
 ),
 mapper=apeach_mapper
 ),
 "kobest-wic": dict(
 load_args=dict(
 path="skt/kobest_v1",
 name="wic",
 split="test"
 ),
 mapper=kobest_wic_mapper
 ),
 "kobest-copa": dict(
 load_args=dict(
 path="skt/kobest_v1",
 name="copa",
 split="test"
 ),
 mapper=kobest_copa_mapper
 ),
 "kobest-hellaswag": dict(
 load_args=dict(
 path="skt/kobest_v1",
 name="hellaswag",
 split="test"
 ),
 mapper=kobest_hellaswag_mapper
 ),
 "kobest-boolq": dict(
 load_args=dict(
 path="skt/kobest_v1",
 name="boolq",
 split="test"
 ),
 mapper=kobest_boolq_mapper
 ),
 "kobest-sentineg": dict(
 load_args=dict(
 path="skt/kobest_v1",
 name="sentineg",
 split="test"
 ),
 mapper=kobest_sentineg_mapper
 )
}
Downloads last month
104

Datasets used to train iknow-lab/ko-flan-zero-v0-0731

Spaces using iknow-lab/ko-flan-zero-v0-0731 2