Trong khi làm việc trên các mô hình ngôn ngữ tự nhiên cho các công cụ tìm kiếm, tôi thường đặt câu hỏi “Hai từ này giống nhau đến mức nào?”, “Hai câu này giống nhau đến mức nào?” . Tôi đã nói về việc nhúng từ tùy chỉnh trong một bài đăng trước, trong đó nghĩa của từ được xem xét cho sự giống nhau của từ. Trong bài đăng trên blog này, chúng tôi sẽ xem xét nhiều hơn về các kỹ thuật cho sự giống nhau của câu hoặc tài liệu Có một vài số liệu về độ tương tự của văn bản nhưng chúng tôi sẽ xem xét Độ tương tự của Jaccard và Độ tương tự của Cosine, đây là những số liệu phổ biến nhất Jaccard tương tựĐộ tương tự của Jaccard hoặc giao điểm trên liên kết được định nghĩa là kích thước của giao điểm chia cho kích thước của liên kết của hai tập hợp. Hãy lấy ví dụ về hai câu Câu 1. AI là bạn của chúng ta và nó rất thân thiện Để tính toán độ tương tự bằng cách sử dụng độ tương tự Jaccard, trước tiên chúng tôi sẽ thực hiện từ vựng để giảm các từ thành cùng một từ gốc. Trong trường hợp của chúng ta, “friend” và “friendly” sẽ trở thành “friend”, “has” và “have” sẽ trở thành “has”. Vẽ sơ đồ Venn của hai câu ta được Đối với hai câu trên, ta có hệ số tương tự Jaccard là 5/(5+3+2) = 0. 5 là kích thước của giao điểm của tập hợp chia cho tổng kích thước của tập hợp. def get_jaccard_sim(str1, str2): Một điều cần lưu ý ở đây là vì chúng ta sử dụng tập hợp nên “bạn” xuất hiện hai lần trong Câu 1 nhưng nó không ảnh hưởng đến tính toán của chúng ta — điều này sẽ thay đổi theo Độ tương tự Cosine Cosin tương tựĐộ tương tự cosin tính toán độ tương tự bằng cách đo cosin của góc giữa hai vectơ. Điều này được tính như Với độ tương tự cosin, chúng ta cần chuyển đổi câu thành vectơ. Một cách để làm điều đó là sử dụng túi từ với TF (tần số thuật ngữ) hoặc TF-IDF (tần số thuật ngữ- tần suất tài liệu nghịch đảo). Việc lựa chọn TF hoặc TF-IDF phụ thuộc vào ứng dụng và không quan trọng đối với cách thức tương tự cosine thực sự được thực hiện - điều này chỉ cần các vectơ. TF tốt cho sự giống nhau của văn bản nói chung, nhưng TF-IDF tốt cho mức độ liên quan của truy vấn tìm kiếm Một cách khác là sử dụng Word2Vec hoặc các nhúng từ tùy chỉnh của riêng chúng tôi để chuyển từ thành vectơ. Tôi đã nói về đào tạo nhúng từ tùy chỉnh của riêng chúng tôi trong một bài viết trước Có hai điểm khác biệt chính giữa tf/ tf-idf với túi từ và nhúng từ. Hãy tính độ đồng dạng cosin cho hai câu này Câu 1. AI là bạn của chúng ta và nó rất thân thiện Bước 1, chúng tôi sẽ tính Tần suất kỳ hạn bằng Bag of Words Bước 2, Vấn đề chính với số lượng thuật ngữ được hiển thị ở trên là nó ưu tiên các tài liệu hoặc câu dài hơn. Một cách để giải quyết vấn đề này là chuẩn hóa thuật ngữ tần số với cường độ tương ứng hoặc định mức L2. Tính tổng bình phương của từng tần số và lấy căn bậc hai, chuẩn L2 của Câu 1 là 3. 3166 và Câu 2 là 2. 6458. Chia tần số hạn trên với các chỉ tiêu này, chúng tôi nhận được Bước 3, vì chúng ta đã chuẩn hóa hai vectơ để có độ dài bằng 1, chúng ta có thể tính toán độ tương tự cosin bằng tích vô hướng. Do đó độ đồng dạng cosin của hai câu bằng 0. 684 khác với Jaccard Độ giống nhau của hai câu giống hệt nhau là 0. 5 (đã tính ở trên) Mã cho tính tương tự Cosine theo cặp của các chuỗi trong Python là from collections import Counter Sự khác biệt giữa Tương tự Jaccard và Tương tự Cosine
Nếu bạn biết nhiều ứng dụng hơn cho từng ứng dụng, vui lòng đề cập trong phần bình luận bên dưới vì nó sẽ giúp ích cho những người khác. Điều này kết thúc blog của tôi về tổng quan các số liệu tương tự văn bản. Chúc may mắn trong những khám phá của riêng bạn với văn bản Một trong những cuốn sách hay nhất mà tôi tìm thấy về chủ đề truy xuất thông tin là Introduction to Information Retrieval, đây là một cuốn sách tuyệt vời bao gồm nhiều khái niệm về NLP, truy xuất thông tin và tìm kiếm. Ngoài ra, hãy xem PODCAST của tôi. Tôi có một podcast tên là “The Data Life Podcast”. Bạn có thể nghe thấy điều này ở bất cứ nơi nào bạn nhận được podcast của mình. Trong tập này, bạn sẽ nghe một cuộc trò chuyện thực sự thú vị với Paul Azunre (tác giả của Manning Book Transfer Learning in NLP) về các xu hướng trong BERT, Elmo, nhúng từ, v.v. |