Tôi đã làm việc trên một dự án về sự giống nhau về câu. Tôi biết nó đã được hỏi nhiều lần trong SO, nhưng tôi chỉ muốn biết nếu vấn đề của tôi có thể được thực hiện bằng phương pháp tôi sử dụng theo cách mà tôi đang làm, hoặc tôi nên thay đổi cách tiếp cận của tôi cho vấn đề. Nói một cách tổng thể, hệ thống được cho là phân chia tất cả các câu của một bài báo và tìm các câu tương tự trong số các bài báo khác được đưa vào hệ thống.n-gram câu tương tự với phép đo tương tự cosin
Tôi đang sử dụng độ tương tự cosin với trọng số tf-idf và đó là cách tôi đã làm.
1- Trước tiên, tôi chia tất cả các bài viết thành các câu, sau đó tôi tạo ra các trigram cho mỗi câu và sắp xếp chúng (phải không?).
2- Tôi tính toán trọng số tf-idf của trigram và tạo vectơ cho tất cả các câu.
3- Tôi tính điểm sản phẩm và độ lớn của câu gốc và câu được so sánh. Sau đó tính toán tương tự cosin.
Tuy nhiên, hệ thống không hoạt động như tôi mong đợi. Ở đây, tôi có một số câu hỏi trong tâm trí của tôi.
Theo như tôi đã đọc về trọng số tf-idf, tôi đoán chúng hữu ích hơn khi tìm "tài liệu" tương tự. Kể từ khi tôi làm việc trên câu, tôi đã sửa đổi thuật toán một chút bằng cách thay đổi một số biến của công thức định nghĩa tf và idf (thay vì tài liệu tôi đã cố gắng để đưa ra định nghĩa dựa trên câu).
tf = số lần xuất hiện của trigram trong câu/số tất cả các quái trong câu
idf = số của tất cả các câu trong tất cả các bài viết/số câu nơi trigram xuất hiện
Bạn có nghĩ rằng đó là ok sử dụng định nghĩa như vậy cho vấn đề này?
Một số khác là tôi thấy việc chuẩn hóa được đề cập nhiều lần khi tính toán độ tương tự của cosin. Tôi đoán rằng điều này là quan trọng bởi vì các vectơ trigram có thể không có cùng kích thước (chúng hiếm khi xảy ra trong trường hợp của tôi). Nếu một vector trigram là kích thước của x và khác là x + 1, sau đó tôi xử lý các vector đầu tiên vì nó là kích thước của x + 1 với giá trị cuối cùng là 0. Đây có phải là ý nghĩa của việc bình thường hóa không? Nếu không, làm thế nào để tôi làm bình thường?
Bên cạnh đó, nếu tôi đã chọn thuật toán sai những gì khác có thể được sử dụng cho vấn đề như vậy (tốt nhất là với cách tiếp cận n-gram)?
Cảm ơn bạn trước.
@Ahmet Nếu có bất kỳ điều gì bạn muốn tôi làm rõ, hãy cho tôi biết. – srean
Cảm ơn bạn đã trả lời. Đầu tiên, lý do tôi sắp xếp vectơ là tôi nhận được kết quả tốt hơn. Tôi đã thử những gì bạn đề nghị nhưng không có may mắn. Nhưng tôi chỉ nhận ra một cái gì đó mà những từ tương tự nói chung là những người có chiều dài tương tự. Sự tương tự cosin này có vẻ hơi ngẫu nhiên với tôi vì chúng tôi không kiểm tra kết nối giữa n-gram, thay vào đó chúng tôi kiểm tra tần số của n-grams mà không xem xét chúng là gì. Có lẽ vẫn còn, tôi đang thiếu một cái gì đó. –
Tất nhiên tương tự cosin sẽ trông ngẫu nhiên nếu bạn không quan tâm họ có phù hợp hay không, bởi vì những gì bạn đang tính toán trong trường hợp đó không liên quan gì đến sự giống nhau về cosin. Bạn đang làm sai và trong trường hợp này nó _will_ là ngẫu nhiên theo định nghĩa. Hãy thử lại và làm theo hướng dẫn chặt chẽ, nó sẽ hoạt động. – srean