Có cách nào kiểm tra sự tương đồng về nội dung của 2 câu bất kỳ dựa vào học máy?

  1. Trí tuệ nhân tạo

Hiện tại mình đang gặp một bài toán yêu cầu xác định độ tương đồng về ngữ nghĩa giữa 2 câu nói trong tiếng việt. Dữ liệu có là tập từ điển Việt Nam và bộ các câu văn thu thập được từ báo chí.

Ngoài hạn chế về dữ liệu ra, bài toán còn khó ở việc các câu có thể có độ dài khác nhau, hiện tại mình đang chưa có hướng giải quyết, hi vọng mọi người giúp mình.

Từ khóa: 

,

trí tuệ nhân tạo

May mắn là dữ liệu báo chí khá chính thức, ít sai, ít viết tắt, đầy đủ thông tin, ngôn ngữ phổ thông.

Mình chia sẻ 4 thứ:

  1. So sánh sự trùng khớp về ký tự/từ/cụm từ - N-Gram. Bạn Vector hóa từng câu, dùng một số như OneHotEncoding,TF-IDF, CF,... Bạn Áp dụng một số giải thuật so sánh độ tương tự của 2 vector như COSIN simility chẳng hạn, Hoặc JACCARD simility.
  2. Mình nhớ là trên facebook có nhóm NLP hay Machine Learning gì đó. Nhóm nào đó có chia sẻ Word2Vec, Doc2Vec. Bạn dùng thư viện này để tạo Vector hoặc tự Crawl dữ liệu về để Build Word2Vec. Thế là bạn có 1 Vector đặc trưng cho từng câu. Dùng một số phép đo khoảng cách của 2 vector đó (Cosine chẳng hạn). Bạn kết hợp thêm từ bước 1 để có chất lượng tốt chẳng hạn.
  3. Yêu cầu độ dài tối thiểu và tối đa của 1 câu là bao nhiêu để cho dễ làm. Cái này bạn cần Heuristic một chút để chọn ngưỡng tham số.
  4. Để chuẩn nữa. Bạn dùng 1 số NLP toolkit của thầy phuonglh . Có cái POS Tagging. Thử tách ngữ pháp để tạo Vector đặc trưng cho câu đó. Rồi dùng các phép đo xem sao.
Trả lời

May mắn là dữ liệu báo chí khá chính thức, ít sai, ít viết tắt, đầy đủ thông tin, ngôn ngữ phổ thông.

Mình chia sẻ 4 thứ:

  1. So sánh sự trùng khớp về ký tự/từ/cụm từ - N-Gram. Bạn Vector hóa từng câu, dùng một số như OneHotEncoding,TF-IDF, CF,... Bạn Áp dụng một số giải thuật so sánh độ tương tự của 2 vector như COSIN simility chẳng hạn, Hoặc JACCARD simility.
  2. Mình nhớ là trên facebook có nhóm NLP hay Machine Learning gì đó. Nhóm nào đó có chia sẻ Word2Vec, Doc2Vec. Bạn dùng thư viện này để tạo Vector hoặc tự Crawl dữ liệu về để Build Word2Vec. Thế là bạn có 1 Vector đặc trưng cho từng câu. Dùng một số phép đo khoảng cách của 2 vector đó (Cosine chẳng hạn). Bạn kết hợp thêm từ bước 1 để có chất lượng tốt chẳng hạn.
  3. Yêu cầu độ dài tối thiểu và tối đa của 1 câu là bao nhiêu để cho dễ làm. Cái này bạn cần Heuristic một chút để chọn ngưỡng tham số.
  4. Để chuẩn nữa. Bạn dùng 1 số NLP toolkit của thầy phuonglh . Có cái POS Tagging. Thử tách ngữ pháp để tạo Vector đặc trưng cho câu đó. Rồi dùng các phép đo xem sao.

Mình đang làm nghiên cứu về bài toán matching trong hệ hỏi đáp , có thể dùng word2vec để encode 2 câu làm đầu vào cho một số mạng deeplearning để học việc matching 2 câu.Như một mạng trong paper này

https://arxiv.org/pdf/1604.01178.pdf

Việc sử dụng từ điển từ đồng nghĩa cũng khá quan trọng cho bài toán của bạn.

Nếu câu dài thì bạn nghĩ cần lấy thành phần chính của câu hoặc cần tóm tắt câu đó.

Ngoài ra cần xử lý trường hợp đặc biệt như hai câu trái nghĩa.

Bạn nên thử các cách tiếp cận đơn giản như dùng luật để xem thế nào sau đó dùng các phương pháp hiện đại như deep learning chẳng hạn :D

Bổ sung thêm, có thể thử train w2v bằng fast text. Hoặc nếu xài ký tự thì mình đc recommend là xài từ 6-9 ký tự sẽ tốt.