Các dịch vụ phân loại tình cảm trực tuyến khác nhau hiện có sẵn. Những người khổng lồ như Google, Amazon hoặc Microsoft cung cấp các giải pháp đám mây của họ để xử lý ngôn ngữ tự nhiên. Nhưng nếu bạn không có kế hoạch trả 1-2 đô la cho 1000 cuộc gọi API (tăng giá khi đánh giá có hơn 1000 ký tự) và/hoặc sẵn sàng chuẩn bị dịch vụ hoặc chương trình phân loại địa phương của bạn, thì bạn có thể sử dụng các phân loại ngoại tuyến. Có một số phân loại .NET cho trường hợp ngoại tuyến sẽ được thảo luận trong bài đăng này. Các chủ đề sau đây sẽ được đề cập ở đây:

-[Phân tích tình cảm là gì?] (#What-is-Sentiment-Phân tích)

Phân loại tình cảm (phân tích) là gì?

Phân loại tình cảm là một cách tiếp cận mạnh mẽ để hiểu rõ hơn về cảm giác của khách hàng về (các) sản phẩm của bạn hoặc dịch vụ. Nó cũng có thể giúp bạn trong nhiệm vụ giám sát thương hiệu. Phân loại tình cảm cho phép bạn phân loại mọi người cảm xúc và phản hồi mà họ đăng trên phương tiện truyền thông xã hội, blog hoặc bài viết. Có một số phân loại phổ biến được sử dụng để phân loại tình cảm.

  • Nhị phân:
    • tiêu cực;
    • tích cực;
  • 3 lớp:
    • tiêu cực;
    • trung lập;
    • tích cực;
  • 5 lớp
    • Từ 1 đến 5 sao Trong tất cả các trường hợp, tình cảm tiêu cực là quan trọng nhất để phân tích. Vì vậy, nhiệm vụ chính mà người phân loại tình cảm nên giải quyết có vẻ giống như văn bản đó là tiêu cực? Và nó có bao nhiêu tiêu cực?

Số liệu

Độ chính xác là một số liệu đơn giản và rõ ràng. Nó có những bất lợi nổi tiếng khi các lớp học bị mất cân bằng. Tuy nhiên, nó có thể được sử dụng trong trường hợp của chúng tôi về các lớp cân bằng. Nó cũng được sử dụng rộng rãi trong văn học khoa học. Các trình phân loại được liệt kê dưới đây chỉ có thể được so sánh trong các nhiệm vụ phân loại nhị phân vì một trong số chúng không có lớp trung lập.

Phân loại tình cảm ngoại tuyến (C#)

Có nhiều thư viện C# có thể được tìm thấy thông qua Google, Nuget E.T.C. Nhưng chúng nên được kiểm tra thủ công vì nhiều người trong số chúng thực sự chỉ là SDK cho API đám mây. Các gói tiếp theo được thu thập sau khi xác minh thủ công các thư viện phân loại tình cảm C#:

  • GroupDocs.Classification;
  • Vadersharp;
  • Stanfordnlp;
  • Sentimentanalyzer;
  • Wiki -wiled; Tất cả đều là thư viện phân loại tình cảm ngoại tuyến C#. Hãy để mô tả chúng chi tiết hơn.

GroupDocs.Classification

giấy phép: Tệp giấy phép

Sự phức tạp của cài đặt: Dễ dàng ** Độ chính xác:**93.3 (đánh giá) / 96.3 (được cấp phép) {.WP-block-moDing} GroupDocs.Classification là một thư viện có công cụ tích hợp riêng để phân loại văn bản và tài liệu. Các mô hình cũng là một phần của gói A Nuget. Cài đặt rất đơn giản: Bạn chỉ cần cài đặt gói Nuget. Có một sự khác biệt giữa các phiên bản đánh giá và được cấp phép. Đối với phiên bản đánh giá, bạn nên chia văn bản thành các khối 100 ký tự và sau đó trung bình kết quả. GroupDocs.Classification cho thấy độ chính xác 93,3% trong chế độ đánh giá và 96,3% khi giấy phép được áp dụng.

vadersharp

giấy phép: MIT

Sự phức tạp của cài đặt: Dễ dàng Độ chính xác: 77,6% {.wp-block-heading} Vadersharp là một giải pháp phổ biến cho phân loại tình cảm C# (phân tích). Nó hoạt động rất nhanh và xử lý tin nhắn mỗi giây trên PC Home thông thường, không phải về máy chủ. Cài đặt cũng đơn giản (chỉ cần cài đặt Nuget gói). Tuy nhiên, cũng có một bất lợi quan trọng: độ chính xác không hoàn hảo bằng thời gian xử lý. Nó đạt được độ chính xác 78% trên bộ dữ liệu thử nghiệm.

StanfordNLP

giấy phép: GPL V2

Sự phức tạp của cài đặt: Khó. Độ chính xác: 70% {. Stanford NLP là thư viện C# dựa trên thư viện Java tương ứng để xử lý ngôn ngữ tự nhiên. Có một số khó khăn với việc cài đặt. Cần phải cài đặt phiên bản Java của Stanford NLP và sao chép các mô hình vào thư mục hiện tại của chương trình nếu cần thiết. Ngoài ra còn có vấn đề với khả năng tương thích .NET Core 3.0. Độ chính xác và thời gian xử lý không ổn định cho thư viện này và dường như phụ thuộc vào độ dài văn bản. Đối với các văn bản ngắn từ bộ dữ liệu SST-2, nó đạt được độ chính xác 80,2% với vài giây cho mỗi thời gian xử lý ví dụ. Đối với các văn bản dài hơn từ miền chéo một, độ chính xác giảm xuống còn 70%. và thời gian xử lý tăng lên 1 phút trở lên cho mỗi văn bản.

sentimentanalyzer

giấy phép: MIT

Sự phức tạp của cài đặt: Trung bình Độ chính xác: 79,1% {.wp-block-heading} Thư viện này là ml.net dựa trên. Trong quá trình cài đặt, có thể có vấn đề liên quan đến công việc của ML.NET. Đây là một thư viện không an toàn, nó yêu cầu cấu hình (x86 / x64) một cách rõ ràng và bạn cũng có thể cần cài đặt một số phụ thuộc. Sentimentanalyzer Trả về lớp tích cực hoặc tiêu cực và điểm tương ứng. Đó là lý do tại sao nhiệm vụ phân loại nhị phân được sử dụng để so sánh đó. Kết quả tốt nhất có thể đạt được với ngưỡng được lựa chọn chính xác. Độ chính xác đạt 79% sau khi tối ưu hóa giá trị ngưỡng.

wikiled

Giấy phép: Giấy phép Apache 2.0

Sự phức tạp của cài đặt: đơn giản Độ chính xác: Không {.wp-block-me-} Một thư viện phân loại tình cảm C# khác là wikiled. Thư viện này nên được đào tạo trước khi thử nghiệm để tạo ra kết quả đầy đủ. Vì vậy, độ chính xác có thể được tính toán cho thư viện.

Bộ dữ liệu

Chúng tôi đã sử dụng một bộ dữ liệu tên miền chéo cho mục đích thử nghiệm. GroupDocs.Classification chưa được đào tạo về nó. Phần còn lại của các thư viện rất có thể cũng không sử dụng nó trong đào tạo. Chúng tôi sẽ gửi kết quả cho bất kỳ bên quan tâm bằng e-mail. Vui lòng tạo một vấn đề trong repo GitHub tương ứng. 14: Stanford Sentiment Treebank (Socher et al. 2013. Recursive deep models for semantic compositionality over a sentiment treebank. In proc. EMNLP).

Kết quả

Bảng 1 cho thấy độ chính xác (%) cho các phân loại đã thử nghiệm. Bảng 1.

SST-2Miền chéo
GroupDocs.Classification93.3 (được cấp phép: 94.7)93.3 (được cấp phép: 96.3)
Sentimentanalyzer58,579.1
Stanford NLP80.7~ 70
Vadersharp68.777.6
Hầu hết chúng hiển thị kết quả khác nhau cho 2 bộ dữ liệu đó. Có vẻ như nguyên nhân cho hành vi như vậy là các văn bản SST-2 ngắn hơn các văn bản từ miền chéo. Ngoài ra còn có một số treo trong quá trình thử nghiệm Stanford NLP trên Crossdomain cho văn bản dài hơn 500 ký tự. Đó là lý do tại sao độ chính xác từ miền chéo được đánh dấu bằng cách ~ ~.

Phân tích các lỗi phổ biến

Các phân loại sai sau đây là điển hình: _ Hồi cũng như ngôi sao của nó, thái độ và sự lãng quên của nó. _ - khó hiểu ý nghĩa của người đó. _ Một người đã hành động tốt và có ý định tốt. _ Điểm Moot Point _ - Các văn bản quá ngắn. Những vấn đề như vậy xảy ra trong tất cả các sản phẩm phân loại tình cảm (phân tích). Ví dụ, châm biếm, nó là chủ quan. Do đó, nó khó có thể đào tạo một mô hình châm biếm và khó phân loại nó một cách chính xác. Nhưng hãy để hy vọng rằng những điểm yếu này sẽ bị loại bỏ trong tương lai gần.

Phần kết luận

Mặc dù tất cả các thư viện trên đều có thể tính toán để phân loại tình cảm trong C#, GroupDocs.Classification là chính xác nhất. Vì vậy, nó là người tốt nhất để tìm kiếm những tình cảm tiêu cực hoặc tích cực trong các đề cập và/hoặc đánh giá lớn. Tóm lại, cần lưu ý rằng cũng có một trường hợp quan trọng của phân loại âm/trung tính/tích cực. Nó cũng sẽ được xem xét trong tương lai.

Mã số

Chúng tôi cung cấp một mã được sử dụng cho bài viết blog này: {{LINE_90}}