저자들이 언급한 contribution
- 장편 서사에서 캐릭터를 표현하기 위한 '캐릭터 시트' 구조, CHIRON을 제안
- 주어진 캐릭터에 대한 설명(CHIRON)이 story snippet을 기준으로 참인지 automatic하게 판단하는 validation module(reasoning, entailment model)을 제안
- CHIRON이 제대로 캐릭터를 표현했는가를 평가하기 위해서 masked-character prediction을 사용
- CHIRON을 이용하여 story에서 character density를 측정하는 metric 제안
'Character sheet' 구조, CHIRON을 제안
- 캐릭터 관점으로 주어진 이야기 단락이 있을 때(STORIUM 데이터셋을 활용함),
- 미리 4가지 카테고리별로 준비해둔 질문과 스토리를 함께 제시해서 LLM으로 하여금 답변을 하도록 하여 이를 character sheet으로 삼는다.
- 질문은 미리 정해둔 set을 사용한다.
- 이 때, 생성하면서 실제 이야기에서 제대로 support 되지 않고 있는 답변이 생성될 수도 있으니 이를 validation module(프롬프트를 이용한 reasoning, entailment model 이용하는 방법 2가지)로 검증한 후에 최종적으로 확정한다.
validation 모듈
- 모델이 생성한 답변을 사람들로 하여금 1-5점을 annotation 하도록 함.
- 1) reasoning 프롬프트로 우선 entailment를 판별함.
- 2) 그리고 annotation 해둔 label 까지 함께 학습 데이터로 줘서 점수(1-5)를 예측하도록 함. 그랬더니 단순히 7B-parameter 모델을 미세 조정(fine-tune)하는 것만으로 entailment(포함 관계) 판별이 가능하더라.
Masked-character prediction
- task 설명
- 보지 못한 STORIUM 스토리가 주어지면, 장면 출현 빈도가 가장 높은 세 캐릭터를 찾고, 이 세 캐릭터가 모두 등장하는 스토리 스니펫을 식별한다. 그리고 이 스니펫까지의 각 스토리에 대해 캐릭터 시트를 생성한다.
- 스토리 스니펫에서 캐릭터 이름을 마스크하고, masked 스토리 스니펫과 생성된 캐릭터 정보를 제공하여 Mistral 7B Instruct v0.2이 masking 된 부분을 맞추도록 한다.
- 접근 방법
- EntireSheet
- 캐릭터 sheet를 그냥 다 모델한테 보여줌.(캐릭터 sheet의 경우 하나의 캐릭터에 대해서만 생성된다)
- Agreed
- 캐릭터 sheet 전체 주기보다는 한번에 하나의 카테고리(대화, 신체/성격, 지식, 목표)만 모델한테 주고, 각각의 소프트맥스 확률을 곱해 최대값을 취하는 방식으로 예측함.
- EntireSheet
- Baseline은?
- CharacterSummary
- Mistral 7B Instruct v0.2(Jiang 등, 2023)를 사용해 전체 스토리를 입력으로 제공하고 특정 캐릭터에 대한 요약을 생성하도록 함.
- No-Information
- masked 캐릭터 예측 작업 중 캐릭터 정보를 제공하지 않는 설정(character sheet 같은 정보를 주지 않는다는 의미)
- CharacterSummary
Character density
- 캐릭터 중심성을 판단할 수 있는 metric.
- 최종 character sheet의 문장의 갯수를 provided story(snippet들을 모은 것)의 문장의 갯수로 나누고,
- 모든 story-character combinations에 대해 평균을 낸 것.
- story-character combination이란? character sheet의 갯수를 의미하는 것 같다.
- Let S denote the set of story-haracter combinations, C is the set of categories (e.g., Dialogue, Goals), and χ(s, c) is the character sheet category c given a story-character:
- 일단 S는 캐릭터 시트 1개라고 치면, c는 각 캐릭터 시트에 있는 4가지의 카테고리 중 하나이므로 χ(s, c)는 주어진 이야기-캐릭터에 대한 캐릭터의 시트 카테고리 c를 의미한다.
- s는 자연히 story-character combination에서의 story 부분을 의미할 것이다.
- 예시) 캐릭터 시트는 하나, 스토리가 10문장일때, 각 카테고리에 1, 2, 2, 1개의 문장이 있었다면,
- density는 1/10 + 2/10 + 2/10 + 1/10 = 6/10이 된다.
→ 이 지표는 character가 이야기의 중심이 되고 추진력이 되는 정도, 즉 캐릭터 중심성을 측정하는 방법으로 해석한다.
- Density가 제대로 된 지표라는 건 어떻게 증명을 할까?
- 사람에게 다음의 다섯가지 항목에 대해 1-5점을 매겨달라고 한다.
- 역할(Roles): 스토리에 명시적으로 정의된 역할을 가진 캐릭터가 있는가?
- 특성(Traits): 캐릭터가 잘 정의된 특성과 관계를 가지고 있는가?
- 행동(Actions): 캐릭터의 행동이 스토리에서 중요한 역할을 하는가?
- 신체/성격(Physical/Personality): 캐릭터가 정의된 신체적/성격적 특성을 가지고 있는가?
- 대화(Dialogue): 캐릭터가 정의된 말투를 가지고 있는가?
- 이 결과랑 density가 상관관계가 높은 점수를 가지더라.
- 사람에게 다음의 다섯가지 항목에 대해 1-5점을 매겨달라고 한다.