Trình nhúng văn bản cho phép nhúng văn bản vào vectơ đối tượng nhiều chiều thể hiện ý nghĩa ngữ nghĩa, có thể được so sánh với đối tượng tương ứng vectơ của các văn bản khác để đánh giá sự tương đồng về mặt ngữ nghĩa.
Trái ngược với tìm kiếm văn bản, công cụ nhúng văn bản cho phép tính toán sự tương đồng giữa các văn bản một cách nhanh chóng thay vì tìm kiếm thông qua chỉ mục được xác định trước được tạo từ một tập sao lục.
Sử dụng API TextEmbedder
của Thư viện tác vụ để triển khai trình nhúng văn bản tuỳ chỉnh vào
ứng dụng dành cho thiết bị di động của bạn.
Các tính năng chính của TextNhúng API
Xử lý văn bản đầu vào, bao gồm cả trong biểu đồ hoặc ngoài biểu đồ Từ vựng hoặc Đoạn câu mã hoá trên văn bản đầu vào.
Hàm hiệu dụng tích hợp sẵn để tính toán tính đồng dạng cosin giữa vectơ đặc trưng.
Các mô hình trình nhúng văn bản được hỗ trợ
Các mô hình sau đây được đảm bảo tương thích với TextEmbedder
API.
Chiến lược phát hành đĩa đơn Mô hình TFLite của bộ mã hoá câu Universal trên TensorFlow Hub
Mô hình tuỳ chỉnh đáp ứng yêu cầu về khả năng tương thích với mô hình.
Chạy dự đoán trong C++
// Initialization.
TextEmbedderOptions options:
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<TextEmbedder> text_embedder = TextEmbedder::CreateFromOptions(options).value();
// Run inference with your two inputs, `input_text1` and `input_text2`.
const EmbeddingResult result_1 = text_embedder->Embed(input_text1);
const EmbeddingResult result_2 = text_embedder->Embed(input_text2);
// Compute cosine similarity.
double similarity = TextEmbedder::CosineSimilarity(
result_1.embeddings[0].feature_vector()
result_2.embeddings[0].feature_vector());
Xem
mã nguồn
để có thêm lựa chọn để định cấu hình TextEmbedder
.
Chạy suy luận trong Python
Bước 1: Cài đặt gói TensorFlow Lite Support Pypi.
Bạn có thể cài đặt gói TensorFlow Lite Support Pypi bằng cách dùng như sau :
pip install tflite-support
Bước 2: Sử dụng mô hình
from tflite_support.task import text
# Initialization.
text_embedder = text.TextEmbedder.create_from_file(model_path)
# Run inference on two texts.
result_1 = text_embedder.embed(text_1)
result_2 = text_embedder.embed(text_2)
# Compute cosine similarity.
feature_vector_1 = result_1.embeddings[0].feature_vector
feature_vector_2 = result_2.embeddings[0].feature_vector
similarity = text_embedder.cosine_similarity(
result_1.embeddings[0].feature_vector, result_2.embeddings[0].feature_vector)
Xem
mã nguồn
để có thêm lựa chọn để định cấu hình TextEmbedder
.
Kết quả mẫu
Sự tương đồng về cosin giữa các vectơ đặc trưng được chuẩn hoá trả về điểm trong khoảng -1 và 1. Càng cao càng tốt, tức là độ đồng dạng cosin bằng 1 có nghĩa là hai vectơ đó .
Cosine similarity: 0.954312
Thử mẹo đơn giản Công cụ minh hoạ CLI cho TextNhúng 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 TextEmbedder
yêu cầu một mô hình TFLite với
Siêu dữ liệu mô hình TFLite.
Có 3 loại mô hình chính được hỗ trợ:
Các mô hình dựa trên BERT (xem mã nguồn để biết thêm chi tiết):
Chính xác 3 tensor đầu vào (kTfLiteString)
- tensor mã nhận dạng, với tên siêu dữ liệu là "ids",
- Mask tensor, với tên siêu dữ liệu là "mask".
- Tensor ID phân đoạn, với tên siêu dữ liệu là "segment_ids"
Chính xác một tensor đầu ra (kTfLiteUInt8/kTfLiteFloat32)
- với các thành phần
N
tương ứng với kích thướcN
của trả về vectơ đối tượng cho lớp đầu ra này. - 2 hoặc 4 phương diện, tức là
[1 x N]
hoặc[1 x 1 x 1 x N]
.
- với các thành phần
Input_process_units cho bộ mã hoá văn bản/bản văn bản
Các mô hình dựa trên bộ mã hoá câu toàn cầu (xem mã nguồn để biết thêm chi tiết):
Chính xác 3 tensor đầu vào (kTfLiteString)
- Tensor văn bản truy vấn, với tên siêu dữ liệu "inp_text".
- Tensor ngữ cảnh phản hồi, với tên siêu dữ liệu "res_context".
- Tensor văn bản phản hồi, với tên siêu dữ liệu "res_text".
Chính xác 2 tensor đầu ra (kTfLiteUInt8/kTfLiteFloat32)
- Tensor mã hoá truy vấn, với tên siêu dữ liệu là "query_Encoding".
- Tensor mã hoá phản hồi, với tên siêu dữ liệu là "response_ encrypted".
- Cả hai đều có thành phần
N
tương ứng với kích thướcN
của trả về vectơ đối tượng cho lớp đầu ra này. - Cả hai đều có 2 hoặc 4 phương diện, tức là
[1 x N]
hoặc[1 x 1 x 1 x N]
.
Mọi mô hình nhúng văn bản có:
- Một tensor văn bản nhập (kTfLiteString)
Ít nhất một tensor nhúng đầu ra (kTfLiteUInt8/kTfLiteFloat32)
- với các thành phần
N
tương ứng với kích thướcN
của trả về vectơ đối tượng cho lớp đầu ra này. - 2 hoặc 4 phương diện, tức là
[1 x N]
hoặc[1 x 1 x 1 x N]
.
- với các thành phần