ROUGE Kết quả NLP của bạn!

Nov 27 2022
Số liệu tiếp theo được thảo luận trong loạt bài đăng này về số liệu được sử dụng trong Xử lý ngôn ngữ tự nhiên là Nghiên cứu định hướng thu hồi để đánh giá Gisting (ROUGE). ROUGE là thước đo đánh giá được sử dụng để đánh giá chất lượng của các tác vụ NLP như tóm tắt văn bản và dịch máy.

Số liệu tiếp theo được thảo luận trong loạt bài đăng này về số liệu được sử dụng trong Xử lý ngôn ngữ tự nhiên là Nghiên cứu định hướng thu hồi để đánh giá Gisting (ROUGE).

ROUGE là thước đo đánh giá được sử dụng để đánh giá chất lượng của các tác vụ NLP như tóm tắt văn bản và dịch máy. Không giống như BLEU , ROUGE sử dụng cả khả năng thu hồi và độ chính xác để so sánh các bản tóm tắt do mô hình tạo ra được gọi là ứng cử viên với một tập hợp các bản tóm tắt do con người tạo ra được gọi là tài liệu tham khảo. Nó đo xem có bao nhiêu n-gram trong tài liệu tham khảo nằm trong ứng cử viên được dự đoán.

Đầu tiên, chúng ta hãy tính thu hồi = Tích cực Đúng/(Tích cực Đúng + Tiêu cực Sai). Ở đây, Điểm tích cực thực sự là n-gram phù hợp giữa Người tham khảo và Ứng viên. Phủ định Sai có thể được coi là n-gam có trong câu thực tế (tham chiếu) nhưng không có trong ứng viên. Khi đó, Kết quả dương tính giả là n-gram có trong Ứng viên nhưng không có trong Tài liệu tham khảo. Hãy xem bài đăng trên blog này Thu hồi, Chính xác, Điểm F1 nếu bạn cần xem lại các khái niệm như Tích cực Đúng, Tích cực Sai, Thu hồi và Chính xác, v.v.,

Do đó, thu hồi và độ chính xác có thể thu được như hình dưới đây:

Recall và Precision đôi khi có thể bổ sung cho nhau và do đó cần phải kết hợp cả hai để đạt được sự cân bằng. Vì lý do này, ROUGE được tính là điểm F1 trong Python. Giá trị nằm trong khoảng từ 0 đến 1 và giá trị càng gần 1 thì chất lượng dự đoán càng tốt.

ROUGE-N

Chúng ta hãy sử dụng mô-đun đánh giá từ gói “đánh giá” của Huggingface và xác minh các tính toán từng bước. Giả sử rằng kho văn bản sau đây với 2 tài liệu tham khảo cho mỗi ứng viên đã được lấy từ kết quả của một mô hình tóm tắt.

!pip install evaluate
!pip install rouge-score
import evaluate
rouge = evaluate.load('rouge')
predictions = ["Transformers Transformers are fast plus efficient", 
               "Good Morning", "I am waiting for new Transformers"]
references = [
              ["HuggingFace Transformers are fast efficient plus awesome", 
               "Transformers are awesome because they are fast to execute"], 
              ["Good Morning Transformers", "Morning Transformers"], 
              ["People are eagerly waiting for new Transformer models", 
               "People are very excited about new Transformers"]

]
results = rouge.compute(predictions=predictions, references=references)
print(results)

{'rouge1': 0.6659340659340659, 'rouge2': 0.45454545454545453, 
'rougeL': 0.6146520146520146, 'rougeLsum': 0.6146520146520146}

Candidate 1: Transformers Transformers are fast plus efficient
Reference 1: HuggingFace Transformers are fast efficient plus awesome
Reference 2: Transformers are awesome because they are fast to execute

Recall = 5/7 = 0.7142857
Precision = 5/6 = 0.8333333
F1-Score =  2 * (0.7142857) * (0.8333333)/(0.7142857 + 0.8333333) = 0.7692307

Candidate 2 and the respective Reference 1: 0.8
Candidate 3 and the respective Reference 1: 0.4285714
Mean F1-Score = (0.7692307 + 0.8 + 0.4285714)/3 = 0.665934

ROUGE-L

Ở đây, L là viết tắt của Chuỗi con chung dài nhất (LCS). LCS được định nghĩa là dãy con dài nhất xuất hiện trong cả tham chiếu và ứng viên. Dãy con ở đây không cần phải liên tục. Thay vì đếm số lượng n-gram phù hợp, chúng tôi đo độ dài của LCS tại đây. Ưu điểm của phương pháp này là thứ tự từ trong câu được xem xét thay vì chỉ tìm kiếm n-gram phù hợp có thể xuất hiện theo bất kỳ thứ tự nào. Ngoài ra, chúng tôi cũng không cần cung cấp thứ tự (n) của n-gram để sử dụng cho tính toán.

Công thức ROUGE-L từ bài báo ROUGE

Trong công thức trên, X và Y lần lượt là tham chiếu và ứng cử viên với độ dài m và n. Bản beta được sử dụng để kiểm soát cái nào quan trọng hơn - thu hồi hoặc độ chính xác. Khi nó là 1, F_lcs chỉ là giá trị trung bình điều hòa của Recall(R_lcs) và Precision(P_lcs). Đôi khi, chúng tôi có thể muốn ưu tiên thu hồi, tức là điều quan trọng hơn đối với hầu hết n-gram trong tài liệu tham khảo có mặt trong các ứng cử viên. Điều này có thể đạt được bằng cách tăng beta lên giá trị > 1.

Bây giờ, chúng ta hãy xem công thức này đang hoạt động. LCS cho mỗi bộ tham chiếu ứng cử viên được hiển thị bên dưới:

C1-R1: Transformers are fast plus 
C1-R2: Transformers are fast

C2-R1: Good Morning
C2-R2: Morning

C3-R1: waiting for new
C3-R2: new Transformers

Giống như trong ROUGE-N, chúng tôi xem xét tham chiếu có độ dài tối đa giữa hai tham chiếu cho mỗi ứng viên. Do đó, chúng tôi tính Điểm F1 cho cặp C1-R1 với độ dài LCS là 4. Điểm của Thí sinh 2 và 3 giống như ROUGE-1. Điều này là do độ dài của LCS giữa các tham chiếu giống như số lượng unigram phù hợp cho 2 và 3. Toàn bộ phép tính sau đó được tóm tắt như sau:

C1-R1:
Recall = 4/7
Precision = 4/6
ROUGE-L F1 = 2 * (4/7) * (4/6)/((4/6) + (4/7)) = 0.6153846

C2-R1 ROUGE-L F1 = 0.8
C3-R1 ROUGE-L F1 = 0.4285714

Final ROUGE-L F1 = (0.6153846 + 0.8 + 0.4285714)/3 = 0.614652

Thuận lợi

  1. Dễ tính toán, dễ hiểu và thường được dùng để đánh giá các hệ thống tóm tắt văn bản.
  2. ROUGE và các biến thể của nó đã hoạt động tốt để tóm tắt các tài liệu đơn lẻ và văn bản ngắn.
  1. ROUGE có vấn đề tương tự như BLEU về các từ đồng nghĩa. Ý nghĩa của n-gram không được xem xét và do đó “fast” và “quick” sẽ không được coi là tương tự nhau.
  2. Điểm số phụ thuộc rất nhiều vào cách lựa chọn từ ngữ và cấu trúc của các tài liệu tham khảo được chọn để đánh giá.

Người giới thiệu

Tôi là sinh viên Thạc sĩ Khoa học Dữ liệu @ TU Dortmund. Vui lòng kết nối với tôi trên LinkedIn để nhận bất kỳ phản hồi nào về bài đăng của tôi hoặc bất kỳ thông tin liên lạc chuyên nghiệp nào.