Hướng dẫn GTE Chinese Large: Loại bỏ trùng lặp ngữ nghĩa phụ đề video ngắn tiếng Trung

1. Vấn đề: Tại sao cần loại bỏ phụ đề trùng lặp?

Khi xem video ngắn, bạn thường xuyên gặp phải tình trạng phụ đề bị lặp lại y hệt nhau. Hoặc khi tự tạo video, hệ thống ASR tự động sinh ra phụ đề chứa nhiều nội dung trùng lặp. Giải pháp ở đây là ứng dụng mô hình nhúng văn bản GTE để phát hiện và loại bỏ các đoạn phụ đề có ý nghĩa tương đồng.

2. Thiết lập môi trường


# Tạo môi trường ảo
python -m venv gte_env
source gte_env/bin/activate  # Linux/Mac
gte_env\Scripts\activate  # Windows

# Cài đặt thư viện
pip install requests numpy pandas sentence-transformers

3. Cơ sở lý thuyết về nhúng văn bản

Mô hình GTE chuyển đổi văn bản thành vector số học 1024 chiều. Câu có ý nghĩa tương đồng sẽ có vector gần nhau trong không gian toán học. Chỉ số đánh giá dựa trên độ tương đồng cosin:

  • 1.0: Hoàn toàn giống về ngữ nghĩa
  • 0.8-0.99: Rất tương đồng
  • Ngưỡng 0.85 thường được sử dụng để xác định trùng lặp

4. Triển khai hệ thống lọc phụ đề


import requests
import numpy as np

class BoLocPhuDe:
    def __init__(self):
        self.url_api = "http://localhost:7860/api/predict"
        self.nguong = 0.85
        
    def lay_vector_bieu_dien(self, text):
        response = requests.post(self.url_api, json={"data": [text, "", False]})
        return response.json()["data"][0]
        
    def tinh_do_tuong_duong(self, text1, text2):
        emb1 = np.array(self.lay_vector_bieu_dien(text1))
        emb2 = np.array(self.lay_vector_bieu_dien(text2))
        return np.dot(emb1, emb2)/(np.linalg.norm(emb1)*np.linalg.norm(emb2))
        
    def loc_phu_de(self, danh_sach_phu_de):
        ket_qua = []
        da_xu_ly = set()
        
        for i, phu_de in enumerate(danh_sach_phu_de):
            if i in da_xu_ly: continue
            
            ket_qua.append(phu_de)
            da_xu_ly.add(i)
            
            for j in range(i+1, len(danh_sach_phu_de)):
                if j not in da_xu_ly:
                    do_tuong_duong = self.tinh_do_tuong_duong(phu_de, danh_sach_phu_de[j])
                    if do_tuong_duong >= self.nguong:
                        da_xu_ly.add(j)
        
        return ket_qua

5. Ví dụ minh họa


# Dữ liệu đầu vào
phu_de_goc = [
    "Thời tiết hôm nay rất đẹp",
    "Trời hôm nay nắng đẹp tuyệt vời",
    "Tôi rất thích ăn trái cây",
    "Món ăn yêu thích của tôi là trái cây",
    "Video này rất hấp dẫn",
    "Nội dung này đáng xem"
]

# Kết quả sau khi lọc
phu_de_da_loc = [
    "Thời tiết hôm nay rất đẹp",
    "Tôi rất thích ăn trái cây",
    "Video này rất hấp dẫn"
]

6. Tối ưu hiệu suất

  • Phân chia xử lý theo batch để giảm tải bộ nhớ
  • Áp dụng bộ nhớ đệm vector đã xử lý
  • Điều chỉnh ngưỡng tương đồng theo ngữ cảnh

7. Ứng dụng thực tế

Giải pháp này có thể triển khai trong:

  • Nền tảng video ngắn: Lọc nội dung trùng lặp
  • Công cụ biên tập video: Tự động tối ưu phụ đề
  • Hệ thống phân tích dữ liệu: Tiền xử lý văn bản

Thẻ: GTE Chinese Large xử lý ngôn ngữ tự nhiên phân tích ngữ nghĩa tối ưu video ngắn lọc dữ liệu

Đăng vào ngày 30 tháng 5 lúc 23:48