Phân loại email trong R


8

Tôi đang làm việc trong một dự án ở R nơi tôi có khoảng 1200 email từ một công ty, hầu hết trong số đó được gắn nhãn lớp 1 hoặc lớp , là các loại yêu cầu. Khoảng 1000 email được dán nhãn lớp và 200 email được gắn nhãn lớp . Mục tiêu của tôi là sử dụng học tập có giám sát để xây dựng một mô hình sẽ phân loại email mới.1212

Nhưng, sau rất nhiều quá trình xử lý trước (phân tích cú pháp, xóa từ khóa, v.v.) và thử các thuật toán điển hình (SVM, cây quyết định, v.v.) trên ma trận thuật ngữ tài liệu, ma trận nhầm lẫn của tôi chứa nhiều dấu tích sai và phủ định sai, nhưng chỉ có một vài phủ định sai với SVM.

Tôi đang tự hỏi làm thế nào tôi có thể cải thiện kết quả của tôi? Tôi có cần sử dụng tính năng oversampling hoặc bi-gram không? Tôi đoán vấn đề là các chủ đề của hai loại thực sự gần gũi.


Bạn có thể cung cấp thêm một số thông tin? Bạn đang sử dụng loại SVM nào như trong, chức năng kernel nào và làm thế nào để bạn tối ưu hóa các tham số? Bạn có thể cho chúng tôi thêm thông tin về các phương pháp tiền xử lý mà bạn đã sử dụng không? Ngoài ra, tôi nhận thấy bạn nói rằng có hầu hết hai lớp ... bạn xử lý các lớp khác như thế nào?
Kyle.

"Hai loại thực sự gần gũi" - bạn có thể đặt tên cho chúng (hoặc các loại tương tự) không?
lukeA

Bạn có thể cung cấp nhãn lớp thực tế và một văn bản minh họa cho mỗi lớp không? Khoa học là chi tiết ...
Brandon Loudermilk

Câu trả lời:


2

(Tất cả các email là hoặc bằng tiếng Pháp hoặc bằng tiếng Anh)

Phương pháp tiền xử lý:

  • Hợp nhất "Tóm tắt" và "Nội dung" là phần đầu của email và nội dung
  • Xóa tất cả địa chỉ email
  • Xóa tất cả "Từ: Ai đó Đến: ai đó ... chủ đề: một cái gì đó"
  • Xóa tất cả hình ảnh có trong email
  • Đặt email theo lớp của họ
  • Thay thế tất cả các giọng Pháp bằng không có dấu như é -> e; ê -> e ...
  • Đặt văn bản để hạ thấp
  • xóa dấu câu
  • xóa số
  • dải trắng
  • xóa một số tên trong danh sách và một số từ cụ thể
  • loại bỏ các từ dừng trong tiếng Pháp và tiếng Anh
  • tài liệu gốc bằng tiếng Pháp và tiếng Anh
  • Xóa thời hạn

-> Sau đó, ma trận thuật ngữ tài liệu, với TF-IDF

Hai lớp là từ một hỗ trợ kỹ thuật, hai loại "phức tạp" và "dễ dàng", "phức tạp" là các chủ đề xoay quanh vấn đề tài chính (về lý thuyết), "đơn giản" với phần mềm (về lý thuyết) nhưng trong thực tế, chúng có rất nhiều từ điểm chung. Và các lớp khác tôi không tính đến chúng bây giờ tôi chỉ tập trung vào hai lớp

Trên thực tế, loại thuật toán phân loại tôi đã sử dụng không liên quan lắm vì tôi đã thử với 5 thuật toán và không có kết quả nào tốt

Ví dụ (ma trận nhầm lẫn) Cây quyết định:

  Decision tree:           

trước:

335 | 10
59 | 12

SVM:

331 | 1
83 | 1

Knn (n=10):

330 | 2

83 | 1

Naive Bayes:

1 | 83

12 | 320


Bạn có thể có lý do chính đáng cho việc này, nhưng tại sao bạn lại xóa các trường như tệp đính kèm và người gửi? Điều này có thể giữ thông tin. Tôi đã tìm thấy trong một thiết lập hơi giống nhau, rằng một số người nhất định dễ bị các tài liệu của tác giả thuộc một loại nhất định.
S van Balen

Là ma trận nhầm lẫn cho NB chính xác? (Tôi giả sử trên cùng bên trái là thực tế và dự đoán loại 1)
S van Balen

0

Vì bạn chỉ giao dịch với 2 lớp, bạn có thể tạo commonality.cloud()từ cả hai lớp (Tôi sử dụng chức năng này trên R, tôi không biết về các ngôn ngữ khác).

Nó sẽ hiển thị các từ phổ biến trong class1class2. Những từ này có thể không giúp thuật toán phân biệt các lớp để bạn có thể loại bỏ những từ này và thực hiện một số bài kiểm tra.


0

Bạn có thể muốn thử một trình phân loại Bayes thay vì SVM hoặc Cây quyết định. Vấn đề của bạn là khái quát hóa vấn đề về bộ lọc thư rác, tức là phân loại email thành 'Spam' (lớp 1) hoặc 'Không phải thư rác' (lớp 2). Hầu hết các bộ lọc Spam sử dụng phân loại Bayes thay vì phương pháp học có giám sát phổ biến hơn.


0

Bạn có thể nghiên cứu các tính năng: Tôi nhận thấy bạn đã loại bỏ các con số. Có thể là bạn đã làm điều đó bởi vì chúng không có khả năng va chạm, nhưng bạn cũng có thể giải quyết điều đó bằng cách giới thiệu các lớp từ (@ number @ hoặc @ big_number @, v.v.).

Bạn cũng có thể thử sử dụng các lớp từ trên các nhóm từ khác. Nếu nó hoạt động có thể chỉ ra rằng thiết lập của bạn bị thưa thớt (điều này sẽ không làm tôi ngạc nhiên). Chẳng hạn, bạn có thể sử dụng bộ chọn tính năng cho mục đích đó bằng cách xếp hạng kích thước của bạn theo mức tăng thông tin.

Các cách nâng cao hơn để chống lại sự thưa thớt bao gồm: thuật toán của Rocchio hoặc word2vec.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.