Tôi không thể tìm thấy bất kỳ tài liệu hữu ích nào ngoài kia để sử dụng học sâu cho vấn đề cụ thể này. Hầu hết các phương pháp dường như dựa vào các phương pháp học phi máy như độ tương tự chuỗi và khoảng cách Levenstein. Một cách tiếp cận dựa trên học tập sâu hợp lý cho vấn đề này sẽ là Mạng thần kinh tái phát . Một LSTM (Bộ nhớ ngắn hạn) hoặc GRU (Đơn vị lặp lại có kiểm soát) sẽ là lý tưởng. Ý tưởng là có một RNN có trạng thái bên trong và tôn trọng thứ tự đầu vào được cung cấp.
Không giống như phân loại văn bản, phân tích tình cảm hoặc tạo chuỗi, mã hóa ưa thích cho văn bản ở đây sẽ ở cấp độ ký tự thay vì cấp từ .
Ví dụ
Christian Douglas,Chris,1
Jhon Stevens,Charlie,0
sẽ trở thành
[C,h,r,i,s,t,i,a,n, ,D,o,u,g,l,a,s, ,C,h,r,i,s] --> [1]
[J,h,o,n, ,S,t,e,v,e,n,s, ,C,h,a,r,l,i,e] --> [0]
Hai chuỗi được khớp được nối thành một chuỗi duy nhất. Trực giác ở đây là RNN sẽ xử lý ký tự chuỗi theo ký tự và tìm hiểu (đọc trọng số cập nhật) rằng các ký tự ở cuối có mô hình tương tự như những gì nó thấy trước đó trong cùng một chuỗi để suy ra rằng nó phải là 1 thay vì 0.
Vectơ của [1/0] là biến mục tiêu.
Các bước xử lý trước RNN tiêu chuẩn được áp dụng như bình thường - chúng ta sẽ sắp xếp các chuỗi ngay từ đầu để chúng có cùng độ dài (giả sử 50), các ký tự sẽ được mã hóa dưới dạng số thay vì chuỗi, v.v.
Vì từ điển ở đây khá nhỏ (26 bảng chữ cái + dấu cách + pad), nên kiến trúc mạng có thể khá đơn giản. Một lớp nhúng duy nhất + lớp tái phát nên đủ.
Đóng khung vấn đề theo cách này cho phép chúng tôi sử dụng RNN vanilla hoặc LSTM / GRU ngoài luồng thay vì tạo một kiến trúc tùy chỉnh lấy hai chuỗi riêng biệt làm đầu vào cho mỗi điểm dữ liệu và ném ra một số.
Bạn có thể đưa ra cách tiếp cận này và xem liệu có thể đánh bại các mô hình cơ bản một cách thỏa đáng hay không.
Một cách đọc tốt cho các RNN cấp nhân vật là blog và mã của Andrej Karpath . Vấn đề mà anh ta đang cố gắng giải quyết là khác nhau và mã này hoàn toàn khó hiểu nhưng nó vẫn nắm bắt được ý tưởng khá tốt.