일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- GCP
- flask
- gather_nd
- hadoop
- tensorflow text
- GenericGBQException
- airflow subdag
- API Gateway
- BigQuery
- requests
- Counterfactual Explanations
- subdag
- top_k
- correlation
- UDF
- 상관관계
- 공분산
- 유튜브 API
- session 유지
- XAI
- Retry
- youtube data
- API
- spark udf
- TensorFlow
- chatGPT
- integrated gradient
- grad-cam
- Airflow
- login crawling
- Today
- Total
데이터과학 삼학년
ROUGE : text summarization metric 본문
Rouge Score
- Recall-Oriented Understudy for Gisting Evaluation
- n-gram기법을 이용해 label(사람이 만든 요약문)과 summary(모델이 생성한 inference)을 비교해서 얼마나 겹치는지 확인하여 수치로 나타냄, 즉, 요약모델의 성능 평가 척도의 개념
- 종류 : ROUGE-N, ROUGE-L, ROUGE-W, ROUGE-S 등
Rouge Recall Precision (ROUGE-N)
Recall
- label을 구성하는 단어 중 몇개가 inference(예측결과)와 겹치는가?
-> 우선적으로 필요한 정보들이 다 담겨있는지 체크
>> ROUGE-N : N-gram을 기준으로 겹치는 set을 확인
Precision
- inference(예측결과)를 구성하는 단어 중 몇개가 label과 겹치는가?
-> 요약된 문장에 필요한 정보만을 얼마나 담고있는지를 체크
f1-score
- Rouge의 recall과 precision을 이용한 조화평균
ROUGE-L
- LCS(longest common sequence) between model output
- common sequence 중에서 가장 긴 것을 기준으로 산정
- Recall : LCS 길이 / label의 N-gram의수
- Precision : LCS 길이 / output의 N-gram의수
ROUGE-S
- Skip-gram을 활용한 Rouge산정법
두 개의 토큰을 한 쌍으로 묶어서() ROUGE Score를 계산
예를 들어, 'the brown fox' 는 (the,brown), (brown,fox), (the,fox)로 매핑되어 계산됨.
Rouge score 단점
- 같은 의미를 가진 다른 언어에 대해 반영할 수 없음
코드
- get.scores를 사용하면 Rouge-1, Rouge-2, Rouge-l score 확인
from rouge import Rouge
model_out = "he began by starting a five person war cabinet and included chamberlain as lord president of the council"
reference = "he began his premiership by forming a five-man war cabinet which included chamberlain as lord president of the council"
rouge = Rouge()
rouge.get_scores(model_out, reference)
#--------
model_out = ["he began by starting a five person war cabinet and included chamberlain as lord president of the council",
"the siege lasted from 250 to 241 bc, the romans laid siege to lilybaeum",
"the original ocean water was found in aquaculture"]
reference = ["he began his premiership by forming a five-man war cabinet which included chamberlain as lord president of the council",
"the siege of lilybaeum lasted from 250 to 241 bc, as the roman army laid siege to the carthaginian-held sicilian city of lilybaeum",
"the original mission was for research into the uses of deep ocean water in ocean thermal energy conversion (otec) renewable energy production and in aquaculture"]
rouge = Rouge()
rouge.get_scores(model_out, reference, avg=True)
###
{ 'rouge-1': { 'f': 0.6279006234427593,
'p': 0.8604497354497355,
'r': 0.5273531655225019},
'rouge-2': { 'f': 0.3883256484545606,
'p': 0.5244559362206421,
'r': 0.32954545454545453},
'rouge-l': { 'f': 0.6282785202429159,
'p': 0.8122895622895623,
'r': 0.5369305616983636}}
참조
- 문서(d), 정답 요약문장(r), 모델이 생성한 문장(p) 각각의 벡터에 대해 유사도를 구해서 평균을 내는 과정
- 한글의 특성인 어근에 붙은 접사가( 은,는)가 단어의 역할을 결정하기에, 단어의 변형이 빈번하게 일어나므로 ROUGE 평가지표가 적절하지 않다는 판단에서 개발
'Natural Language Processing' 카테고리의 다른 글
[크롤링] selenium implicitly Wait VS Explicitly Wait (0) | 2022.05.31 |
---|---|
[크롤링] What is the differences between requests and selenium? (0) | 2022.05.27 |
TextRank for Text Summarization (0) | 2022.05.04 |
텔레그램 챗 내용 export 및 parser (feat. beautifulsoup) (0) | 2022.04.19 |
텔레그램봇을 활용한 유저 채팅 데이터 수집 및 활용(feat. telepot, telegram) (2) | 2022.03.24 |