Kết hợp Python và PowerBI: Phân Tích Cảm Xúc Tiếng Việt
6/2/2025
Kết hợp Python và PowerBI: Phân Tích Cảm Xúc Tiếng Việt
Bạn đã bao giờ nghĩ đến việc biến những bình luận tiếng Việt của khách hàng thành những insight giá trị ngay trên dashboard PowerBI chưa? Hôm nay, mình sẽ hướng dẫn cách kết hợp Python với Power BI, sử dụng mô hình PhoBERT để phân tích cảm xúc một cách chuyên sâu. Từ thiết lập môi trường đến tạo biểu đồ đẹp mắt, mình sẽ dẫn bạn qua từng bước để tạo ra một báo cáo xịn nhất có thể!
1. Tại sao nên kết hợp Python với Power BI?
Không thể phủ nhận PowerBI là một công cụ tuyệt vời để trực quan hóa dữ liệu, nhưng khi kết hợp với Python, sức mạnh của phần mềm càng được gia tăng. Đặc biệt với các tác vụ xử lý ngôn ngữ tự nhiên (NLP), Python mang lại những lợi ích khó cưỡng:
Quy trình liền mạch: Tất cả từ dữ liệu thô đến insight đều nằm trong Power BI, không cần chuyển qua lại giữa các công cụ.
Tự động cập nhật: Với cấu hình đúng, Power BI có thể chạy lại script Python mỗi khi dữ liệu mới, giữ dashboard luôn “tươi”.
Thư viện mạnh mẽ: Bạn có thể dùng các thư viện như transformers (cho PhoBERT) hay pandas ngay trong Power BI.
Tùy biến tối đa: Python giúp bạn xử lý những logic phức tạp mà M hay DAX có thể không làm được.
Hôm nay, chúng ta sẽ cùng phân tích cảm xúc từ bình luận tiếng Việt, thêm nhãn Tích cực, Tiêu cực, Trung tính kèm xác suất, và trực quan hóa chúng.
2. Bài toán phân tích cảm xúc bình luận tiếng Việt
Hãy tưởng tượng bạn có một bảng dữ liệu trong Power BI chứa cột `VanBanBinhLuan` với các bình luận tiếng Việt. Mục tiêu là:
Đầu ra: Thêm các cột mới với nhãn cảm xúc (Tích cực/Tiêu cực/Trung tính) và xác suất từ PhoBERT.
Trực quan hóa: Tạo biểu đồ phân bổ cảm xúc, bảng chi tiết, và một đám mây từ (word cloud) để khám phá từ khóa nổi bật.
Bảng dữ liệu demo ban đầu
Bảng dữ liệu với nhãn cảm xúc
Bây giờ, hãy đi qua từng bước để biến dữ liệu này thành một dashboard ý nghĩa!
3. Quy trình từ thiết lập đến trực quan hóa
Bước 1: Chuẩn bị môi trường Python
Trước tiên, chúng ta cần thiết lập Python để Power BI có thể chạy script:
Cài Anaconda: Tải từ https://www.anaconda.com/download để quản lý môi trường dễ dàng.
Tạo môi trường ảo (mở Anadonda Prompt):
# 'dataset' holds the input data for this script
import pandas as pd
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
import os
# cài đặt cấu hình model
MODEL_PATH_OR_NAME = "wonrax/phobert-base-vietnamese-sentiment"
phobert_model_loaded = False
error_msg_phobert = ""
tokenizer = None # Khởi tạo tokenizer và model ở ngoài để có thể truy cập trong hàm
conda create -n pbi_nlp_env python
conda activate pbi_nlp_envCài thư viện:
pip install pandas torch transformers matplotlib torchKết nối Power BI: Trong Power BI Desktop, vào File > Options and settings > Options > Python scripting, ở phần Detected Python home directories chọn Other.
Kết nối Python với PowerBI
Giờ đây, PowerBI đã có thể khai thác sức mạnh của Python trong phân tích.
Bước 2: Phân tích cảm xúc với Python trong Power Query
Giờ là lúc dùng PhoBERT để phân tích cảm xúc. Chúng ta sẽ làm việc trong Power Query Editor:
Nạp dữ liệu: Kết nối Power BI với nguồn dữ liệu (ở đây mình sẽ sử dụng Excel) chứa cột `VanBanBinhLuan`.
Mở Power Query: Vào Transform Data để vào Power Query Editor.
Giao diện Power Query Editor với dữ liệu demo
Chạy script Python: Chọn bảng chứa cột `VanBanBinhLuan`, vào tab Transform, nhấp Run Python script. Power BI sẽ truyền bảng dữ liệu thành một Pandas DataFrame tên mặc định là `dataset`.
Dán đoạn code sau vào cửa sổ script (hoặc nếu bạn đã quen với lập trình thì có thể chỉnh sửa theo nhu cầu của mình). Mã này tải PhoBERT, dự đoán cảm xúc, và thêm các cột như `NhanCamXuc_PhoBERT`, `XacSuat_TieuCuc`, `XacSuat_TrungTinh`, `XacSuat_TichCuc`:
# 'dataset' holds the input data for this script
import pandas as pd
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
import os
# cài đặt cấu hình model
MODEL_PATH_OR_NAME = "wonrax/phobert-base-vietnamese-sentiment"
phobert_model_loaded = False
error_msg_phobert = ""
tokenizer = None # Khởi tạo tokenizer và model ở ngoài để có thể truy cập trong hàm
Kết quả: Nhấn OK, bạn sẽ thấy một bảng mới. Lọc đối tượng dataset, mở rộng bảng, thực hiện các thao tác biến đổi dữ liệu thông thường và sẽ có kết quả giống như bảng kết quả ở trên.
Kết quả sau khi áp dụng Python script
Với dữ liệu đã được xử lý giống như kết quả trên, giờ bạn có thể sử dụng các biểu đồ cần thiết để trực quan hóa dữ liệu.
Bước 3: Thêm điểm nhấn với Word Cloud
Để dashboard thêm ấn tượng, hãy tạo một wordcloud (hiển thị các từ với kích thước sẽ tương đương với tần suất xuất hiện của các từ) để làm nổi bật các từ khóa từ dữ liệu giả lập:
Tạo Python Visual: Trong chế độ Report, chọn Python Visual từ ngăn Visualizations, kéo `VanBanBinhLuan` vào Values.
(Lưu ý: hãy chắc chắn bạn đã cài thư viện wordcloud với pip install wordcloud trong môi trường ảo)
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS
import pandas as pd
if not dataset.empty and 'VanBanBinhLuan' in dataset.columns:
text_corpus = " ".join(review for review in dataset.VanBanBinhLuan.astype(str) if pd.notna(review))
if text_corpus.strip():
vietnamese_stopwords = set(STOPWORDS)
vietnamese_stopwords.update(["là", "của", "và", "rằng", "thì", "mà"])
wordcloud_image = WordCloud(
font_path=None,
Kết quả: Nhấn biểu tượng Run script, bạn sẽ thấy một đám mây từ hiển thị các từ khóa nổi bật.
Wordcloud với dữ liệu demo
Kết luận
Bằng cách kết hợp Python và Power BI, bạn có thể biến những bình luận tiếng Việt thành những insight sâu sắc với PhoBERT, từ nhãn cảm xúc đến đám mây từ, tất cả trong một quy trình liền mạch. Dữ liệu giả lập ở trên chỉ là khởi đầu – hãy thử với dữ liệu thật của bạn và khám phá những câu chuyện ẩn sau bình luận của khách hàng!
Tài liệu tham khảo
- SharePoint Europe, "Boost your data analytics: Integrate Python scripts in Power BI desktop," SharePoint Europe. https://www.sharepointeurope.com/boost-data-analytics-integrate-python-scripts-in-power-bi-desktop/
- Microsoft, "Create Power BI visuals using Python in Power BI Desktop," Microsoft Learn. https://learn.microsoft.com/en-us/power-bi/connect-data/desktop-python-visuals
- Fynd Academy, "Disadvantages of Power BI: A comprehensive guide," Fynd Academy Blog. https://www.fynd.academy/blog/disadvantages-of-power-bi
- Keelda, "Getting started with Python in Power BI," Keelda Blog. https://keelda.com/blog/getting-started-with-python-in-power-bi/
- Real Python, "Using Python with Power BI for data analytics," Real Python. . https://realpython.com/power-bi-python/
- Microsoft, "Use Python in Power Query Editor," Microsoft Learn. https://learn.microsoft.com/en-us/power-bi/connect-data/desktop-python-in-query-editor
- Q.-T. Nguyen, V.-H. Nguyen, and N.-H. Tran, "Sentiment Analysis of Vietnamese Text using PhoBERT and Ensemble Learning," Int. J. Pattern Recognit. Artif. Intell., vol. 37, no. 08, Art. no. 23500173, 2023.