Open betech-nguyenpt opened 1 week ago
文章同士が似ているかどうかは、 1.文字の配列が似ている 2.文字の意味が似ている の2通りの意味で捉えられると思いますが、 今回は「1.文字の配列が似ている」の方で考えてほしいです。
1.文字の配列が似ている →こちらは夏頃にabeがphpで「similar_text」と「levenshtein」の2つの関数を使ってみていました。
similar_text:2つの文字列の「共通部分の長さ」を基に類似度を計算するアルゴリズム levenshtein:2つの文章をどのように編集したら同じ文章になるかを、その編集回数を算出することで評価するアルゴリズム
今回の要件からすると、「共通部分の長さ」よりは「違う部分の数」の方が重要度が高いので、「levenshtein」の方が使えそうに思います。
2.文字の意味が似ている →こちらはまだ調査はしていませんが、文章の意味を解析するために、形態素解析や機械学習系の技術が必要になると思いました。 また、先程も書きましたが、要件的には「1.文字の配列が似ている」のほうが適しているので、こちら方面では調査しなくて大丈夫です。
Việc giữa các câu văn có giống nhau hay không thì tôi nghĩ là có thể hiểu theo 2 nghĩa:
1.array của ký tự giống nhau → Chỗ này thì hồi tầm hè, Abe đã từng thử sử dụng 2 hàm là 「similar_text」và「levenshtein」ở php.
similar_text:là thuật toán mà sẽ tính toán mức độ tương đồng dựa trên "chiều dài của phần chung" của 2 chuỗi ký tự (string) levenshtein:là thuật toán mà sẽ đánh giá 2 câu văn, đánh giá xem cần edit như thế nào thì chúng mới trở thành cùng một câu văn, thông qua việc tính ra số lần edit đó.
Giả sử xuất phát từ yêu cầu của lần này, thì việc "số lượng của phần khác nhau" có mức độ trọng yếu cao hơn so với "độ dài của phần giống nhau", nên tôi nghĩ là có vẻ mình có thể sử dụng cái 「levenshtein」.
2.Ý nghĩa của ký tự giống nhau → Cái này thì tôi chưa có tìm hiểu, nhưng mà, để phân tích ý nghĩa của ký tự, thì tôi nghĩ là sẽ cần các kỹ thuật liên quan đến việc học hỏi của máy tính, hay phân tích hình thái học (Morphological analysis). Ngoài ra, lúc nãy tôi cũng đã viết rồi, về mặt yêu cầu thì phía "1. array của ký tự giống nhau" đang thích hợp hơn, nên chúng ta không cần điều tra theo phương diện này cũng được.
Require
TODO
TBD
Team
Link