Số liệu TF.Text

Xem trên TensorFlow.org Chạy trong Google Colab Xem trên GitHub Tải xuống sổ ghi chép

Tổng quat

TensorFlow Text cung cấp một bộ sưu tập các lớp và hoạt động liên quan đến số liệu văn bản sẵn sàng sử dụng với TensorFlow 2.0. Thư viện chứa các triển khai của các chỉ số về độ tương tự văn bản, chẳng hạn như ROUGE-L, được yêu cầu để đánh giá tự động các mô hình tạo văn bản.

Lợi ích của việc sử dụng các hoạt động này trong việc đánh giá mô hình của bạn là chúng tương thích với đánh giá TPU và hoạt động tốt với các API chỉ số phát trực tuyến TF.

Thành lập

pip install -q tensorflow-text
import tensorflow as tf
import tensorflow_text as text

ROUGE-L

Chỉ số Rouge-L là điểm từ 0 đến 1 cho biết mức độ tương tự của hai chuỗi, dựa trên độ dài của dãy con chung dài nhất (LCS). Cụ thể, Rouge-L là giá trị trung bình hài có trọng số (hoặc độ đo f) kết hợp độ chính xác LCS (phần trăm của chuỗi giả thuyết được LCS bao phủ) và độ thu hồi LCS (phần trăm của chuỗi tham chiếu được bao phủ bởi LCS).

Nguồn: https://www.microsoft.com/en-us/research/publication/rouge-a-package-for-automatic-evaluation-of-summaries/

Việc triển khai TF.Text trả về độ đo F, Độ chính xác và Gọi lại cho mỗi cặp (giả thuyết, tham chiếu).

Hãy xem xét giả thuyết / cặp tham chiếu sau:

hypotheses = tf.ragged.constant([['captain', 'of', 'the', 'delta', 'flight'],
                                 ['the', '1990', 'transcript']])
references = tf.ragged.constant([['delta', 'air', 'lines', 'flight'],
                                 ['this', 'concludes', 'the', 'transcript']])

Các giả thuyết và tài liệu tham khảo được mong đợi là tf.RaggedTensors của mã thông báo. Cần có mã thông báo thay vì các câu thô vì không có chiến lược mã hóa đơn lẻ nào phù hợp với tất cả các nhiệm vụ.

Bây giờ chúng ta có thể gọi text.metrics.rouge_l và lấy lại kết quả:

result = text.metrics.rouge_l(hypotheses, references)
print('F-Measure: %s' % result.f_measure)
print('P-Measure: %s' % result.p_measure)
print('R-Measure: %s' % result.r_measure)
F-Measure: tf.Tensor([0.44444448 0.57142854], shape=(2,), dtype=float32)
P-Measure: tf.Tensor([0.4       0.6666667], shape=(2,), dtype=float32)
R-Measure: tf.Tensor([0.5 0.5], shape=(2,), dtype=float32)

ROUGE-L có một siêu thông số bổ sung, alpha, xác định trọng lượng của trung bình sóng hài được sử dụng để tính toán F-Measure. Các giá trị gần 0 coi Nhớ lại là quan trọng hơn và các giá trị gần 1 coi Độ chính xác là quan trọng hơn. alpha mặc định là .5, tương ứng với trọng lượng bằng nhau cho Độ chính xác và Nhớ lại.

# Compute ROUGE-L with alpha=0
result = text.metrics.rouge_l(hypotheses, references, alpha=0)
print('F-Measure (alpha=0): %s' % result.f_measure)
print('P-Measure (alpha=0): %s' % result.p_measure)
print('R-Measure (alpha=0): %s' % result.r_measure)
F-Measure (alpha=0): tf.Tensor([0.5 0.5], shape=(2,), dtype=float32)
P-Measure (alpha=0): tf.Tensor([0.4       0.6666667], shape=(2,), dtype=float32)
R-Measure (alpha=0): tf.Tensor([0.5 0.5], shape=(2,), dtype=float32)
# Compute ROUGE-L with alpha=1
result = text.metrics.rouge_l(hypotheses, references, alpha=1)
print('F-Measure (alpha=1): %s' % result.f_measure)
print('P-Measure (alpha=1): %s' % result.p_measure)
print('R-Measure (alpha=1): %s' % result.r_measure)
F-Measure (alpha=1): tf.Tensor([0.4       0.6666667], shape=(2,), dtype=float32)
P-Measure (alpha=1): tf.Tensor([0.4       0.6666667], shape=(2,), dtype=float32)
R-Measure (alpha=1): tf.Tensor([0.5 0.5], shape=(2,), dtype=float32)