Tham dự Hội nghị chuyên đề Women in ML vào ngày 7 tháng 12 Đăng ký ngay

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

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

API BertQuestionAnswerer Thư viện Tác vụ tải một mô hình Bert và trả lời các câu hỏ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 tài liệu cho mô hình Câu hỏi-Trả lời tại đây .

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

  • Sử dụng hai đầu vào văn bản dưới dạng câu hỏi và ngữ cảnh và xuất ra danh sách các câu trả lời có thể.

  • Thực hiện mã hóa Wordpiece hoặc Câu văn ngoài biểu đồ trên văn bản đầu vào.

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 suy luận trong Java

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

Sao chép tệp mô hình .tflite vào thư mục nội dung của mô-đun Android nơi mô hình sẽ được chạy. Chỉ định rằng không nên nén tệp 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 (NNAPI is included)
    implementation 'org.tensorflow:tensorflow-lite-task-text:0.3.0'
}

Bước 2: Chạy suy luậ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 suy luận trong Swift

Bước 1: Nhập CocoaPods

Thêm nhóm TensorFlowLiteTaskText trong Podfile

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

Bước 2: Chạy suy luậ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 suy luậ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 bằng 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 để biết thêm tùy chọn để định cấu hình BertQuestionAnswerer .

Kết quả ví dụ

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

Bối cảnh: "Rừng nhiệt đới Amazon, hay còn gọi là Amazon Jungle, còn được gọi bằng tiếng Anh là Amazonia, là một khu rừng mưa nhiệt đới lá rộng ẩm trong quần xã sinh vật Amazon 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 sq mi ), trong đó có 5.500.000 km2 (2.100.000 sq mi) được bao phủ bởi rừng nhiệt đới. Vùng này bao gồm lãnh thổ của chín quốc gia. "

Câu hỏi: "Rừng nhiệt đới Amazon ở đâ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

Hãy dùng thử công cụ trình diễn CLI đơn giản cho BertQuestionAnswerer với 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 của mô hình

API BertQuestionAnswerer mong đợi một mô hình TFLite với Siêu dữ liệu mô hình TFLite bắt buộc.

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

  • input_process_units for Wordpiece / Câu văn Tokenizer

  • 3 bộ căng đầu vào có tên "id", "mask" và "segment_ids" cho đầu ra của tokenizer

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