Extracting Answers from Text
Định nghĩa
Extracting answers from text là bước lấy câu trả lời trực tiếp từ context bằng cách chọn một answer span trong đoạn văn bản đầu vào.
Cách hiểu bằng lời của tôi
Trong Extractive QA, model không trả lời bằng kiến thức chung hoặc tự viết lại câu. Nó đọc cặp question + context, chấm điểm từng token trong context, rồi cắt ra đoạn text có khả năng là câu trả lời.
question + context
-> [[Tokenizer Pipeline|tokenize và giữ offset]]
-> model tạo start_logits/end_logits
-> chọn span hợp lệ
-> map token span về text gốc
-> answerCơ chế chính
- Tokenizer cần giữ mapping giữa token và vị trí ký tự trong text gốc để có thể cắt lại câu trả lời.
- Model thường dùng Span Classification: một head dự đoán token bắt đầu, một head dự đoán token kết thúc.
- Không phải cặp start/end nào cũng hợp lệ; hệ thống cần tránh span nằm trong phần question, token đặc biệt, padding, hoặc có end trước start.
- Nếu context dài hơn giới hạn model, context được chia thành nhiều chunk/window; mỗi window sinh candidate answer, sau đó chọn candidate tốt nhất.
Mental model
Không phải:
model -> "nghĩ ra" câu trả lời
Mà là:
model -> tìm tọa độ câu trả lời trong textVí dụ nhỏ
Question: Thư viện nào dùng cho pretrained models?
Context: Hugging Face cung cấp thư viện Transformers cho pretrained models.
start token: Transformers
end token: Transformers
answer: TransformersPhần cần biết
- Bước này phụ thuộc mạnh vào việc context có thật sự chứa đáp án hay không.
- Nếu Retriever đưa sai passage, Reader có thể vẫn chọn một span có vẻ hợp lý nhưng không trả lời đúng câu hỏi.
- Với câu hỏi cần tổng hợp nhiều đoạn hoặc cần diễn đạt lại, trích span trực tiếp thường không đủ.
- Khi debug, nên kiểm tra: context được tokenize thế nào, offset có đúng không, span được chọn có nằm trong context không, và score có bị lệch vì chunking không.
Câu hỏi review
- Vì sao cần offset mapping khi extract answer từ text?
- Start logits và end logits được dùng như thế nào?
- Khi context quá dài, vì sao phải chia thành nhiều window?
- Vì sao reader có thể trả lời sai dù model tự tin?
Gợi ý trả lời câu hỏi review
- Vì output của model là vị trí token, còn câu trả lời cuối cùng cần được cắt lại từ text gốc.
- Chúng cho biết mỗi token có khả năng là điểm bắt đầu hoặc kết thúc của answer span.
- Vì Transformer có giới hạn sequence length; mỗi window giúp model đọc một phần context vừa đủ.
- Vì context có thể không chứa đáp án, retriever có thể đưa sai passage, hoặc span hợp lệ về mặt score nhưng không đúng ngữ nghĩa câu hỏi.