Skip to main content

Posts

Recent posts

Bài toán bóng đen bóng trắng

Hộp đầu tiên có hai quả bóng màu trắng. Hộp thứ hai có hai quả bóng màu đen. Hộp thứ ba có một quả trắng và một quả đen. Các hộp được dán nhãn nhưng mọi nhãn đều sai.

Bạn được quyền mở một hộp, lấy ngẫu nhiên một quả bóng, xem màu và bỏ lại vào hộp mà không thể nhìn thấy màu quả bóng còn lại.

Vậy bạn cần mở hộp với nguyên tắc trên bao nhiêu lần để có thể dán đúng nhãn cho các hộp?

Ghi chú về bài toán Phân tích phản hồi (Analyze Sentiment)

Trong bài viết này, mình tập trung ghi chú lại nhưng điều cần thiết để cài đặt và chạy chương trình Machine Learning, áp dụng cho bài toán phân tích phản hồi (tiêu cực hay tích cực)
Thật ra có thư viện nổi tiếng khác là Tenflow, nhưng do mình không quen với Python nên mình kiếm thư viện khác thay thế, và đó là ML.NET
Bài toán Sentiment analysis có link hướng dẫn: https://docs.microsoft.com/vi-vn/dotnet/machine-learning/tutorials/sentiment-analysis
Bài toán này đặt ra là làm sao khi một người nhập 1 comment vào, mình sẽ phân tích được comment đó là tích cực hay tiêu cực.
Nếu theo cách suy nghĩ thông thường, thì mình có thể phân tích. Nhưng với máy tính, chúng ta sẽ áp dụng trí tuệ nhân tạo.
Các bước chuẩn bị:
Data: bao gồm dữ liệu học (training) và testing. Mặc định data testing là 10%Data thực tế cần kiểm chứngVisual Studio 2019Thư viện ML.NETQuá trình:
Chuẩn bị dữ liệu =>Tải dữ liệu => Xây dựng và huấn luyện (chọn thuật toán) => Đánh giá mô hình => Sử dụng mô hình để dự đoán =&…

Clustered và NonClustered trong SQL Server

Trong bài viết này, mình cố gắng tổng hợp các kiến thức về Clustered và NonClustered thật đơn giản nhất có thể.
Dưới đây là cú pháp tạo Clustered và NonClustered
Cú pháp:>-- Create a nonclustered index on a table or view CREATE INDEX i1 ON t1 (col1); -- Create a nonclustered index called IX_ProductVendor_VendorID -- on the Purchasing.ProductVendor table using the BusinessEntityID column. CREATE NONCLUSTERED INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor (BusinessEntityID) -- Create a clustered index on a table and use a 3-part name for the table CREATE CLUSTERED INDEX i1 ON d1.s1.t1 (col1); -- Syntax for SQL Server and Azure SQL Database -- Create a nonclustered index with a unique constraint -- on 3 columns and specify the sort order for each column CREATE UNIQUE INDEX i1 ON t1 (col1 DESC, col2 ASC, col3 DESC);Trong SQL Server có 2 loại index chính:
Clustered IndexChỉ có 1 Clustered Index trong 1 table.Không đòi hỏi unique.Đây là dạng INDEX mà dữ liệu của …

Sử dụng interface IDispose trong C#

Sử dụng hàm Dispose chủ yếu để giải phóng các tài nguyên không được kiểm soát. Ngoài ra, hàm này còn được dùng để xóa phần tử trong 1 tập hợp hoặc làm cờ để báo rằng hàm Dispose() đã được gọi.Gọi hàm DisposeGọi hàm Dispose thủ côngclass Program { static void Main(string[] args) { var disp = new DisposableDemoClass(); disp.Dispose(); } } class DisposableDemoClass : IDisposable { public void Dispose() { Console.WriteLine("Dispose called!"); } }Sử dụng using
class Program { static void Main(string[] args) { using (var disp = new DisposableDemoClass()) { } } } class DisposableDemoClass : IDisposable { public void Dispose() { Console.WriteLine("Dispose called!"); } }Hàm Dispose Ở hàm Dispose(), bạn gọi thêm phương thức GC.SuppressFinalize(this). SuppressFinalize chỉ nên được gọi bởi trong hàm Descontructor. Nó thông báo cho Bộ sưu tập rác (GC) rằng đối tượng this đã được dọn sạch hoàn toàn. public void Dispose() { // Dispose of unmanaged r…

Khai thác dữ liệu web với AngleSharp trong .NET Core

Web scrapping là gì?
Web scraping là một quá trình tự động thu thập thông tin từ website. Nói là cách đơn giản là lấy thông tin (html) từ 1 website cụ thể rồi trích xuất data cần thiết.
Ứng dụng là việc khai thác dữ liệu là bạn có thể tùy biến để cập nhật tin tức, giá cả cổ phiếu, vàng, ...
Hiện tại, có nhiều thư viện hỗ trợ như: AngleSharp và HtmlAgilityPack. Nhưng mình thấy HtmlAgilityPack chưa hỗ trợ .NET Core nên mình quyết định mài mò nghiên cứu AngleSharp. Cài đặt và sử dụng AngleSharpTạo project Console Application mới. Sau đó cài đặt AngleSharp
dotnet add package AngleSharp Khai báo namespace: using AngleSharp; using AngleSharp.Dom; using AngleSharp.Html.Dom; Để thực hiện việc lấy data, bạn không cần khai báo HttpModule. AngleSharp sẽ làm việc đó thay bạn Đoạn code dưới đây sẽ lấy data từ 1 trang web có địa chỉ url, ví dụ trang https://vnexpress.net var config = Configuration.Default.WithDefaultLoader(); var context = BrowsingContext.New(config); var document = awai…

Tìm hiểu về Cancellation trong C# và những điều bạn cần biết

Cancellation token là gì? Cơ chế Task trong C# là 1 tính năng mạnh mẽ trong lập trình Parallel và Concurrent. Vấn đề đặt ra nếu bạn thực hiện đa luồng, thì làm sao để hủy bỏ những những hàm bất đồng. Tại sao chúng ta cần kiểm soát Task? Một trong những lý do là yêu cầu về mặt logic hoặc thuật toán, bên cạnh đó là những luồng không thể kiểm soát được. Và khi hủy bỏ Task, bạn cần throw an exception thay vì trả về một kết quả null (hoặc rỗng). .NET cung cấp 2 class: CancellingTokenSource: là một đối tượng chịu trách nhiệm tạo Cancellation Token và gởi request đến tất cả các hàm chứa đối tượng đó.
CancellationToken: là một cấu trúc được dùng để theo dõi trạng thái của Token hiện tại
Ví dụ Dừng Task thủ công Phương thức CancellationTokenSource.Cancel() được dùng để hủy Task khi thỏa điều kiện logic Ví dụ dưới đây thực hiện việc tính tổng, khi thỏa điều kiện số ngẫu nhiên = 0 => dừng việc phát sinh số ngẫu nhiên và hiển thị thông báo lỗi.
s…