Thuật toán thực tế tốt nhất cho sự tương tự câu


17

Tôi có hai câu, S1 và S2, cả hai đều có số từ (thường) dưới 15.

Các thuật toán thực tế hữu ích và thành công nhất (học máy) là gì, có thể dễ thực hiện (mạng thần kinh là ổn, trừ khi kiến ​​trúc phức tạp như Google Inception, v.v.).

Tôi đang tìm kiếm một thuật toán sẽ hoạt động tốt mà không mất quá nhiều thời gian vào nó. Có thuật toán nào bạn thấy thành công và dễ sử dụng không?

Điều này có thể, nhưng không phải rơi vào loại phân cụm. Nền tảng của tôi là từ học máy, vì vậy mọi đề xuất đều được chào đón :)


Bạn đã thực hiện những gì? Tôi cũng đang phải đối mặt, phải đưa ra giải pháp cho các bài viết liên quan đến 'k' trong một kho văn bản liên tục cập nhật.
Dileepa

Câu trả lời:


16

Tương tự Cosine cho Không gian Vector có thể được bạn trả lời: http://blog.christianperone.com/2013/09/machine-learning-cosine-similarity-for-vector-space-models-part-iii/

Hoặc bạn có thể tính toán riêng của từng câu. Nhưng vấn đề là, sự giống nhau là gì?

"Đây là một cái cây", "Đây không phải là một cái cây"

Nếu bạn muốn kiểm tra ý nghĩa ngữ nghĩa của câu, bạn sẽ cần một bộ dữ liệu wordvector. Với bộ dữ liệu wordvector bạn sẽ có thể kiểm tra mối quan hệ giữa các từ. Ví dụ: (Vua - Đàn ông + đàn bà = Nữ hoàng)

Siraj Raval có một máy tính xách tay python tốt để tạo bộ dữ liệu wordvector: https://github.com/llSourcell/word_vector_game_of_thrones-LIVE


8

Một cách tiếp cận bạn có thể thử là lấy trung bình các vectơ từ được tạo bởi các thuật toán nhúng từ (word2vec, găng tay, v.v.). Các thuật toán này tạo ra một vectơ cho mỗi từ và sự tương đồng cosine giữa chúng thể hiện sự tương đồng về ngữ nghĩa giữa các từ. Trong trường hợp các vectơ trung bình trong số các câu. Một điểm khởi đầu tốt để biết thêm về các phương pháp này là bài viết này: Ý nghĩa của việc nhúng các câu được thực hiện tốt như thế nào . Nó thảo luận về một số phương pháp nhúng câu. Tôi cũng đề nghị bạn xem xét việc học tập không giám sát các câu nhúng bằng cách sử dụng các tính năng n-Gram thành phần mà các tác giả tuyên bố cách tiếp cận của họ đánh bại trạng thái của các phương pháp nghệ thuật. Ngoài ra họ cung cấp mã và một số hướng dẫn sử dụng trong repo github này .



1

Bạn nên xem https://github.com/seatgeek/fuzzywuzzy#usage . fuzzywuzzy là một thư viện tuyệt vời để kết hợp chuỗi / văn bản cung cấp một số từ 0 đến 100 dựa trên mức độ tương tự của hai câu. Nó sử dụng Levenshtein Khoảng cách để tính toán sự khác biệt giữa các chuỗi trong một gói dễ sử dụng. Ngoài ra, hãy xem bài đăng trên blog này để được giải thích chi tiết về cách thực hiện công việc mờ. Blog này cũng được viết bởi tác giả fuzzywuzzy


1

Blog này có giải pháp cho sự tương tự văn bản ngắn. Họ chủ yếu sử dụng mô hình mạng nơ-ron BERT để tìm điểm tương đồng giữa các câu. https://medium.com/@vimald8959/sentence-c sortisation-short-text-faxilarity-61bb88fae15e


Xin chào, chào mừng bạn đến với Data Science Stack Exchange! Khi tham khảo một giải pháp từ một trang web bên ngoài, vui lòng xem xét việc viết một bản tóm tắt trong câu trả lời của bạn. Thật vậy, điều này sẽ dễ đọc hơn và ngăn câu trả lời của bạn trở nên lỗi thời nếu trang đích thay đổi hoặc liên kết bị hỏng.
Romain Reboulleau

Đẹp, đây là thứ thực sự tốt. Vì vậy, về cơ bản họ sử dụng BERT? @RomainReboulleau chắc chắn là đúng!
DaveTheAl
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.