Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách nhúng dữ liệu văn bản thành vector chiều cao bằng Python (Keras Embedding + LSTM)

TensorFlow là framework ML của Google. Keras là API deep learning Python chạy trên TensorFlow. Functional API hỗ trợ đa đầu vào/đầu ra, topo không tuyến tính.

Sử dụng Google Colab. Code nhúng từng từ trong tiêu đề/thân bài thành vector 64 chiều, sau đó dùng LSTM nén thành vector đơn, kết hợp với tags để dự đoán priority và department:

Ví dụ

print("Số lượng tag duy nhất")
num_tags = 12
print("Kích thước từ vựng khi tiền xử lý văn bản")
num_words = 10000
print("Số lớp cho dự đoán")
num_classes = 4

title_input = keras.Input(shape=(None,), name="title")
print("Chuỗi số nguyên độ dài biến đổi")
body_input = keras.Input(shape=(None,), name="body")
tags_input = keras.Input(shape=(num_tags,), name="tags")

print("Nhúng mỗi từ trong tiêu đề thành vector 64 chiều")
title_features = layers.Embedding(num_words, 64)(title_input)
print("Nhúng mỗi từ trong thân bài thành vector 64 chiều")
body_features = layers.Embedding(num_words, 64)(body_input)

print("Nén chuỗi vector nhúng thành vector 128 chiều đơn")
title_features = layers.LSTM(128)(title_features)
print("Nén chuỗi vector nhúng thành vector 32 chiều đơn")
body_features = layers.LSTM(32)(body_features)

print("Gộp các đặc trưng bằng cách nối (concatenate)")
x = layers.concatenate([title_features, body_features, tags_input])

print("Dùng logistic regression dự đoán đặc trưng")
priority_pred = layers.Dense(1, name="priority")(x)
department_pred = layers.Dense(num_classes, name="class")(x)

print("Khởi tạo mô hình dự đoán priority và class")
model = keras.Model(
    inputs=[title_input, body_input, tags_input],
    outputs=[priority_pred, department_pred],
)

Nguồn: TensorFlow Guide

Đầu ra

Số lượng tag duy nhất
Kích thước từ vựng khi tiền xử lý văn bản
Số lớp cho dự đoán
Chuỗi số nguyên độ dài biến đổi
Nhúng mỗi từ trong tiêu đề thành vector 64 chiều
Nhúng mỗi từ trong thân bài thành vector 64 chiều
Nén chuỗi vector nhúng thành vector 128 chiều đơn
Nén chuỗi vector nhúng thành vector 32 chiều đơn
Gộp các đặc trưng bằng cách nối (concatenate)
Dùng logistic regression dự đoán đặc trưng
Khởi tạo mô hình dự đoán priority và class

Giải thích

  • Functional API làm việc được với nhiều đầu vào/đầu ra (Sequential API không thể).