it-swarm-vi.tech

Có một thuật toán cho biết sự giống nhau về ngữ nghĩa của hai cụm từ

đầu vào: cụm từ 1, cụm từ 2

đầu ra: giá trị tương tự ngữ nghĩa (từ 0 đến 1) hoặc xác suất hai cụm từ này nói về cùng một thứ

62
btw0

Bạn có thể muốn xem bài báo này:

Tương tự câu dựa trên mạng ngữ nghĩa và thống kê khối (PDF)

Tôi đã thực hiện thuật toán được mô tả. Bối cảnh của chúng tôi rất chung chung (thực tế là hai câu tiếng Anh) và chúng tôi thấy cách tiếp cận được thực hiện quá chậm và kết quả, trong khi hứa hẹn, không đủ tốt (hoặc có thể là như vậy mà không cần nhiều nỗ lực, đáng kể).

Bạn không đưa ra nhiều bối cảnh vì vậy tôi không nhất thiết phải đề xuất điều này nhưng đọc bài báo có thể hữu ích cho bạn trong việc hiểu cách giải quyết vấn đề.

Trân trọng,

Matt.

42
Matt Mower

Có một câu trả lời ngắn và dài cho vấn đề này.

Câu trả lời ngắn gọn:

Sử dụng gói WordNet :: Tương tự Perl . Nếu Perl không phải là ngôn ngữ bạn chọn, hãy kiểm tra trang dự án WordNet tại Princeton hoặc google để tìm thư viện trình bao bọc.

Câu trả lời dài:

Xác định độ tương tự của Word là một vấn đề phức tạp và nghiên cứu vẫn còn rất nóng trong lĩnh vực này. Để tính toán độ tương tự, bạn cần một sự phản hồi thích hợp về ý nghĩa của một từ. Nhưng điều gì sẽ là một đại diện cho ý nghĩa của, nói, 'cái ghế'? Trong thực tế, là gì ý nghĩa chính xác của 'cái ghế'? Nếu bạn suy nghĩ lâu dài về vấn đề này, nó sẽ khiến bạn suy nghĩ, bạn sẽ phát điên lên một chút và cuối cùng sẽ bắt đầu sự nghiệp nghiên cứu về Triết học hoặc Ngôn ngữ học tính toán để tìm ra sự thật ™. Cả các nhà triết học và ngôn ngữ học đã cố gắng đưa ra một câu trả lời trong hàng ngàn năm theo nghĩa đen, và không có kết thúc trước mắt.

Vì vậy, nếu bạn muốn khám phá vấn đề này sâu hơn một chút, tôi khuyên bạn nên đọc Chương 20.7 trong Xử lý lời nói và ngôn ngữ của Jurafsky và Martin, một số trong đó có sẵn thông qua Sách của Google . Nó cung cấp một cái nhìn tổng quan rất tốt về các phương pháp phân phối hiện đại, sử dụng số liệu thống kê về sự xuất hiện của Word để xác định một thước đo cho độ tương tự của Word. Bạn không có khả năng tìm thấy các thư viện thực hiện những điều này, tuy nhiên.

32
nfelger

Bạn có thể muốn đăng ký vào dự án WordNet tại Đại học Princeton. Một cách tiếp cận khả thi cho vấn đề này là trước tiên hãy chạy từng cụm từ thông qua danh sách từ dừng (để loại bỏ các từ "phổ biến" như "a", "thành", "the", v.v.) Sau đó cho từng từ còn lại trong mỗi cụm từ, bạn có thể tính toán "độ tương tự" ngữ nghĩa giữa mỗi từ trong cụm từ khác bằng cách sử dụng thước đo khoảng cách dựa trên WordNet. Thước đo khoảng cách có thể là một cái gì đó như: số lượng vòng cung bạn phải đi qua trong WordNet để chuyển từ Word1 sang Word2.

Xin lỗi điều này là khá cao cấp. Rõ ràng là tôi chưa bao giờ thử cái này. Chỉ là một suy nghĩ nhanh chóng.

7
Chuck Wooters

Đối với bất kỳ ai chỉ đến đây, tôi khuyên bạn nên xem SEMILAR - http://www.semanticsimilarity.org/ . Họ thực hiện rất nhiều phương pháp nghiên cứu hiện đại để tính toán độ tương tự của Word và câu. Nó được viết bằng Java.

API SEMILAR đi kèm với các phương thức tương tự khác nhau dựa trên Wordnet, Phân tích ngữ nghĩa tiềm ẩn (LSA), Phân bổ Dirichlet tiềm ẩn (LDA), BLEU, Meteor, Thông tin tương hỗ điểm (PMI), phương pháp dựa trên phụ thuộc, phương pháp tối ưu hóa dựa trên Phân công bậc hai, v.v. các phương pháp tương tự hoạt động ở các mức độ chi tiết khác nhau - Word to Word, từng câu hoặc các văn bản lớn hơn.

5
kyrenia

Tôi sẽ xem xét việc lập chỉ mục ngữ nghĩa tiềm ẩn cho việc này. Tôi tin rằng bạn có thể tạo một cái gì đó tương tự như một chỉ mục tìm kiếm không gian vectơ nhưng với các thuật ngữ liên quan đến ngữ nghĩa gần nhau hơn, tức là có một góc nhỏ hơn giữa chúng. Nếu tôi tìm hiểu thêm tôi sẽ đăng ở đây.

5
jonfm

Xin lỗi để đào lên một câu hỏi 6 năm tuổi, nhưng khi tôi vừa xem bài đăng này hôm nay, tôi sẽ đưa ra câu trả lời trong trường hợp bất kỳ ai khác đang tìm kiếm một cái gì đó tương tự.

cortical.io đã phát triển một quy trình tính toán độ tương tự về ngữ nghĩa của hai biểu thức và chúng có bản demo của nó trên trang web của chúng . Họ cung cấp API miễn phí cung cấp quyền truy cập vào chức năng , vì vậy bạn có thể sử dụng nó trong ứng dụng của riêng mình mà không phải tự thực hiện thuật toán.

3
Hybrid System

Một giải pháp đơn giản là sử dụng sản phẩm chấm của vectơ n-gram ký tự. Điều này là mạnh mẽ so với thay đổi thứ tự (mà nhiều số liệu khoảng cách chỉnh sửa không) và nắm bắt được nhiều vấn đề xung quanh xuất phát. Nó cũng ngăn chặn vấn đề hoàn thành AI về sự hiểu biết ngữ nghĩa đầy đủ.

Để tính toán vectơ n-gram, chỉ cần chọn một giá trị n (giả sử, 3) và băm mỗi chuỗi 3 từ trong cụm từ thành một vectơ. Bình thường hóa vectơ thành đơn vị chiều dài, sau đó lấy sản phẩm chấm của các vectơ khác nhau để phát hiện sự tương tự.

Cách tiếp cận này đã được mô tả trong J. 10.111/j.1551-6709.2010.01106.x

3
Jonathan Betz

Hãy thử SimService , cung cấp dịch vụ tính toán các từ tương tự và cụm từ tương tự top-n.

2
Lushan Han

Tôi sẽ xem xét các kỹ thuật thống kê có tính đến xác suất của mỗi từ xuất hiện trong một câu. Điều này sẽ cho phép bạn ít quan trọng hơn đối với các từ phổ biến như 'và', 'hoặc', 'và' quan trọng hơn đối với các từ xuất hiện ít chính xác hơn và do đó là yếu tố phân biệt đối xử tốt hơn. Ví dụ: nếu bạn có hai câu:

1) Thuật toán smith-waterman cung cấp cho bạn một phép đo tương tự giữa hai chuỗi. 2) Chúng tôi đã xem xét thuật toán smith-waterman và chúng tôi thấy nó đủ tốt cho dự án của chúng tôi.

Việc hai câu chia sẻ các từ "smith-waterman" và các từ "thuật toán" (không phổ biến như 'và', 'hoặc', v.v.), sẽ cho phép bạn nói rằng hai câu có thể thực sự được nói về cùng một chủ đề.

Tóm tắt, tôi muốn đề nghị bạn xem qua: 1) Các biện pháp tương tự chuỗi; 2) Phương pháp thống kê;

Hi vọng điêu nay co ich.

2
Gia

Điều này đòi hỏi thuật toán của bạn thực sự biết những gì bạn nói về. Nó có thể được thực hiện ở một số dạng thô sơ bằng cách chỉ so sánh các từ và tìm từ đồng nghĩa, v.v., nhưng bất kỳ loại kết quả chính xác nào cũng sẽ cần một số dạng thông minh.

1
Rik

Hãy xem http://mkusner.github.io/publications/WMD.pdf Bài viết này mô tả một thuật toán gọi là khoảng cách Word Mover cố gắng khám phá sự tương tự về ngữ nghĩa. Nó dựa vào điểm số tương tự như được chỉ định bởi Word2vec. Việc tích hợp điều này với GoogleNews-vectơ-neg300 mang lại kết quả mong muốn.

0
Anonymous