Trước tiên, trước khi chúng tôi bắt đầu, tôi khuyên bạn nên tham khảo các câu hỏi tương tự trên mạng như /datascience/25053/best-pratics-alerskym-for-sentence-similarity và https: // stackoverflow. com / câu hỏi / 62328 / is-there-an-Thuật-that-Tell-the-semantic-same-of-hai-cụm từ
Để xác định sự giống nhau của câu chúng ta cần xem xét loại dữ liệu nào chúng ta có. Ví dụ: nếu bạn có một tập dữ liệu được dán nhãn tức là các câu tương tự và các câu không giống nhau thì cách tiếp cận thẳng có thể là sử dụng thuật toán được giám sát để phân loại các câu.
Một cách tiếp cận có thể xác định độ tương tự về cấu trúc câu sẽ là trung bình các vectơ từ được tạo bởi thuật toán nhúng từ, tức là word2vec. Các thuật toán này tạo ra một vectơ cho mỗi từ và độ tương tự cosine giữa chúng thể hiện sự tương đồng về ngữ nghĩa giữa các từ. (Daniel L 2017)
Sử dụng vectơ từ chúng ta có thể sử dụng các số liệu sau để xác định độ giống nhau của từ.
- Khoảng cách cosin giữa các từ nhúng của các từ
- Khoảng cách Euclide giữa các từ nhúng của các từ
Độ tương tự cosine là thước đo độ tương tự giữa hai vectơ khác không của không gian sản phẩm bên trong đo cosin của góc giữa chúng. Góc cosin là thước đo sự chồng chéo giữa các câu về nội dung của chúng.
Khoảng cách Euclide giữa hai vectơ từ cung cấp một phương pháp hiệu quả để đo lường sự tương đồng về ngôn ngữ hoặc ngữ nghĩa của các từ tương ứng. (Frank D 2015)
Ngoài ra, bạn có thể tính toán riêng của câu để xác định độ tương tự của câu.
Eigenvector là một tập các vectơ đặc biệt liên kết với một hệ phương trình tuyến tính (tức là phương trình ma trận). Ở đây, một ma trận tương tự câu được tạo ra cho mỗi cụm và hàm riêng cho ma trận được tính toán. Bạn có thể đọc thêm về cách tiếp cận dựa trên Eigenvector để xếp hạng câu trên bài viết này https://pdfs.semanticscholar.org/ca73/bbc99be157074d8aad17ca8535e2cd956815.pdf
Đối với mã nguồn, Siraj Rawal có một sổ ghi chép Python để tạo một tập các vectơ từ. Các vectơ từ sau đó có thể được sử dụng để tìm sự tương đồng giữa các từ. Mã nguồn có sẵn ở đây https://github.com/llSourcell/word_vector_game_of_thrones-LIVE
Một tùy chọn khác là một hướng dẫn từ Oreily sử dụng thư viện Python của gensin để xác định sự giống nhau giữa các tài liệu. Hướng dẫn này sử dụng NLTK để token hóa sau đó tạo mô hình tf-idf (thuật ngữ tần số tài liệu nghịch đảo thuật ngữ) từ kho văn bản. Sau đó, tf-idf được sử dụng để xác định độ tương tự của các tài liệu. Hướng dẫn có sẵn tại đây https://www.oreilly.com/learning/how-do-i-compare-document-similarity-USE-python