5

Hãy bắt đầu với một vấn đề đơn giản. Hãy nói rằng tôi có một câu 350 char và muốn đưa câu vào một nhóm "Tâm trạng tốt" hoặc một nhóm "Tâm trạng xấu".Các câu chuyển tiếp theo tâm trạng

Cách tốt nhất để thiết kế một thuật toán để lồng câu là gì?

Trả lời

5

Phân loại bằng tay một loạt câu theo tâm trạng. Sau đó, đưa chúng vào một trình phân loại Bayes ngây thơ. Sử dụng một cái gì đó như SpamBayes làm điểm khởi đầu.

+0

Nếu Bayes không hoạt động tốt, có thể thử http://en.wikipedia.org/wiki/C4.5_algorithm – ldog

1

Đề xuất đơn giản/ngây thơ sẽ là phân tách từng câu một thành từng từ hoặc sử dụng regex và quét các từ cụ thể từ cả danh sách "tích cực" (ví dụ: "like", "happy", "can "," do ", v.v.) và danh sách" phủ định "(" không thích "," buồn "," không thể "," không "), làm việc ra được phổ biến hơn trong mỗi câu và xô nó tương ứng .

Tùy thuộc vào yêu cầu của bạn và tập dữ liệu, điều này có thể phù hợp hoặc bạn có thể muốn điều tra thêm các kỹ thuật nâng cao như Bayesian filtering.

+1

Vấn đề với điều này là nếu tôi nói điều gì đó như "không tệ", nó sẽ hiển thị ở đó 2 từ "xấu" nhưng đó thực sự là một câu tích cực.Ngoài ra, bạn không thể làm số chẵn = dương vì "sai lầm khủng khiếp" là một câu xấu. – locoboy

+0

Tôi chưa bao giờ nói nó sẽ đối phó với tất cả các trường hợp một cách siêu thông minh - nó thực sự phụ thuộc vào tập dữ liệu của anh ta và thời gian anh ta muốn chi tiêu cho nó. Nó có thể không có giá trị dành thời gian và công sức vào một giải pháp "hoàn hảo". –

+0

Bạn có thể xây dựng dựa trên ý tưởng cơ bản bằng cách không chỉ xem xét các từ, mà là các từ, ba từ, v.v. Bằng cách xem xét tất cả n-tuples của từ cho tất cả các n, bạn có thể tài khoản cho tất cả các thông tin. Nếu không có một lượng lớn dữ liệu, điều này thường sẽ không cung cấp nhiều thông tin cho các giá trị cao của n (ngoài cặp hoặc ba, trong thực tế), vì vậy bạn sẽ muốn cắt bớt với giá trị thấp của n. Nhưng điều này là chính xác những gì được thực hiện trong một trình phân loại Bayes, do đó, tiết kiệm công sức và xây dựng trên những cái hiện có. –

0

Bạn có thể chơi xung quanh bằng công cụ Weka để đào tạo một số trình phân loại sẽ hoạt động tốt trong trường hợp của bạn. Tôi khuyên bạn nên thử thuật toán J48 mà tôi tin là triển khai thuật toán C4.5 để huấn luyện cây quyết định.

0

Hãy thử học máy từ một loạt các câu như vậy. Sử dụng một số tính năng, ví dụ như biểu tượng mặt cười làm chỉ báo tâm trạng. Quan sát chất lượng và thêm/sửa đổi bộ tính năng của bạn.

1

Tùy thuộc vào miền của câu và độ chính xác được yêu cầu, điều này có thể là một vấn đề cực kỳ khó khăn. Có rất nhiều tài liệu học thuật về phân tích tâm lý; một khởi đầu tốt có thể là here - một loại giấy ngắn và cổ điển.

Các bước tôi muốn đề nghị để có, sẽ dần dần dẫn đến một bộ phân loại tốt hơn và tốt hơn:

  1. tay phân loại một số tài liệu, và sử dụng chúng để đào tạo một thuật toán đã sẵn sàng. Tôi khuyên bạn nên sử dụng SVM (ví dụ: sử dụng LibSVM in WEKA hoặc SVMLight), nhưng vịnh Naive hoặc cây quyết định, như đã đề xuất ở trên, cũng có thể hoạt động.

  2. Mặt phân loại một số tài liệu khác và chuyển từ mô hình dựa trên unigram sang mô hình phức tạp hơn, ví dụ: bigram hoặc phần-of-speech dựa. Điều này có thể được thực hiện khá dễ dàng với TagHelper tools, sẽ lấy văn bản của bạn và chuyển chúng thành các tệp sẵn sàng WEKA bằng các kỹ thuật này. Điều này sẽ thêm một số ngữ cảnh vào tâm trạng của mỗi thuật ngữ (ví dụ "không" và "xấu" so với "không tệ").

  3. Cuối cùng, bạn có thể thêm các quy tắc và từ điển được tạo tùy chỉnh, điều này sẽ thêm kiến ​​thức về miền cụ thể vào thuật toán của bạn. Chúng có thể được biểu diễn dưới dạng các tính năng bổ sung cho cùng một công cụ phân loại hoặc như một bước phân loại bổ sung.

1

Điều này được gọi là Sentiment Analysis và bài viết trên Wikipedia có mô tả tốt về các kỹ thuật có sẵn. Một cách dễ dàng là sử dụng Google Prediction API, và đào tạo nó với một tập hợp các câu tình cảm tích cực, tiêu cực và trung lập.

Các vấn đề liên quan