Tích hợp trình trả lời câu hỏi BERT

API của Thư viện tác vụ BertQuestionAnswerer tải mô hình Bert và các câu trả lời dựa trên nội dung của một đoạn văn nhất định. Để biết thêm thông tin, hãy xem ví dụ cho mô hình Câu hỏi-Câu trả lời.

Các tính năng chính của BertQuestionAnswerer API

  • Lấy hai đầu vào văn bản làm câu hỏi và ngữ cảnh, sau đó xuất ra một danh sách những nội dung có thể của chúng tôi.

  • Thực hiện việc tạo mã thông báo từ hoặc đoạn văn ngoài đồ thị khi nhập .

Các mô hình BertQuestionAnswerer được hỗ trợ

Các mô hình sau đây tương thích với API BertNLClassifier.

Chạy dự đoán trong Java

Bước 1: Nhập phần phụ thuộc Gradle và các chế độ cài đặt khác

Sao chép tệp mô hình .tflite vào thư mục thành phần của mô-đun Android nơi mô hình sẽ chạy. Chỉ định rằng tệp không được nén và thêm thư viện TensorFlow Lite vào tệp build.gradle của mô-đun:

android {
    // Other settings

    // Specify tflite file should not be compressed for the app apk
    aaptOptions {
        noCompress "tflite"
    }

}

dependencies {
    // Other dependencies

    // Import the Task Text Library dependency
    implementation 'org.tensorflow:tensorflow-lite-task-text:0.4.4'
}

Bước 2: Chạy dự đoán bằng API

// Initialization
BertQuestionAnswererOptions options =
    BertQuestionAnswererOptions.builder()
        .setBaseOptions(BaseOptions.builder().setNumThreads(4).build())
        .build();
BertQuestionAnswerer answerer =
    BertQuestionAnswerer.createFromFileAndOptions(
        androidContext, modelFile, options);

// Run inference
List<QaAnswer> answers = answerer.answer(contextOfTheQuestion, questionToAsk);

Xem mã nguồn để biết thêm chi tiết.

Chạy dự đoán trong Swift

Bước 1: Nhập CocoaPods

Thêm nhóm TensorFlowLiteTaskText trong Podfile

target 'MySwiftAppWithTaskAPI' do
  use_frameworks!
  pod 'TensorFlowLiteTaskText', '~> 0.4.4'
end

Bước 2: Chạy dự đoán bằng API

// Initialization
let mobileBertAnswerer = TFLBertQuestionAnswerer.questionAnswerer(
      modelPath: mobileBertModelPath)

// Run inference
let answers = mobileBertAnswerer.answer(
      context: context, question: question)

Xem mã nguồn để biết thêm chi tiết.

Chạy dự đoán trong C++

// Initialization
BertQuestionAnswererOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<BertQuestionAnswerer> answerer = BertQuestionAnswerer::CreateFromOptions(options).value();

// Run inference with your inputs, `context_of_question` and `question_to_ask`.
std::vector<QaAnswer> positive_results = answerer->Answer(context_of_question, question_to_ask);

Xem mã nguồn để biết thêm chi tiết.

Chạy suy luận trong Python

Bước 1: Cài đặt gói pip

pip install tflite-support

Bước 2: Sử dụng mô hình

# Imports
from tflite_support.task import text

# Initialization
answerer = text.BertQuestionAnswerer.create_from_file(model_path)

# Run inference
bert_qa_result = answerer.answer(context, question)

Xem mã nguồn để có thêm lựa chọn để định cấu hình BertQuestionAnswerer.

Kết quả mẫu

Dưới đây là một ví dụ về kết quả trả lời của Mô hình ALBERT.

Bối cảnh: "Khu rừng nhiệt đới Amazon, hay còn gọi là Rừng Amazon, hay còn gọi là Tiếng Anh là Amazonia, là một khu rừng mưa nhiệt đới lá rộng ẩm ở Amazon quần xã sinh vật bao phủ hầu hết lưu vực Amazon của Nam Mỹ. Lưu vực này bao gồm 7.000.000 km2 (2.700.000 dặm vuông), trong đó Rừng nhiệt đới bao phủ diện tích 5.500.000 km2 (2.100.000 dặm vuông). Khu vực này bao gồm lãnh thổ thuộc 9 quốc gia".

Câu hỏi: " Rừng nhiệt đới Amazon nằm ở đâu?"

Câu trả lời:

answer[0]:  'South America.'
logit: 1.84847, start_index: 39, end_index: 40
answer[1]:  'most of the Amazon basin of South America.'
logit: 1.2921, start_index: 34, end_index: 40
answer[2]:  'the Amazon basin of South America.'
logit: -0.0959535, start_index: 36, end_index: 40
answer[3]:  'the Amazon biome that covers most of the Amazon basin of South America.'
logit: -0.498558, start_index: 28, end_index: 40
answer[4]:  'Amazon basin of South America.'
logit: -0.774266, start_index: 37, end_index: 40

Thử mẹo đơn giản Công cụ minh hoạ CLI dành cho BertQuestionAnswerer thông qua mô hình và dữ liệu thử nghiệm của riêng bạn.

Yêu cầu về khả năng tương thích với mô hình

API BertQuestionAnswerer yêu cầu một mô hình TFLite với Siêu dữ liệu mô hình TFLite.

Siêu dữ liệu phải đáp ứng các yêu cầu sau:

  • input_process_units cho bộ mã hoá văn bản/bản văn bản

  • 3 tensor đầu vào có tên "ids", "mask" và "segment_ids" cho kết quả của trình tạo mã thông báo

  • 2 tensor đầu ra có tên là "end_logits" và "start_logits" để cho biết vị trí tương đối của câu trả lời trong ngữ cảnh