Sẽ không dễ dàng để dọn rác trong e-mail vì phần mềm e-mail của khách hàng và con người không gắn thẻ các phần e-mail một cách thuận tiện, nhưng để làm sạch các tin nhắn tôi sẽ bắt đầu bằng cách:
Phản hồi có thể có văn bản trộn với dấu ngoặc kép, trước, sau hoặc trộn với chuỗi khối. Trong một số trường hợp, như bạn đã đề cập, một số yếu tố có thể được làm sạch trực tiếp:
- tiêu đề ẩn;
- chuyển tiếp và trả lời tiêu đề từ các khách hàng email lớn
- blockquote từ các khách hàng email lớn
Không nhiều, nhưng là một sự khởi đầu.
Bạn có thể cải thiện điều này bằng cách xâu chuỗi các thông điệp theo luồng và sử dụng thuật toán diff theo cách tương tự như git làm cho mã nguồn
Tin nhắn e-mail có các tiêu đề ẩn có thể được sử dụng để xâu chuỗi các câu trả lời và chuyển tiếp với nhau. Sử dụng đó bạn có thể gắn một biểu đồ hướng dẫn của các cuộc hội thoại. Tôi không biết điều này đáng tin cậy đến mức nào, nhưng tôi nghi ngờ điều đó sẽ nhóm rất nhiều cuộc trò chuyện. Nhiều máy chủ danh sách có điều hướng "luồng" hoạt động tốt và tôi nghi ngờ rằng họ sẽ xâu chuỗi các tin nhắn theo cách đó.
Bạn có thể cải thiện điều này bằng cách so sánh trực tiếp các email từ cùng một nguồn để cô lập chữ ký
Chữ ký tự động có mặt trong hầu hết các e-mail từ cùng một nguồn. Không chỉ vậy, mà các khẩu hiệu và trang trí khác thường được sử dụng bởi một tác giả. Bằng cách so sánh một số e-mail từ cùng một người, những trang trí đó có thể được tìm thấy và làm mờ đi không đáng kể đối với nội dung. Trực giác của tôi nói với tôi rằng sẽ cần một số điều chỉnh để cô lập trang trí khi bắt đầu và kết thúc e-mail và tránh các biểu thức phổ biến trong văn bản được sử dụng bởi tác giả.
Bạn có thể cải thiện điều này bằng cách so sánh trực tiếp e-mail với cơ sở dữ liệu e-mail để tìm các văn bản tương tự
Điều này sẽ khó phát triển, nhưng có thể chứng minh là một công cụ kiểm toán tuyệt vời.
Trực giác của tôi là bằng cách viết một tin nhắn, tìm các tin nhắn có cùng từ và so sánh chúng, sẽ có thể sử dụng một cơ sở dữ liệu tìm kiếm toàn văn bản PostgreQuery để cung cấp hiệu suất hợp lý cho điều đó.
[chunk 1][chunk 3][chunk 5][chunk 7]
[chunk 2][chunk 4][chunk 6]
chunk 1: 0-50; chunk 2: 25-75; chunk 3: 50-100 ...
Ý tưởng là liệt kê các từ trong một đoạn, xác định những từ ít được sử dụng và truy vấn cơ sở dữ liệu các e-mail có chúng. Sau đó so sánh các e-mail mặc dù thuật toán diff để xem phần nào bằng nhau.
Điều này sẽ cho phép vượt ra ngoài chuỗi trực tiếp bởi id tin nhắn. Ví dụ, nó sẽ nhận ra bản sao và dán.
Tuy nhiên một số điều chỉnh sẽ là cần thiết ở đây
Bạn có thể cải thiện kết hợp bằng các kỹ thuật khai thác văn bản
Khai thác văn bản tiêu chuẩn (như được mô tả trong nhiều luận án), bao gồm một bước làm sạch trong đó văn bản được đơn giản hóa. Các kết nối được xóa khỏi văn bản (a, is, và, hoặc, v.v.) và các từ được chuyển đổi như (ví dụ: đã thay đổi, có thể thay đổi để thay đổi). Văn bản chuyển đổi này không thể đọc được, nhưng đối với văn bản phù hợp là tốt.
Việc dọn dẹp như thế sẽ tách biệt các vấn đề khớp thường xảy ra khi người đó định dạng lại email hoặc e-mail được chuyển đổi từ html từ / sang văn bản thuần túy. Điều này cũng sẽ ngăn việc sửa lỗi chính tả đơn giản để phá vỡ chuỗi.
Phần kết luận
Đây là một vấn đề tuyệt vời. Đề nghị của tôi hoàn toàn dựa trên trực giác, chưa được kiểm tra và suy đoán tốt nhất. Đó là con đường ban đầu mà tôi sẽ bắt đầu nghiên cứu nếu gặp vấn đề như thế này. Tôi tin rằng sẽ khó phát triển, nhưng có thể là một công cụ kiểm toán và truyền thông mạnh mẽ.
Một giải pháp như thế này có thể sẽ làm cho một kho lưu trữ e-mail tốt. Bằng cách xâu chuỗi các tin nhắn và chỉ lưu trữ các khác biệt và khối, bạn có thể sẽ có một yếu tố nén lớn hơn bất cứ thứ gì mà một zip có thể làm.
Ngoài ra, đây sẽ là một công cụ kiểm toán mạnh mẽ. Nó sẽ trở nên rõ ràng khi một người giả mạo một blockquote, một câu trả lời hoặc một chuyển tiếp. Blockquote đã sửa đổi sẽ được xác định là văn bản gốc và sẽ không được làm sạch bằng giải pháp.