AI/NLP
[Python] Distinct metric 측정 방법 (by paddlenlp)
체봄
2023. 4. 28. 20:00
Distinct는 생성된 응답의 다양성을 평가하기 위한 것으로, A Diversity-Promoting Objective Function for Neural Conversation Models paper에서 제안된 metric이다.
보통 input에 대해 output이 특정하게 정해져 있지 않고 다양한 output이 올 수 있는 오픈도메인 대화 task에서 평가 metric으로 자주 사용된다.
paddlenlp 라이브러리를 사용해 Distinct를 측정하기 위해서 다음을 설치한다.
$ pip install --upgrade paddlenlp>=2.0.0rc -i https://pypi.org/simple
$ pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
설치 과정에 에러가 생겼다면 이 포스팅이 도움될 수도 있다.
그리고 다음 코드로 Distinct를 측정한다.
from paddlenlp.metrics import Distinct
from transformers import AutoTokenizer
# load tokenizer
tokenizer = AutoTokenizer.from_pretrained('사용할 모델명')
# load generated file to do evaluation
with open('파일명', 'r', encoding='utf8') as f:
lines = f.readlines()
n = 2 # Distinct-n
distinct = Distinct(n)
for line in lines:
line = line.replace('\n', '')
tokens = tokenizer.tokenize(text)
distinct.add_inst(tokens)
print(f'distinct-{n}:', round(distinct.score(), 3))
n은 보통 2 또는 3으로 많이 사용하며, 값이 커질수록 distinct 값도 커진다.
모델이 생성한 텍스트 파일을 불러온 다음, tokenizer로 토크나이징하여 토큰들을 Distinct 객체에 집어 넣고, 최종적으로 distinct.score()를 호출하면 distinct 값이 계산된다.
반응형