Với sự bùng nổ của mạng xã hội, đặc biệt là Twitter với hơn 340 triệu người dùng, nền tảng này trở thành một không gian quan trọng cho việc thể hiện quan điểm cá nhân và thảo luận chính
TỔNG QUAN VỀ BẦU CỬ MỸ NĂM 2020 VÀ HỆ THỐNG THỜI GIAN THỰC
TỔNG QUAN VỀ BẦU CỬ MỸ
Hệ thống bầu cử tại Mỹ là một trong những hệ thống phức tạp và đa dạng nhất thế giới, đặc biệt trong các cuộc bầu cử tổng thống Quá trình bầu cử bao gồm nhiều giai đoạn và quy trình khác nhau, phản ánh sự phân quyền và tính đa dạng của đất nước Những điểm chính về hệ thống bầu cử Mỹ bao gồm sự phân chia quyền lực giữa các bang, quy định về cách thức bầu cử và vai trò của cử tri trong việc quyết định kết quả.
Bầu cử tổng thống Mỹ diễn ra bốn năm một lần vào thứ Ba sau ngày thứ Hai đầu tiên của tháng 11 Quá trình bầu cử bao gồm hai giai đoạn chính: bầu cử sơ bộ và bầu cử chính thức.
Các đảng phái chính trị tổ chức bầu cử sơ bộ và hội nghị để lựa chọn ứng cử viên Bầu cử sơ bộ có thể diễn ra dưới hình thức mở, cho phép mọi cử tri tham gia, hoặc kín, chỉ dành cho các đảng viên đã đăng ký.
Cuộc bầu cử tổng thống chính thức sẽ diễn ra vào tháng 11, nơi cử tri sẽ thực hiện quyền bỏ phiếu để chọn đại cử tri (Electors) đại diện cho bang của họ.
Cử tri đoàn (Electoral College)
Hình 1: Hai ứng viên trong cuộc bầu cử Hoa Kỳ năm 2020
Bầu cử tổng thống Mỹ có ảnh hưởng lớn đến toàn cầu nhờ vai trò chủ chốt của Mỹ trong kinh tế, chính trị và quân sự Kết quả bầu cử không chỉ định hình chính sách đối ngoại mà còn tác động trực tiếp đến quan hệ ngoại giao, các liên minh quân sự như NATO và các cam kết quốc tế trong hiệp định thương mại và môi trường Những thay đổi trong chính sách thương mại của Mỹ có thể gây ra biến động mạnh mẽ trong quan hệ thương mại quốc tế, ảnh hưởng đến thị trường tài chính toàn cầu, lãi suất, tỷ giá hối đoái và giá cổ phiếu.
Các tác nhân ảnh hưởng đến kết quả bầu cử:
Trước cuộc bầu cử tổng thống Mỹ, tin đồn thất thiệt trở thành công cụ tác động mạnh mẽ đến quan điểm cử tri Cụ thể, những công kích từ Trump về sức khỏe và sự minh mẫn của Joe Biden, cùng với các tuyên bố về việc Biden sử dụng thuốc không được công khai, đã lan truyền rộng rãi trên mạng xã hội và phương tiện truyền thông chính thống Những thông tin này tạo ra lo ngại và nghi ngờ trong cử tri, ảnh hưởng đến quyết định bầu cử và làm thay đổi bộ phận cử tri quan trọng.
Phát ngôn và xu hướng từ những người có tầm ảnh hưởng đã đóng vai trò quan trọng trong cuộc bầu cử tổng thống Mỹ năm 2020, khi các ngôi sao nổi tiếng và nhân vật công khai nhanh chóng lan truyền quan điểm và ảnh hưởng đến cử tri Những phát ngôn sắc bén, lời kêu gọi hỗ trợ hay chỉ trích các ứng viên, cùng với các xu hướng mạng xã hội như hashtag và chiến dịch truyền thông đặc biệt, đã thay đổi cảnh quan bầu cử Những nhân vật này không chỉ là nguồn cảm hứng mà còn là yếu tố quan trọng trong việc hình thành ý thức cộng đồng và ảnh hưởng đến sự lựa chọn của cử tri trong cuộc bầu cử này.
Cuộc tranh luận giữa Donald Trump và Joe Biden trong bầu cử tổng thống Mỹ năm 2020 đã có tác động sâu sắc đến quyết định của cử tri Các vấn đề như ứng phó với đại dịch COVID-19, biến đổi khí hậu và chính sách kinh tế đã được thảo luận sôi nổi Trump chỉ trích Biden về chính sách an ninh quốc gia và thương mại, trong khi Biden tấn công Trump về phản ứng với đại dịch và những phát ngôn gây tranh cãi Sự lựa chọn từ ngữ và cách phát biểu của các ứng viên đã ảnh hưởng lớn đến cách cử tri đánh giá họ Ngoài ra, phản ứng trên mạng xã hội và truyền thông sau mỗi cuộc tranh luận cũng đã tác động đến sự ủng hộ của cử tri, làm nổi bật ảnh hưởng của cuộc bầu cử Hoa Kỳ đến cục diện thế giới.
Chính sách môi trường của tổng thống Mỹ ảnh hưởng lớn đến các nỗ lực toàn cầu trong việc chống biến đổi khí hậu Quyết định tham gia hoặc rút lui khỏi các hiệp định khí hậu quốc tế như Hiệp định Paris có thể thay đổi động lực và cam kết toàn cầu trong việc giảm phát thải khí nhà kính Hơn nữa, chính sách năng lượng tái tạo và đầu tư vào công nghệ sạch của Mỹ có thể thúc đẩy hoặc cản trở sự phát triển của các ngành công nghiệp này trên toàn cầu.
Chiến lược của Mỹ có tác động đáng kể đến an ninh và ổn định khu vực, đặc biệt tại Trung Đông Chính sách của Mỹ đối với Iran, Israel và các quốc gia khác có thể làm thay đổi tình hình chính trị và xung đột trong khu vực này Tại châu Á - Thái Bình Dương, các quyết định của Mỹ cũng đóng vai trò quan trọng trong việc định hình mối quan hệ và an ninh khu vực.
Chiến lược của Mỹ đối với Trung Quốc, Triều Tiên và các quốc gia Đông Nam Á có thể ảnh hưởng đáng kể đến an ninh khu vực và mối quan hệ kinh tế tại Bình Dương.
Cuộc bầu cử tổng thống Mỹ không chỉ ảnh hưởng đến lãnh đạo trong nước mà còn tác động sâu rộng đến các vấn đề văn hóa và xã hội toàn cầu Chính sách nhân quyền và thúc đẩy dân chủ của Mỹ có thể làm thay đổi các phong trào xã hội và chính trị ở nhiều quốc gia Hơn nữa, chính sách di cư và nhập cư của Mỹ có khả năng gây ra biến động trong làn sóng di cư quốc tế, ảnh hưởng đến chính sách di cư của các quốc gia khác Do đó, các quốc gia và nhà lãnh đạo thế giới luôn theo dõi sát sao diễn biến và kết quả bầu cử Mỹ để điều chỉnh chính sách và chiến lược của mình cho phù hợp với tình hình mới.
TỔNG QUAN VỀ HỆ THỐNG THỜI GIAN THỰC
Hệ thống thời gian thực là một mạng lưới thiết bị hoặc máy tính được thiết kế để xử lý và phản hồi thông tin ngay lập tức khi dữ liệu được thu thập Đặc điểm nổi bật của hệ thống này là khả năng xử lý dữ liệu với độ trễ rất thấp, đáp ứng nhu cầu của các ứng dụng yêu cầu thời gian thực Dữ liệu được thu thập liên tục từ nhiều nguồn như cảm biến, thiết bị IoT, hệ thống giao dịch tài chính, và các ứng dụng trực tuyến Quá trình thu thập này cần đảm bảo kết nối và truyền dữ liệu nhanh chóng, đồng thời duy trì tính toàn vẹn và bảo mật của dữ liệu Sau khi thu thập, dữ liệu cần được xử lý ngay lập tức để biến thành thông tin có giá trị, bao gồm các bước làm sạch dữ liệu, tích hợp từ nhiều nguồn, và áp dụng thuật toán phân tích.
Hình 2: Giao diện ứng dụng giao thức ăn áp dụng hệ thống thời gian thực
Hệ thống thời gian thực sử dụng công nghệ phân tích luồng dữ liệu và cơ sở dữ liệu in-memory để xử lý dữ liệu nhanh chóng Trực quan hóa dữ liệu là yếu tố quan trọng, giúp biến kết quả phân tích thành hình ảnh dễ hiểu, hỗ trợ người dùng nắm bắt thông tin nhanh chóng thông qua biểu đồ, đồ thị, bản đồ và bảng điều khiển tương tác Chúng có nhiều ứng dụng trong tài chính, y tế, giao thông và truyền thông xã hội, giúp theo dõi giao dịch, giám sát bệnh nhân, quản lý lưu lượng giao thông và phân tích tương tác người dùng Mặc dù mang lại nhiều lợi ích, hệ thống thời gian thực cũng đối mặt với thách thức về độ trễ thấp, khả năng mở rộng và bảo mật dữ liệu Nhờ khả năng cung cấp thông tin nhanh chóng và chính xác, hệ thống này ngày càng được ứng dụng rộng rãi, hỗ trợ quyết định và tối ưu hóa quy trình hoạt động.
LÝ THUYẾT LIÊN QUAN
SENTIMENT ANALYSIS
Phân tích Tình cảm của MeaningCloud cung cấp giải pháp đa ngôn ngữ cho việc phân tích tình cảm chi tiết từ các nguồn văn bản khác nhau Quá trình này xác định liệu văn bản có chứa cảm xúc tích cực, tiêu cực hay trung lập Để đạt được điều này, cảm nhận cục bộ của từng câu được phân tích và mối quan hệ giữa chúng được đánh giá, từ đó cho ra giá trị tình cảm toàn cầu cho toàn bộ văn bản.
Phân tích Tình cảm không chỉ đánh giá cảm xúc ở cấp độ câu và toàn cầu, mà còn áp dụng các kỹ thuật xử lý ngôn ngữ tự nhiên tiên tiến để phát hiện cảm nhận liên quan đến thực thể và khái niệm trong văn bản Phương pháp này cung cấp tham chiếu trong câu và danh sách các yếu tố phát hiện được, với cảm nhận tổng hợp từ tất cả các lần xuất hiện, đồng thời xem xét các cấu trúc ngữ pháp mà chúng chứa đựng.
Phân tích Tình cảm cung cấp cho người dùng khả năng phát hiện cảm xúc của các thực thể và khái niệm do họ định nghĩa, làm cho dịch vụ trở thành công cụ linh hoạt cho nhiều tình huống Hơn nữa, nó còn xác định tính chủ quan hay khách quan của văn bản, cũng như phát hiện dấu hiệu mỉa mai, từ đó cung cấp thông tin bổ sung về độ tin cậy của cảm nhận từ phân tích tình cảm.
Phân tích cảm xúc, hay còn gọi là khai thác ý kiến, là một lĩnh vực trong Xử lý Ngôn ngữ Tự nhiên (NLP) nhằm xác định và phân tích dữ liệu cảm xúc từ văn bản đầu vào, bao gồm bình luận, đánh giá hoặc ý kiến về một chủ đề hoặc sản phẩm cụ thể Các loại cơ bản của phân tích cảm xúc bao gồm phân tích cảm xúc tích cực, tiêu cực và trung tính.
Phân tích cảm xúc chi tiết không chỉ đơn thuần đánh giá theo thang tích cực hay tiêu cực, mà còn cung cấp một cái nhìn cụ thể hơn Ví dụ, việc đánh giá một quán ăn có thể được thực hiện qua thang điểm từ 1 đến 5 sao, giúp người tiêu dùng có cái nhìn rõ ràng và chính xác hơn về chất lượng dịch vụ và món ăn tại đó.
Phát hiện cảm xúc là một lĩnh vực quan trọng nhằm nhận diện các loại cảm xúc như hạnh phúc, thất vọng, tức giận và buồn bã Thách thức lớn nhất trong quá trình này là khả năng xác định chính xác các cảm xúc này trong văn bản.
Phân tích cảm xúc dựa trên khía cạnh thường được áp dụng để nắm bắt các yếu tố cụ thể của sản phẩm hoặc dịch vụ Chẳng hạn, trong một đánh giá như "Tuổi thọ pin của chiếc điện thoại này tuyệt vời, nhưng màn hình không rõ ràng lắm", cảm xúc tích cực được thể hiện đối với tuổi thọ pin, trong khi đó, cảm xúc tiêu cực lại hướng về màn hình.
- Multilingual sentiment analysis: là một thách thức đặc biệt vì cùng một từ có thể truyền đạt các cảm xúc khác nhau trong các ngôn ngữ khác nhau
Phân tích ý định là bước quan trọng trong việc hiểu rõ mục đích của người dùng khi họ đưa ra một tuyên bố cụ thể Chẳng hạn, câu nói "Tôi cần một chiếc ô tô" có thể phản ánh ý định mua sắm của người đó.
Phân tích tình cảm là một nhiệm vụ phức tạp do tính mơ hồ của ngôn ngữ con người, với việc nhận diện sự mỉa mai đặc biệt khó khăn Độ chính xác trong phân tích ý kiến chủ yếu phụ thuộc vào độ phức tạp của nhiệm vụ và khả năng học hỏi từ khối lượng dữ liệu lớn của hệ thống.
1.3 Tầm quan trọng của Sentiment Analysis
Nghiên cứu hành vi người dùng thông qua phân tích cảm xúc mang lại các công cụ mạnh mẽ để hiểu rõ hơn về cảm xúc và hành vi của người dùng Bằng cách phân tích phản hồi trên mạng xã hội, email và các diễn đàn trực tuyến, các nhà nghiên cứu có thể phát hiện xu hướng và mẫu hành vi, từ đó rút ra những kết luận quý giá liên quan đến tâm lý học và xã hội học.
Phân tích cảm xúc đóng vai trò quan trọng trong việc cải thiện mô hình ngôn ngữ tự nhiên (NLP), giúp các nhà nghiên cứu phát triển và tinh chỉnh các mô hình này Việc hiểu và phân loại chính xác cảm xúc trong văn bản là một thách thức lớn, đòi hỏi ứng dụng các kỹ thuật tiên tiến như học sâu và mạng nơ-ron tích chập Những tiến bộ trong lĩnh vực phân tích cảm xúc không chỉ nâng cao khả năng của NLP mà còn thúc đẩy sự phát triển của trí tuệ nhân tạo (AI).
Phân tích cảm xúc là yếu tố quan trọng trong phát triển hệ thống hỗ trợ thông minh, giúp cải thiện tương tác giữa máy và người Việc trang bị cho các trợ lý ảo và chatbot khả năng hiểu và phản hồi cảm xúc của người dùng không chỉ nâng cao trải nghiệm người dùng mà còn mở ra những cơ hội mới trong nghiên cứu giao diện người-máy.
Phân tích tình cảm bằng NLP không chỉ nhằm hiểu ý kiến, mà còn để đạt được các mục tiêu cụ thể Đây là một công cụ hữu ích, nhưng giá trị của nó phụ thuộc vào cách thức sử dụng.
1.4 Một số ứng dụng và thuật toán để thực hiện phân tích Sentiment Analysis
Thông tin kinh doanh giúp doanh nghiệp nắm bắt cảm nhận của khách hàng về sản phẩm hoặc dịch vụ, từ đó hướng dẫn các cải tiến cần thiết, giải quyết mối quan ngại của khách hàng và nâng cao sự hài lòng tổng thể.
Nghiên cứu thị trường thông qua việc phân tích cảm xúc công khai trên mạng xã hội về sản phẩm, dịch vụ và thương hiệu giúp các công ty hiểu rõ xu hướng thị trường và đối thủ cạnh tranh.
TELEGRAF
Telegraf là phần mềm mã nguồn mở chuyên thu thập, xử lý và gửi dữ liệu từ nhiều nguồn khác nhau đến các hệ thống trong môi trường máy chủ, mạng và ứng dụng Được coi là thành phần quan trọng trong hệ thống giám sát và quản lý hiệu suất, Telegraf mang lại khả năng linh hoạt và mạnh mẽ trong việc tổng hợp dữ liệu, giúp gửi thông tin đến các nơi lưu trữ hoặc hệ thống phân tích hiệu quả.
Telegraf sử dụng các plugin để kết nối và thu thập dữ liệu từ nhiều nguồn khác nhau, sau đó xử lý dữ liệu trước khi gửi đến các hệ thống lưu trữ hoặc phân tích Điều này giúp tự động hóa và tối ưu hóa quá trình thu thập dữ liệu trong môi trường phân tán và đa dạng.
Telegraf là một công cụ giám sát và thu thập dữ liệu phổ biến nhờ vào khả năng tích hợp linh hoạt và dễ dàng cấu hình Nó được sử dụng rộng rãi trong các môi trường công nghiệp, doanh nghiệp và đám mây Bên cạnh đó, Telegraf còn cung cấp khả năng mở rộng, cho phép người dùng tùy chỉnh và phát triển các tính năng theo nhu cầu riêng của họ.
Telegraf sở hữu một kiến trúc linh hoạt và mạnh mẽ, tối ưu cho việc thu thập, xử lý và gửi dữ liệu từ nhiều nguồn khác nhau đến các hệ thống đa dạng một cách hiệu quả Các thành phần chính trong kiến trúc của Telegraf bao gồm:
Các plugin input trong Telegraf là thành phần quan trọng giúp thu thập dữ liệu từ nhiều nguồn khác nhau, bao gồm hệ điều hành, cơ sở dữ liệu, thiết bị mạng và ứng dụng Mỗi plugin input tương ứng với một nguồn dữ liệu cụ thể và được thiết kế để thu thập thông tin từ nguồn đó một cách hiệu quả.
Các plugin xử lý (processor plugins) nhận dữ liệu từ các plugin đầu vào (input plugins) để thực hiện các tác vụ như chuẩn hóa, biến đổi và lọc dữ liệu Chúng cũng có thể thêm lớp metadata và thực hiện nhiều nhiệm vụ xử lý khác trước khi gửi dữ liệu đến các hệ thống lưu trữ hoặc phân tích.
Plugins Aggregate trong Telegraf giúp tổng hợp và thống kê dữ liệu từ các metric hoặc sự kiện thu thập từ nhiều nguồn khác nhau Chúng cho phép tính toán các chỉ số tổng quan như tổng, trung bình, trung vị, mode, giá trị tối thiểu, tối đa và nhiều chỉ số thống kê khác từ dữ liệu đã được thu thập.
Telegraf sử dụng các output plugin để gửi dữ liệu đã được xử lý đến các hệ thống lưu trữ hoặc phân tích như InfluxDB, MYSQL, Kafka và các dịch vụ giám sát hoặc đám mây như Grafana, Kibana Mỗi output plugin đại diện cho một hệ thống cụ thể và có khả năng chuyển dữ liệu theo định dạng yêu cầu.
2.3 Ưu điểm và hạn chế của Telegraf
Telegraf có khả năng cấu hình dễ dàng nhờ vào cấu trúc linh hoạt và nhiều plugin đa dạng, cho phép người dùng tùy chỉnh theo nhu cầu cụ thể của họ.
Telegraf mang đến sự đa dạng với nhiều Input, Processor, Aggregate và Output Plugins, cho phép thu thập và xử lý dữ liệu từ nhiều nguồn khác nhau, đồng thời gửi dữ liệu đến nhiều hệ thống lưu trữ hoặc phân tích.
Telegraf được tối ưu hóa để đạt hiệu suất cao, cho phép xử lý khối lượng lớn dữ liệu mà vẫn đảm bảo độ ổn định và hiệu suất tối ưu.
Telegraf hỗ trợ đa nền tảng, cho phép người dùng chạy trên nhiều hệ điều hành và môi trường khác nhau, bao gồm Linux, Windows và macOS.
Telegraf mang lại khả năng mở rộng cao, cho phép người dùng phát triển các plugin tùy chỉnh để đáp ứng nhu cầu thu thập và xử lý dữ liệu một cách linh hoạt và hiệu quả.
Mặc dù Telegraf cung cấp nhiều plugin, nhưng không phải lúc nào cũng có plugin phù hợp với nhu cầu cụ thể của từng người dùng, đặc biệt là đối với các hệ thống hoặc nguồn dữ liệu đặc thù.
Telegraf có thể được cấu hình một cách dễ dàng, nhưng để thiết lập cấu hình chi tiết, người triển khai cần có kiến thức vững về hệ thống và mạng.
INFLUXDB
InfluxDB là hệ thống quản lý cơ sở dữ liệu (DBMS) tối ưu cho việc lưu trữ, truy vấn và xử lý dữ liệu theo thời gian Được phát triển bởi InfluxData và ra mắt lần đầu vào năm 2013, InfluxDB là cơ sở dữ liệu chuỗi thời gian (time-series database) mạnh mẽ và linh hoạt.
Hình 4: Logo InfluxDB Đặc điểm chính của InfluxDB:
InfluxDB là một hệ thống quản lý cơ sở dữ liệu (DBMS) chuyên dụng cho việc lưu trữ, truy vấn và xử lý dữ liệu theo thời gian Hệ thống này tập trung vào dữ liệu có cấu trúc theo thời gian, như metric từ hệ thống giám sát, dữ liệu từ thiết bị IoT, và log sự kiện Mỗi dòng dữ liệu trong InfluxDB được gắn với một thời điểm cụ thể, cho phép tổ chức dữ liệu dưới dạng chuỗi thời gian Đây là một cơ sở dữ liệu chuỗi thời gian mạnh mẽ và linh hoạt, được phát triển bởi InfluxData và ra mắt lần đầu vào năm 2013.
InfluxDB sử dụng kiến trúc phân tán linh hoạt, cho phép mở rộng dễ dàng và đảm bảo tính sẵn sàng cao Hệ thống hỗ trợ cả mở rộng chiều ngang và chiều dọc, giúp đáp ứng hiệu quả nhu cầu lưu trữ và xử lý dữ liệu lớn.
InfluxDB cung cấp một ngôn ngữ truy vấn mạnh mẽ dựa trên SQL, cho phép người dùng dễ dàng truy vấn và xử lý dữ liệu Người dùng có thể thực hiện các phép toán thống kê, biến đổi dữ liệu và tạo báo cáo một cách linh hoạt và hiệu quả.
InfluxDB hỗ trợ nhiều plugin đầu vào và đầu ra, giúp tích hợp hiệu quả với các công cụ giám sát như Telegraf, Prometheus, Grafana và nhiều hệ thống thu thập dữ liệu khác.
InfluxDB có kiến trúc linh hoạt và phân tán, tối ưu cho hiệu suất cao và khả năng mở rộng Các thành phần cơ bản trong kiến trúc của InfluxDB bao gồm
InfluxDB sử dụng kiến trúc phân tán để quản lý và lưu trữ dữ liệu, với một cluster bao gồm nhiều node (máy chủ) hoạt động đồng bộ nhằm đảm bảo tính nhất quán và hiệu suất cao trong việc xử lý dữ liệu Các node này có thể được phân bố trên nhiều máy chủ vật lý hoặc ảo, tạo ra một môi trường phân tán và dễ dàng mở rộng.
Mỗi node trong cluster của InfluxDB là một phiên bản hoạt động trên máy chủ độc lập, chịu trách nhiệm lưu trữ một phần dữ liệu và thực hiện các truy vấn cũng như xử lý dữ liệu Các node có khả năng giao tiếp và đồng bộ hóa dữ liệu với nhau, đảm bảo tính nhất quán trong hệ thống.
InfluxDB sử dụng một storage engine hiệu suất cao, được tối ưu hóa cho việc lưu trữ dữ liệu chuỗi thời gian, giúp xử lý các truy vấn và thao tác với dữ liệu một cách nhanh chóng và hiệu quả.
Mô hình dữ liệu của InfluxDB được xây dựng dựa trên các khái niệm cơ bản như "measurement", "tag", "field" và "timestamp" Dữ liệu được tổ chức thành chuỗi thời gian, trong đó mỗi dòng dữ liệu gắn liền với một thời điểm cụ thể cùng với các thuộc tính khác nhau.
InfluxDB sở hữu một query engine mạnh mẽ, cho phép thực hiện các truy vấn và phân tích dữ liệu hiệu quả Ngôn ngữ truy vấn đặc biệt của nó được tối ưu hóa để xử lý dữ liệu chuỗi thời gian, mang lại khả năng phân tích nhanh chóng và chính xác.
InfluxDB cung cấp các API và thư viện client cho nhiều ngôn ngữ lập trình, giúp người dùng dễ dàng tương tác và tích hợp với hệ thống InfluxDB.
InfluxDB có khả năng tích hợp với nhiều công cụ và dịch vụ khác nhau, bao gồm các công cụ giám sát và visualisation, giúp tạo ra một hệ sinh thái mạnh mẽ cho việc quản lý dữ liệu chuỗi thời gian.
3.3 Mô tả hoạt động của InfluxDB
Hình 6: Quá trình thu thập dữ liệu của InfluxDB
Trong InfluxDB, data ingestion là quá trình nhập dữ liệu vào hệ thống để lưu trữ và xử lý Quá trình này bao gồm các khái niệm và quy trình quan trọng liên quan đến việc quản lý và tối ưu hóa dữ liệu trong InfluxDB.
InfluxDB tự động nhận diện các bảng dữ liệu từ thông tin được nhập vào, giúp người dùng không cần phải xác định trước cấu trúc bảng hay schema cột trước khi thực hiện việc nhập dữ liệu.
APACHE SPARK
Apache Spark là một hệ thống xử lý phân tán nguồn mở, lý tưởng cho các công việc xử lý dữ liệu lớn Với khả năng ghi vào bộ nhớ đệm và thực thi truy vấn nhanh chóng, Spark tối ưu hóa phân tích dữ liệu ở bất kỳ kích thước nào Các API của Spark hỗ trợ nhiều ngôn ngữ lập trình như Java, Scala, Python và R, cho phép tái sử dụng mã cho các công việc đa dạng như xử lý lô, truy vấn tương tác, phân tích thời gian thực, máy học và xử lý đồ thị Hệ thống này đã được áp dụng rộng rãi trong nhiều tổ chức thuộc các ngành công nghiệp khác nhau, bao gồm FINRA, Yelp, Zillow, DataXu, Urban Institute và CrowdStrike Spark cũng cho phép xử lý dữ liệu theo thời gian thực, tiếp nhận và xử lý ngay lập tức dữ liệu từ nhiều nguồn khác nhau.
Apache Spark không có hệ thống file riêng mà sử dụng các hệ thống file bên ngoài như HDFS, Cassandra và Amazon S3 Nó hỗ trợ nhiều định dạng file khác nhau như text, csv và json, do đó không phụ thuộc vào bất kỳ hệ thống file nào Để tối ưu hóa tốc độ xử lý, Spark cung cấp mô hình tối ưu hóa tính toán đồ thị và hỗ trợ tính toán in-memory Bộ API của Spark tương thích với các ngôn ngữ như Scala, Java và Python, đồng thời cung cấp các thư viện máy học cơ bản như Rừng Ngẫu Nhiên (Random Forest), Cây Quyết Định (Decision Tree) và các thư viện phân cụm như KMeans.
4.2 Thành phần của Apache Spark
Hình 11: Thành phần của Apache Spark
Spark Core đóng vai trò thiết yếu trong việc thực hiện và phối hợp các tác vụ tính toán, cũng như xử lý dữ liệu trong bộ nhớ (In-memory computing) Điều này lý giải tại sao Apache Spark trở thành một trong những công cụ hàng đầu cho xử lý dữ liệu trong thế giới big data Khả năng thực hiện tính toán và xử lý dữ liệu trong bộ nhớ của Spark Core mang lại hiệu suất vượt trội so với các phương pháp truyền thống, giúp giảm thiểu thời gian truy xuất và tăng cường khả năng xử lý đồng thời.
Spark SQL hỗ trợ cả dữ liệu có cấu trúc và nửa cấu trúc, nhờ vào việc giới thiệu SchemaRDD, một kiểu trừu tượng mới Điều này tạo điều kiện cho quá trình làm việc linh hoạt và hiệu quả, giúp tối ưu hóa xử lý dữ liệu và nâng cao hiệu suất công việc.
Spark Streaming là một thành phần quan trọng trong hệ sinh thái Spark, cho phép xử lý dữ liệu theo thời gian thực Thay vì coi dữ liệu stream là các sự kiện riêng lẻ, Spark Streaming sử dụng cấu trúc mini batches để trình bày dữ liệu, giúp tối ưu hóa quá trình xử lý.
MLlib (Thư viện Machine Learning) là thành phần quan trọng trong hệ sinh thái Apache Spark, đánh dấu bước tiến mới trong kỷ nguyên máy học phân tán Được phát triển với khả năng vượt trội, MLlib cung cấp nền tảng hiệu quả cho việc xử lý và lưu trữ dữ liệu đồ thị lớn, không thua kém bất kỳ công cụ xử lý đồ thị nào trên Apache Spark.
GrapX, được tích hợp với Spark, không chỉ kế thừa sức mạnh và hiệu suất của Spark mà còn cung cấp một bộ tính năng toàn diện với các API phát triển riêng, hỗ trợ tối ưu cho tính toán trong đồ thị.
4.3 Cơ chế hoạt động của Apache Spark
Hình 12: Cơ chế hoạt động của Apache Spark
Trong kiến trúc Apache Spark, Driver Program đóng vai trò quan trọng trong việc quản lý và điều khiển quá trình xử lý trên cluster Spark Context được tạo ra để thực hiện các chức năng cơ bản, trong khi Spark Driver, chạy trên một node trong cluster, là chương trình chính của ứng dụng Spark Nó hoạt động cùng với Spark Context để giám sát quá trình thực thi trên cluster.
Chương trình Driver tương tác giúp quản lý nhiều công việc và duy trì hiệu quả trong quá trình xử lý Cluster Manager có vai trò quan trọng trong việc quản lý và phân phối tài nguyên trên các nút trong cluster, đồng thời giám sát và phân phối các tiến trình xử lý để đảm bảo hiệu suất tối ưu.
Khi Resilient Distributed Datasets (RDD) được tạo trong Spark Context, chúng được phân phối và lưu trữ trên nhiều worker nodes Các worker nodes thực hiện nhiệm vụ do Cluster Manager giao và gửi kết quả về Spark Context Executors là các quá trình chạy trên các node khác nhau trong cluster, được quản lý bởi Driver Program để thực hiện xử lý dữ liệu Mỗi Executor có thể chứa nhiều task, tạo ra môi trường phân phối cho quá trình tính toán đồng thời trong Spark, giúp tối ưu hóa việc xử lý dữ liệu trên mạng lưới máy tính phân tán.
4.4 Ưu điểm và hạn chế của Apache Spark
Hiệu suất là yếu tố quyết định giúp Apache Spark nổi bật, nhờ vào cơ chế in-memory computing cho phép lưu trữ dữ liệu trong bộ nhớ RAM thay vì phải đọc/ghi liên tục vào đĩa cứng Điều này tăng tốc độ xử lý dữ liệu đáng kể, đặc biệt với các tác vụ lặp lại, với khả năng thực hiện các phép tính nhanh hơn gấp 100 lần so với Hadoop MapReduce khi dữ liệu nằm trong bộ nhớ và nhanh hơn 10 lần khi dữ liệu trên đĩa.
Apache Spark hỗ trợ nhiều mô hình lập trình như xử lý batch, xử lý stream, xử lý đồ thị và machine learning Điều này cho phép người dùng tận dụng một nền tảng duy nhất cho các tác vụ phân tích dữ liệu đa dạng, từ phân tích truyền thống đến xử lý thời gian thực.
Apache Spark có khả năng mở rộng linh hoạt trên các cụm máy tính lớn, cho phép xử lý dữ liệu trên hàng ngàn nút máy chủ một cách dễ dàng Nhờ vào khả năng quản lý tài nguyên hiệu quả và tính năng chịu lỗi, Spark đảm bảo hiệu suất cao trong quá trình xử lý Kiến trúc dựa trên DAG (Directed Acyclic Graph) giúp tối ưu hóa việc thực thi và điều phối các tác vụ phân tán một cách hiệu quả.
Cộng đồng Apache Spark ngày càng phát triển mạnh mẽ nhờ sự hỗ trợ từ cả cộng đồng mã nguồn mở và các tổ chức hàng đầu Điều này không chỉ khẳng định Spark là một công cụ hiệu quả, mà còn tạo ra một hệ sinh thái đa dạng, luôn cập nhật với các xu hướng và yêu cầu mới trong lĩnh vực xử lý dữ liệu lớn.
Apache Spark yêu cầu tài nguyên phần cứng và hệ thống lớn để hoạt động hiệu quả, đặc biệt khi xử lý dữ liệu lớn Điều này có thể tạo ra thách thức cho các dự án có ngân sách hạn chế hoặc không đủ tài nguyên phần cứng cần thiết.
APACHE KAFKA
Apache Kafka là một ứng dụng mã nguồn mở, phân tán, chuyên về phát trực tuyến sự kiện Được phát triển để quản lý dữ liệu streaming theo thời gian thực, Apache Kafka được thiết kế nhằm xử lý luồng ghi dữ liệu một cách hiệu quả.
Ngày nay, hàng tỷ luồng dữ liệu đã tạo ra các luồng data record, tức là các luồng sự kiện Một sự kiện được định nghĩa là một bản ghi dữ liệu về một hành động đã xảy ra cùng với thời điểm xảy ra của nó Thông thường, một sự kiện sẽ kích hoạt một hành động tiếp theo hoặc một giai đoạn trong quá trình Ví dụ, việc một người đăng ký, lựa chọn vị trí ngồi trên chuyến tàu, hoặc nộp mẫu đơn đăng ký đều là những sự kiện điển hình.
Sự kiện không chỉ liên quan đến con người mà còn liên quan đến việc ghi nhận dữ liệu từ các cảm biến về nhiệt độ, độ ẩm và áp suất không khí Dữ liệu này được truyền liên tục và ngay lập tức đến hệ thống phân tích và giám sát, nơi mà nó được xử lý nhanh chóng để dự đoán thời tiết và cảnh báo về những thay đổi khí hậu đột ngột Nền tảng stream dữ liệu cho phép phát triển ứng dụng giám sát môi trường, xử lý dữ liệu từ hàng trăm hoặc hàng nghìn cảm biến đồng thời Qua đó, thông tin được cung cấp một cách chính xác và đáng tin cậy, hỗ trợ cho các quyết định quản lý và giám sát môi trường hiệu quả.
5.2 Thành phần của Apache Kafka
A producer is a client application that sends events to any specified topic in Kafka and always records them in the leader broker's log By default, producers do not concern themselves with which specific partition the events are written to, instead publishing events across all partitions of a topic However, in certain situations, a producer may write events directly to individual partitions.
Consumer là một ứng dụng khách hàng, có khả năng đăng ký một hoặc nhiều chủ đề Kafka và đọc các bản ghi theo thứ tự mà chúng được sinh ra Các consumer đọc thông tin theo thời gian thực hoặc theo tốc độ của riêng chúng, giúp ứng dụng phản ứng kịp thời với các tình huống phát sinh.
- Cluster: Kafka cluster là một set của server, mỗi một set có thể được coi là 1 broker
- Broker: có nhiệm vụ quản trị hệ thống thông tin, thực hiện các yêu cầu đọc và ghi cũng như lưu trữ thông tin trên toàn bộ cluster (mảng)
Thông tin được truyền tải đến Kafka theo từng sự kiện (event) được sắp xếp và lưu trữ lâu dài tại các chủ đề (topic) Mỗi chủ đề có thể được coi như một thư mục (folder) trong hệ thống tệp tin (filesystem), trong khi mỗi sự kiện tương ứng với một tệp (file) được lưu trữ lâu dài trong chủ đề đó.
Partitions trong Kafka là các phân vùng quan trọng, giúp đảm bảo sự liên thông và phân bố dữ liệu hiệu quả Mỗi partition được lưu trữ trên một broker riêng biệt, và việc sử dụng nhiều partitions không chỉ nâng cao hiệu suất mà còn tối ưu hóa năng suất của hệ thống.
- Consumer Group: là một group của các Consumer consume message trên Kafka server Mỗi một Consumer Group sẽ share với nhau việc handle message
Apache Kafka kết hợp hai mô hình là hàng đợi (Queuing) và Publish-Subscribe để tối ưu hóa việc xử lý dữ liệu Mô hình Queuing giúp tăng khả năng mở rộng bằng cách cho phép dữ liệu được xử lý trên nhiều trường hợp khác nhau Trong khi đó, mô hình Publish-Subscribe cho phép nhiều người dùng đăng ký và xuất bản tin nhắn, nhưng không thể phân phát tin nhắn đến người dùng một cách hiệu quả Do đó, việc kết hợp cả hai mô hình này là cần thiết trong quá trình vận chuyển và xử lý dữ liệu của Kafka.
Hình 17: Mô hình hàng đợi trong Apache Kafka
Hình 18: Mô hình Publish- Subscribe trong Apache Kafka
Các chuỗi bản ghi sẽ được chia thành các phân vùng tương ứng với từng người đăng ký, giúp tăng khả năng mở rộng Điều này cho phép nhiều người đăng ký cùng một chủ đề một cách đồng thời.
Cuối cùng, Kafka cho phép các ứng dụng độc lập đọc từ các luồng dữ liệu với tốc độ hoạt động khác nhau
5.4 Các tích hợp dùng với Kafka
Kafka Connect là một công cụ mạnh mẽ cho phép truyền dữ liệu giữa Kafka và các hệ thống khác một cách mở rộng và đáng tin cậy Nó hỗ trợ nhập dữ liệu từ toàn bộ cơ sở dữ liệu hoặc thu thập từ nhiều máy chủ ứng dụng vào các chủ đề Kafka, giúp tối ưu hóa quá trình xử lý luồng dữ liệu với độ trễ thấp.
Thư viện Kafka Streams giúp phát triển ứng dụng và microservices với dữ liệu đầu vào và đầu ra được lưu trữ trong các nhóm Kafka Sự kết hợp giữa phát triển ứng dụng Java và Scala ở phía client cùng với công nghệ cluster của Kafka ở phía server mang lại sự đơn giản trong quá trình triển khai.
Schema registry là một máy chủ độc lập hoạt động bên ngoài các brokers Kafka, cung cấp kho lưu trữ tập trung để quản lý và xác thực schemas cho dữ liệu sự kiện trong topic Nó cũng thực hiện việc tuần tự hóa và giải tuần tự hóa dữ liệu khi truyền qua mạng.
Schema Registry cung cấp API giúp producers và consumers xác định tính tương thích của sự kiện với các phiên bản trước Nếu consumer nhận một sự kiện không tương thích với phiên bản mà họ mong đợi, Schema Registry sẽ yêu cầu ngừng sử dụng sự kiện đó.
5.5 Ưu điểm và hạn chế của Apache Kafka
Khả năng mở rộng của Kafka được đảm bảo nhờ kiến trúc phân tán, cho phép xử lý khối lượng lớn dữ liệu và tăng cường thông lượng bằng cách thêm nhiều brokers và partitions.
Kafka đảm bảo độ bền của dữ liệu thông qua việc sao chép trên nhiều brokers, giúp ngăn ngừa mất dữ liệu ngay cả khi có sự cố xảy ra Bằng cách tuân thủ nguyên tắc Append only commit log, Kafka cam kết cung cấp độ bền dữ liệu, khả năng chịu lỗi và xử lý thông báo một cách hiệu quả.
MYSQL
MySQL là một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) miễn phí và phổ biến, được phát triển bởi Oracle Corporation Hệ thống này được sử dụng rộng rãi trên toàn cầu, đặc biệt trong các ứng dụng web và doanh nghiệp.
MySQL là hệ quản trị cơ sở dữ liệu cho phép tổ chức dữ liệu thành các bảng có cấu trúc, bao gồm các hàng và cột Người dùng có thể sử dụng ngôn ngữ truy vấn SQL (Structured Query Language) để thực hiện các thao tác như truy vấn, cập nhật và xóa dữ liệu một cách hiệu quả.
MySQL hoạt động theo mô hình client-server, cho phép các ứng dụng client kết nối và giao tiếp với server MySQL để truy xuất và cập nhật dữ liệu Server MySQL (mysqld) quản lý và thực thi các truy vấn từ client MySQL cung cấp nhiều cơ chế lưu trữ như InnoDB và MyISAM, mỗi cơ chế có đặc điểm và tính năng riêng, đáp ứng nhu cầu sử dụng khác nhau Để bảo vệ dữ liệu, MySQL hỗ trợ các tính năng bảo mật như quản lý người dùng, phân quyền và mã hóa dữ liệu Với cộng đồng lớn và tài liệu phong phú, MySQL được ưa chuộng bởi các nhà phát triển và người dùng toàn cầu Nhờ vào tính linh hoạt và hiệu suất cao, MySQL là lựa chọn hàng đầu cho quản lý cơ sở dữ liệu trong phát triển phần mềm và doanh nghiệp.
6.3 Ưu điểm và hạn chế của MySQL
MySQL là phần mềm mã nguồn mở miễn phí, cho phép người dùng tải về, sử dụng và phân phối lại mà không tốn chi phí Điều này giúp giảm thiểu chi phí phát triển và triển khai các ứng dụng dựa trên cơ sở dữ liệu.
MySQL là hệ quản trị cơ sở dữ liệu nổi bật với hiệu suất cao, được tối ưu hóa để xử lý dữ liệu nhanh chóng và hiệu quả Các cơ chế lưu trữ dữ liệu như InnoDB và MyISAM giúp tối ưu hóa thao tác đọc và ghi, đồng thời hỗ trợ các tính năng quan trọng như transaction và locking, đảm bảo tính nhất quán và đồng thời của dữ liệu.
MySQL là một hệ quản trị cơ sở dữ liệu đa nền tảng, có khả năng hoạt động trên nhiều hệ điều hành như Linux, Windows và macOS Hệ thống này cũng tích hợp dễ dàng với các ngôn ngữ lập trình phổ biến như PHP, Java, Python, cùng với các công nghệ web như Apache và Nginx.
MySQL cung cấp tính năng bảo mật mạnh mẽ, bao gồm quản lý người dùng và phân quyền, mã hóa dữ liệu, cũng như kiểm soát truy cập vào cơ sở dữ liệu Những tính năng này giúp bảo vệ dữ liệu quan trọng trước các mối đe dọa bảo mật.
MySQL là một hệ quản trị cơ sở dữ liệu mạnh mẽ, nổi bật với tốc độ cao, độ ổn định và tính dễ sử dụng Nó hoạt động trên nhiều hệ điều hành và cung cấp một loạt các hàm tiện ích phong phú, đáp ứng nhu cầu của người dùng.
MySQL được thiết kế với những giới hạn nhất định, không nhằm mục đích đáp ứng tất cả các nhu cầu của người dùng Điều này dẫn đến việc nó có thể thiếu một số chức năng cần thiết cho một số ứng dụng cụ thể.
MySQL có thể kém tin cậy hơn một số hệ quản trị cơ sở dữ liệu quan hệ khác do cách mà các chức năng cụ thể như tài liệu tham khảo, giao dịch và kiểm toán được xử lý.
Khi số lượng bản ghi trong cơ sở dữ liệu tăng lên, việc truy xuất dữ liệu trở nên khó khăn hơn Để cải thiện tốc độ truy xuất, cần áp dụng các biện pháp như phân chia cơ sở dữ liệu ra nhiều máy chủ hoặc sử dụng bộ nhớ đệm MySQL.
6.4 Ứng dụng thực tế của MySQL
MySQL là nền tảng quan trọng cho các ứng dụng web và thương mại điện tử, giúp lưu trữ và quản lý dữ liệu liên quan đến người dùng, sản phẩm, đơn đặt hàng, thanh toán và các hoạt động khác.
Hệ thống quản lý nội dung (CMS) như WordPress, Joomla và Drupal sử dụng MySQL để lưu trữ và quản lý các nội dung trên trang web, bao gồm bài viết, trang, bình luận và thông tin khác.
MySQL được sử dụng phổ biến trong các ứng dụng di động để quản lý và lưu trữ dữ liệu người dùng, thông tin sản phẩm, cũng như theo dõi các hoạt động trực tuyến và tương tác khác với hệ thống.
Quản lý dữ liệu khách hàng (CRM) là quá trình sử dụng hệ thống quản lý mối quan hệ khách hàng để lưu trữ thông tin khách hàng, lịch sử tương tác và các dữ liệu liên quan, thường thông qua cơ sở dữ liệu MySQL.
LLAMA 3
Llama (Large Language Model Meta AI) là một dòng mô hình ngôn ngữ lớn do Meta (trước đây là Facebook) phát triển
Meta đã ra mắt Llama 1 vào tháng 2/2023 với 4 biến thể có số lượng tham số từ 7 tỷ đến 64 tỷ Trong học máy, tham số là các yếu tố mà mô hình học từ dữ liệu đào tạo Do số lượng tham số ít, Llama 1 đôi khi gặp khó khăn trong việc hiểu sắc thái và đưa ra phản hồi không nhất quán Tiếp theo, vào tháng 7/2023, Meta giới thiệu Llama 2, được đào tạo trên 2 nghìn tỷ token, với mỗi token đại diện cho một đoạn văn bản Mô hình này có cải tiến như cửa sổ ngữ cảnh tăng gấp đôi lên 4096 token và hơn 1 triệu chú thích của con người để giảm lỗi Tuy nhiên, Llama 2 vẫn yêu cầu nhiều sức mạnh tính toán, điều mà Meta dự định khắc phục với Llama 3.
Llama 3 đi kèm với bốn biến thể đã được đào tạo chống lại 15 nghìn tỷ mã thông báo đáng kinh ngạc Hơn 5% dữ liệu đào tạo đó (khoảng 800 triệu mã thông báo) đại diện cho dữ liệu bằng 30 ngôn ngữ khác nhau Tất cả các biến thể Llama 3 có thể chạy trên nhiều loại phần cứng tiêu dùng khác nhau và có độ dài ngữ cảnh là 8000 token
Hình 24: So sánh Llama 3 và Llama 2
Mô hình Llama 3 có hai biến thể với kích cỡ 8B và 70B, tương ứng với 8 tỷ và 70 tỷ thông số Có hai phiên bản chính: "cơ sở" và "hướng dẫn" Phiên bản "cơ sở" được đào tạo theo tiêu chuẩn, trong khi phiên bản "hướng dẫn" được tinh chỉnh và tối ưu hóa cho các ứng dụng hoặc lĩnh vực cụ thể thông qua đào tạo bổ sung với dữ liệu liên quan.
Meta-Llama-3-8B là một mô hình AI 8B cơ sở, mang đến những khả năng cơ bản và lý tưởng cho các tác vụ chung, đặc biệt là trong việc phát triển chatbot dịch vụ khách hàng.
Meta-Llama-3-8B-instruct là phiên bản được tinh chỉnh của mô hình 8B, tối ưu hóa cho các tác vụ cụ thể Mô hình này có khả năng tạo ra các công cụ giáo dục, giúp giải thích những chủ đề phức tạp một cách dễ hiểu.
Meta-Llama-3-70B là một mô hình 70B được tối ưu hóa cho các ứng dụng AI hiệu suất cao, đặc biệt trong lĩnh vực xử lý tài liệu y sinh học Mô hình này hứa hẹn mang lại hiệu quả vượt trội trong việc khám phá thuốc và phát triển các giải pháp y tế tiên tiến.
Meta-Llama-3-70B-instruct là phiên bản được tối ưu hóa từ mô hình 70B, chuyên phục vụ cho các ứng dụng yêu cầu độ chính xác cao như phân tích tài liệu pháp lý và y tế, nơi mà độ chính xác đóng vai trò cực kỳ quan trọng.
Meta đã áp dụng các biện pháp kiểm soát chất lượng nghiêm ngặt trong quá trình phát triển Llama 3 để đảm bảo tính toàn vẹn dữ liệu và giảm thiểu sai lệch Kết quả là một mô hình mạnh mẽ được tạo ra một cách có trách nhiệm.
Kiến trúc Llama 3 nổi bật với sự chú trọng vào hiệu quả và hiệu suất trong xử lý ngôn ngữ tự nhiên Được phát triển trên nền tảng Transformer, Llama 3 tối ưu hóa khả năng tính toán, đặc biệt trong việc tạo văn bản, thông qua kiến trúc chỉ giải mã.
Mô hình này tạo ra đầu ra chỉ dựa trên ngữ cảnh trước đó mà không cần bộ mã hóa để mã hóa đầu vào, giúp tăng tốc độ xử lý đáng kể.
Hình 25: Kiến trúc mô hình Llama 3
Mô hình Llama 3 sở hữu một tokenizer với vốn từ vựng lên đến 128K tokens, cho phép hiểu và xử lý văn bản hiệu quả hơn Đặc biệt, các mô hình này áp dụng kỹ thuật chú ý truy vấn được nhóm (GQA) để nâng cao khả năng suy luận GQA giúp các mô hình tập trung vào những phần quan trọng của dữ liệu đầu vào, từ đó tạo ra phản hồi nhanh chóng và chính xác hơn.
Dưới đây là một vài đặc điểm về kiến trúc mô hình của Llama 3:
Llama 3 đảm bảo sự rõ ràng trong việc xử lý tài liệu nhận biết ranh giới, điều này rất quan trọng cho các nhiệm vụ như tóm tắt thông tin hiệu quả.
- Hiểu mã tốt hơn: Dữ liệu đào tạo của Llama 3 bao gồm các mẫu mã gấp bốn lần, tăng cường khả năng mã hóa của nó
Kiểm soát chất lượng mạnh mẽ được thực hiện thông qua các biện pháp nghiêm ngặt, bao gồm bộ lọc heuristic và loại bỏ nội dung không phù hợp (NSFW), nhằm đảm bảo tính toàn vẹn của dữ liệu và giảm thiểu sai lệch.
7.3 So sánh Llama 3 với các phiên bản Llama khác
Llama 3 thực hiện đặc biệt tốt trên một số điểm chuẩn chính đánh giá khả năng hiểu ngôn ngữ và lý luận phức tạp Dưới đây là một số điểm chuẩn kiểm tra các khía cạnh khác nhau về khả năng của Llama 3:
- Hiểu ngôn ngữ đa nhiệm lớn (MMLU) – Đo lường kiến thức của nó trên các lĩnh vực khác nhau
Mục đích của việc trả lời câu hỏi mục đích chung (GPQA) là đánh giá khả năng của mô hình trong việc cung cấp câu trả lời mạch lạc và chính xác cho nhiều câu hỏi về kiến thức chung.
MỘT SỐ THUẬT TOÁN ÁP DỤNG PHÂN TÍCH CẢM XÚC
LightGBM là một framework mã nguồn mở, phân tán, và hiệu suất cao do Microsoft phát triển, ra mắt vào năm 2016 Được thiết kế để tối ưu hóa hiệu suất, khả năng mở rộng và độ chính xác, LightGBM sử dụng cây quyết định nhằm cải thiện hiệu suất mô hình và giảm thiểu việc sử dụng bộ nhớ.
LightGBM sử dụng nhiều kỹ thuật tiên tiến, trong đó có Gradient-based One-Side Sampling (GOSS), giúp giữ lại các trường hợp có độ dốc lớn trong quá trình huấn luyện Kỹ thuật này tối ưu hóa việc sử dụng bộ nhớ và rút ngắn thời gian huấn luyện, mang lại hiệu suất cao cho mô hình.
LightGBM sử dụng thuật toán histogram để xây dựng cây một cách hiệu quả, kết hợp với các tối ưu hóa như phát triển cây theo lá và định dạng lưu trữ dữ liệu hiệu quả Những yếu tố này không chỉ nâng cao hiệu suất của LightGBM mà còn tạo ra lợi thế cạnh tranh so với các framework tăng cường độ dốc khác.
Cấu trúc dữ liệu của LightGBM
Dataset là cấu trúc dữ liệu quan trọng dùng để lưu trữ và xử lý dữ liệu trong huấn luyện và dự đoán Các bộ dữ liệu có thể được tạo ra từ nhiều nguồn khác nhau, bao gồm DataFrame của pandas, numpy array, hoặc các tập tin dữ liệu trực tiếp.
Booster là cấu trúc dữ liệu quan trọng trong LightGBM, dùng để lưu trữ và quản lý mô hình Gradient Boosting đã được huấn luyện Nó bao gồm thông tin về cấu trúc cây quyết định, các tham số huấn luyện, và các giá trị cần thiết cho quá trình dự đoán.
CVBooster là một cấu trúc dữ liệu tương tự như Booster, được thiết kế đặc biệt cho việc cross-validation, giúp người dùng thực hiện cross-validation với LightGBM một cách hiệu quả.
Sequence là một cấu trúc dữ liệu quan trọng, thường được sử dụng để biểu diễn một dãy dữ liệu Nó đặc biệt hữu ích trong các tình huống làm việc với dữ liệu chuỗi thời gian.
Các tham số của LightGBM
Các tham số của LightGBM đóng vai trò quan trọng trong việc thiết lập nguyên lý và hiệu suất của mô hình trong quá trình huấn luyện Những tham số này điều khiển cấu trúc, quá trình tối ưu hóa và hàm mục tiêu của mô hình Việc tinh chỉnh các tham số là cần thiết để tối ưu hóa hiệu suất cho các nhiệm vụ học máy cụ thể Các tham số cốt lõi bao gồm tốc độ học, số lượng lá, độ sâu tối đa, các thuật toán điều chuẩn và các chiến lược tối ưu hóa Hiểu và điều chỉnh những tham số này là rất quan trọng để đạt được hiệu suất tối ưu với LightGBM.
Mục tiêu của bài viết là xác định hàm mất mát được tối ưu hóa trong quá trình huấn luyện LightGBM hỗ trợ nhiều mục tiêu khác nhau, bao gồm hồi quy, phân loại nhị phân và phân loại đa lớp.
- task: Chỉ định nhiệm vụ chúng ta muốn thực hiện, có thể là huấn luyện hoặc dự đoán
Số lá tối đa trong mỗi cây được xác định bởi tham số num_leaves Giá trị cao hơn giúp mô hình nhận diện các mẫu phức tạp hơn, nhưng cũng có nguy cơ dẫn đến hiện tượng quá mức điều chỉnh.
Tốc độ học (learning rate) là yếu tố quyết định kích thước bước trong mỗi vòng lặp của quá trình gradient descent Giá trị tốc độ học thấp giúp cải thiện khả năng tổng quát hóa mặc dù quá trình học sẽ diễn ra chậm hơn.
Độ sâu tối đa của mỗi cây là một yếu tố quan trọng trong việc thiết lập mô hình Giá trị cao hơn cho phép mô hình hiểu và nắm bắt các tương tác phức tạp hơn, tuy nhiên, điều này cũng có thể dẫn đến tình trạng quá mức điều chỉnh.
Tham số min_data_in_leaf xác định số lượng điểm dữ liệu tối thiểu cần thiết để hình thành một nút lá trong mô hình Việc đặt giá trị cao hơn giúp giảm thiểu nguy cơ quá mức điều chỉnh, tuy nhiên, điều này cũng có thể dẫn đến hiện tượng không khớp trong kết quả.
- num_iterations: Xác định số lượng vòng lặp được thực hiện
Feature_fraction là tham số quan trọng trong việc kiểm soát tỷ lệ phần trăm các đặc trưng được sử dụng khi xây dựng mỗi cây trong mô hình Việc chọn ngẫu nhiên một tập hợp con các đặc trưng không chỉ giúp cải thiện độ đa dạng mà còn nâng cao hiệu suất của mô hình.
Bagging_fraction là tỷ lệ phần trăm dữ liệu được sử dụng trong kỹ thuật bagging, nơi các điểm dữ liệu được lấy mẫu với khả năng thay thế trong quá trình huấn luyện Kỹ thuật này không chỉ giúp cải thiện tính ổn định của mô hình mà còn giảm thiểu phương sai, từ đó nâng cao hiệu suất tổng thể của mô hình.
- lambda_l1 và lambda_l2: Các tham số điều chuẩn điều khiển L1 và L2 regularization, tương ứng Chúng phạt các hệ số lớn để ngăn chặn quá mức điều chỉnh
XÂY DỰNG HỆ THỐNG DỰ ĐOÁN BẦU CỬ MỸ THEO THỜI GIAN THỰC
CÀI ĐẶT MÔI TRƯỜNG
Hình 34: Tải tệp nén của Apache Spark
Bước 2: Giải nén tệp tải về
Hình 35: Giải nén tệp tải về Apache Spark
Bước 3: Cấu hình môi trường
Hình 36: Cấu hình môi trường cho Apache Spark
Bước 4: Kiểm tra phiên bản Apache Spark
Hình 37: Kiểm tra phiên bản Apache Spark
Hình 38: Tải tệp nén của Apache Kafka
Bước 2: Giải nén tệp tải về
Hình 39: Giải nén tệp tải về Apache Kafka
Bước 2: Khởi động Apache Zookeeper và Apache Kafka
Hình 40: Khởi động Apache Zookeeper
Hình 41: Khởi động Apache Kafka
Bước 3: Tạo Topic trong Apache Kafka
Hình 42: Tạo Topic trong Apache Kafka
Bước 1: Tải và cài đặt MySQL
Hình 44: Cấu hình mysql service
Hình 47: Tải tệp nén của InfluxDB
Bước 2: Giải nén tệp tải về
Hình 48: Giải nén tệp tải về InfluxDB
Bước 4: Tạo Bucket trong InfluxDB
Hình 50: Tạo Bucket trong InfluxDB
Hình 51: Tải tệp nén của Telegraf
Bước 2: Giải nén tệp tải về
Hình 52: Giải nén tệp tải về Telegraf
2.6 Cài đặt AI SUMMARY BOX
Hình 54: Tải tệp nén của llama.cpp
Bước 2: Giải nén tệp tải về
Hình 55: Giải nén tệp tải về llama.cpp
Bước 3: Tải model từ Hugging Face
Hình 56: Tải model từ Hugging Face
Bước 4: Tạo file “.bat” để khởi động
Hình 57: File “.bat” để khởi động
Bước 5: Khởi động llama.cpp
Hình 58: Khởi động llama.cpp
MÔ HÌNH PHÂN TÍCH CẢM XÚC
Phân tích cảm xúc là kỹ thuật xử lý ngôn ngữ tự nhiên giúp xác định và phân loại cảm xúc (tích cực, tiêu cực, trung tính) trong văn bản Trong bối cảnh bầu cử, kỹ thuật này có thể được áp dụng để phân tích ý kiến của cử tri trên các nền tảng truyền thông xã hội, đặc biệt là Twitter, nhằm dự đoán kết quả bầu cử.
Tiền xử lý dữ liệu:
- Import tập dữ liệu mẫu chứa các tweet có gắn nhãn
- Định nghĩa và thay thế biểu tưởng cảm xúc bằng từ tương ứng
- Loại bỏ các kí tự không phải chữ và số
- Chuyển đổi văn bản thành chữ thường
- Chuẩn hóa các từ bằng phương pháp lemma
Huấn luyện mô hình và đưa ra mô hình tối ưu nhất:
- Chia dữ liệu thành tập huấn luyện mà tập kiểm tra
- Lần lượt điều chỉnh tham số và huấn luyện mô hình với các thuật toán
Chọn thuật toán LightGBM để huấn luyện mô hình phân tích cảm xúc
- Tốc độ huấn luyện nhanh
- Sử dụng ít bộ nhớ
- Độ chính xác cao so với các thuật toán còn lại
- Dữ liệu văn bản chuyển thành vector TF-IDF
Hình 59: Độ tin cậy của thuật toán LightGBM
Hình 60: Độ tin cậy của thuật toán CatBoost
Hình 61: Độ tin cậy của thuật toán Linear Regression
Hình 62: Độ tin cậy của thuật toán XGBoost
Hình 63: Độ tin cậy của thuật toán CatBoost
DATA AND DATA COLLECTION
Twitter, mạng xã hội toàn cầu, đóng vai trò quan trọng trong giao tiếp và chia sẻ thông tin của con người Với hàng triệu người dùng, Twitter không chỉ là nơi bày tỏ suy nghĩ cá nhân mà còn là nguồn thông tin đáng tin cậy về ý kiến, xu hướng và sự kiện xã hội.
Tại sao lại chọn Twitter làm nguồn dữ liệu cho hệ thống dự đoán bầu cử Tổng thống Mỹ?
Twitter có hàng triệu người dùng toàn cầu, đặc biệt là tại Mỹ, tạo nên một nền tảng đa dạng với nhiều quan điểm và ý kiến từ các cộng đồng khác nhau Dữ liệu từ Twitter giúp cung cấp cái nhìn tổng quan về ý kiến và tâm trạng của cộng đồng trong thời gian bầu cử tổng thống Mỹ.
Twitter là nền tảng thời sự với thông tin được cập nhật liên tục, cho phép chúng ta nắm bắt biến động và sự kiện xã hội trong thời gian thực Việc thu thập dữ liệu từ Twitter giúp theo dõi tâm trạng cộng đồng, đặc biệt trong các sự kiện quan trọng như cuộc bầu cử tổng thống Mỹ.
Twitter là nền tảng cho phép người dùng tự do bày tỏ ý kiến và quan điểm về các sự kiện, chính trị và xã hội mà không bị kiểm soát Dữ liệu từ Twitter có thể được sử dụng để phân tích và đánh giá tâm trạng, ý kiến cũng như quan điểm của cộng đồng đối với các ứng cử viên và các vấn đề liên quan đến cuộc bầu cử tổng thống Mỹ.
Dữ liệu từ Twitter có cấu trúc rõ ràng và dễ tiếp cận thông qua API, giúp việc thu thập, xử lý và phân tích trở nên thuận tiện Điều này rất hữu ích cho việc dự đoán bầu cử tổng thống Mỹ và phục vụ cho các nghiên cứu khác.
Trong dự án, nhóm đã thu thập dữ liệu liên quan đến cuộc bầu cử tổng thống Mỹ, bao gồm nội dung các tweet (tweet_id, nội dung tweet), thông tin người dùng (user id, username, năm sinh, địa chỉ) và thông tin bên lề như thời gian đăng tweet, số lượng retweet, lượt thích, hashtag và liên kết có trong tweet.
Thời điểm thu thập dữ liệu để phân tích xu hướng, ý kiến và tâm trạng của cử tri diễn ra từ sáu tháng đến vài tuần trước khi cuộc bầu cử kết thúc, bao gồm cả thời gian cho đến khi hệ thống bầu cử đóng lại.
Mô tả tập dữ liệu
Bảng dữ liệu chứa các thông tin quan trọng về tweet, bao gồm thời gian tạo tweet (created_at), mã số nhận diện tweet (tweet_id), nội dung tweet (tweet), số lượt bày tỏ cảm xúc (likes) và số lượt đăng lại (retweet_count) Ngoài ra, bảng còn ghi lại tiện ích đăng tweet (source), mã số người dùng (user_id), tên thật (user_name), tên hiển thị (user_screen_name), mô tả người dùng (user_description), thời điểm tạo tài khoản (user_join_date), số lượt theo dõi (user_followers_count), địa điểm người dùng cung cấp (user_location), cũng như tọa độ địa lý (latitude, longitude) và thông tin về bang (state) và quốc gia (country) Cuối cùng, thời điểm thu thập tweet được ghi lại qua trường collected_at.
Bảng 1: Cấu trúc dữ liệu lấy từ Twitter
Nhóm nghiên cứu đã thu thập dữ liệu từ Twitter thông qua việc tải xuống các tệp dữ liệu có sẵn trên Kaggle, bao gồm các tweet được lấy từ API Twitter statuses_lookup và snsscrape Mục tiêu là cập nhật bộ dữ liệu hàng ngày từ ngày 15/10/2020 đến 08/11/2020, khoảng thời gian diễn ra các cuộc vận động tranh cử cho đến khi đóng cổng bầu cử.
Việc thu thập dữ liệu từ Kaggle giúp tiết kiệm thời gian và công sức, bởi vì nó cung cấp một giải pháp nhanh chóng thay vì phải sử dụng các phương pháp phức tạp Hơn nữa, Kaggle còn làm tăng độ phong phú và đa dạng của tập dữ liệu, góp phần cải thiện độ chính xác và hiệu suất của hệ thống.
Tập dữ liệu bao gồm hai tệp Excel, mỗi tệp chứa các tweet của Donald Trump và Joe Biden, với tổng cộng 21 cột và hơn 1 triệu dòng mỗi tệp Dữ liệu này cung cấp một bộ thông tin phong phú về các bình luận và ý kiến liên quan đến cuộc bầu cử của hai ứng cử viên trên mạng xã hội Twitter.
Hình 65: Tập dữ liệu các Tweet liên quan đến Donald Trump
Hình 66: Tập dữ liệu các Tweet liên quan đến Joe Biden
Mô tả tập dữ liệu
The article outlines a structured dataset related to tweets, detailing various attributes such as the creation time of the tweet (created_at), a unique identifier for each tweet (tweet_id), and the content of the tweet itself (tweet) It includes metrics for user engagement, such as the number of likes (likes) and retweets (retweet_count), as well as the source of the tweet (source) User-related information is also provided, including a unique user identifier (user_id), real name (user_name), display name (user_screen_name), and a brief user description (user_description) Additionally, it records the user's account creation date (user_join_date), follower count (user_followers_count), and location details, including latitude (lat), longitude (long), city, country, continent, state, and state code Lastly, the dataset captures the timestamp for when the tweet was collected (collected_at).
Bảng 2: Cấu trúc dữ liệu lấy từ Kaggle
4.2.1 Thu thập Dữ liệu từ Twitter bằng Apify
Apify là một ứng dụng hữu ích cho việc thu thập dữ liệu từ Twitter, cung cấp các công cụ và dịch vụ giúp đơn giản hóa và tối ưu hóa quy trình thu thập dữ liệu trên nền tảng này.
Chọn công cụ thu thập dữ liệu (Actor)
Tweet Scraper V2 – X / Twitter Scraper là công cụ tối ưu để thu thập dữ liệu từ Twitter, có sẵn tại apify.com Công cụ này cung cấp các tùy chọn tìm kiếm nhanh chóng, cho phép thu thập URL và hồ sơ với nhiều bộ lọc, giúp trích xuất dữ liệu theo yêu cầu một cách hiệu quả.
Hình 67: Chọn công cụ thu thập dữ liệu trong Apify
Cấu hình Công cụ Thu thập Dữ liệu
Thu thập tweet liên quan đến cuộc bầu cử theo thời gian thực và lên lịch thu thập mỗi giờ một lần Sử dụng các hashtag như #Biden, #JoeBiden, #Trump, và #DonaldTrump để tìm kiếm thông tin.
Hình 68: Cấu hình tìm kiếm theo hashtag #Biden
Cấu hình Actor để Tweet Scraper thu thập dữ liệu mỗi 1 giờ
Hình 69: Lập lịch chu trình thu thập dữ liệu
Dùng Apify để lấy tweet từ Twitter và gọi đến API FastAPI sau khi hoàn thành
Tích hợp Tweet Scraper với HTTP Webhook để gửi yêu cầu POST HTTP khi Actor hoàn thành chu trình
Hình 70: Cấu hình kết nối HTTP Webhook
4.2.2 Thu thập dữ liệu từ Kaggle
- Truy cập trang web chính thức của Kaggle
Hình 71: Giao diện chính của trang Kaggle
- Tải xuống tệp dữ liệu: “US 2020 Election Tweets”
Hình 72: Dữ liệu Tweet trên Kaggle
BACKEND
Công nghệ sử dụng: FastAPI
5.1.1 Tạo API để nhận dữ liệu từ Apify và lưu vào cơ sở dữ liệu MySQL
Hình 73: Kết nối với cơ sở dữ liệu MySQL bằng SQLAlchemy
Để kết nối cơ sở dữ liệu MySQL với FastAPI, cần cấu hình các thông số cơ bản Dữ liệu từ Twitter sẽ được thu thập qua Apify và truyền tải thông qua FastAPI, sau đó lưu trữ trong cơ sở dữ liệu MySQL để phục vụ lưu trữ lâu dài và truy xuất sau này Việc định nghĩa mô hình cơ sở dữ liệu cho bảng sẽ được thực hiện bằng SQLAlchemy.
Hình 74: Lớp dữ liệu của bảng BIDENDATASETSTATUS
Hình 75: Lớp dữ liệu của bảng TRUMPDATASETSTATUS
Hình 76: Lớp dữ liệu của bảng BIDENTWEETDATA
Hình 77: Lớp dữ liệu của bảng TRUMPTWEETDATA
Dữ liệu trả về chứa tất cả thông tin chi tiết về Actor ở định dạng Json
Hình 78: Hàm lấy dữ liệu từ URL bằng API của Apify
“defaultDatasetId” là một ID duy nhất do Apify cung cấp, giúp nhận diện và truy cập dữ liệu cụ thể trong từng bộ dataset trong hệ thống.
Sau khi hoàn tất việc thu thập dữ liệu, bước tiếp theo là lưu trữ chúng trong cơ sở dữ liệu Đây là giai đoạn quan trọng nhằm chuẩn bị cho việc truy xuất thông tin chi tiết từ từng tập dữ liệu, từ đó lưu trữ vào cơ sở dữ liệu để phục vụ cho việc phân tích và sử dụng trong tương lai.
Hình 80: Kho lưu trữ hình ảnh, cặp key-value và dữ liệu đầu ra có cấu trúc trong Apify
Hình 81: Hàm chèn dữ liệu vào cơ sở dữ liệu
Chuyển đổi thời gian từ UTC sang múi giờ Việt Nam và trả về dưới dạng chuỗi định dạng phù hợp trong cơ sở dữ liệu MySQL
Hình 82: Hàm chuyển đổi thời gian từ UTC sang múi giờ Việt Nam
- Lấy thông tin vị trí địa lý
Truy vấn và lấy thông tin vị trí từ OpenStreetMap thông qua API của Nominatim
Kết quả cung cấp thông tin cơ bản như tọa độ địa lý, tên tiểu bang hoặc thành phố, và quốc gia tương ứng với địa chỉ, giúp việc xử lý và phân tích dữ liệu vị trí trở nên dễ dàng và chính xác hơn.
Hình 83: Hàm lấy thông tin vị trí từ OpenStreetMap
- Xử lý dữ liệu từ API và lưu vào cơ sở dữ liệu
Lấy dữ liệu từ API Apify bằng cách sử dụng hàm insert_data_to_database, dữ liệu sẽ được lưu trữ vào cơ sở dữ liệu MySQL thông qua SQLAlchemy.
+ Truy vấn các bản ghi chưa được xử lý: Lấy các bản ghi từ bảng trong cơ sở dữ liệu với status = 0
+ Xử lý từng bản ghi: Với mỗi bản ghi, gọi API của Apify để lấy danh sách các tweet từ dataset_id
+ Lưu trữ tweet vào cơ sở dữ liệu Định nghĩa các endpoint cho API Đây là các endpoint của một API RESTful được định nghĩa bằng FastAPI framework
Cả hai endpoint hoạt động dựa trên dữ liệu từ các yêu cầu POST, xử lý chúng trong các tác vụ nền để đảm bảo không làm chậm quá trình phản hồi cho khách hàng.
Hình 84: Endpoint kích hoạt một nhiệm vụ nền sau khi nhận yêu cầu POST dữ liệu Biden
Hình 85: Endpoint kích hoạt một nhiệm vụ nền sau khi nhận yêu cầu POST dữ liệu Trump
5.1.2 Gửi dữ liệu Tweet vào Kafka dựa trên bang
Thực hiện việc gửi dữ liệu tweet vào Kafka topic dựa trên bang mà tweet được tạo ra
Hàm này khởi tạo một Kafka producer và gửi dữ liệu vào Kafka topic ‘BidenTopic’ và
Dữ liệu được gửi dưới dạng JSON và hàm này sẽ đóng producer sau khi gửi xong
Xử lý và gửi dữ liệu tweet Đoạn mã này xác định các bang của Mỹ và mã tương ứng của chúng
Nếu country là "United States" và state_1 hoặc state_2 nằm trong danh sách các bang, đoạn mã sẽ gửi dữ liệu tweet vào Kafka
Dữ liệu tweet bao gồm nội dung tweet, bang và mã bang
Hình 87: Điều kiện kiểm tra quốc gia và gửi dữ liệu tới Kafka 5.1.3 Truy xuất dữ liệu từ InfluxDB và trả kết quả qua API
Cung cấp các hàm để kết nối, truy vấn và đóng kết nối với cơ sở dữ liệu InfluxDB
Khởi tạo và trả về một đối tượng InfluxDBClient để kết nối với InfluxDB
Tham số số bao gồm url là URL của InfluxDB, token là mã thông báo xác thực và org là tên tổ chức
Hình 88: Hàm kết nối tới cơ sở dữ liệu InfluxDB
- Đóng kết nối Đóng kết nối với cơ sở dữ liệu InfluxDB
Client là đối tượng InfluxDBClient cần được đóng
Hình 89: Hàm đóng kết nối tới cơ sở dữ liệu InfluxDB
Truy vấn chọn các bản ghi từ bucket “daxuba” trong 30 ngày qua và lọc theo các measurement là “trump” hoặc “biden”
Dữ liệu được nhóm theo cột “state_code” và “_measurement”, sau đó tính tổng.
Hình 90: Hàm truy vấn dữ liệu từ InfluxDB
- Truy vấn dữ liệu thời gian
Truy vấn chọn các bản ghi từ bucket “daxuba” trong 30 ngày qua và lọc theo các measurement là “trump” hoặc “biden”
Dữ liệu được nhóm theo cột “state_code” và “_measurement”, sau đó lấy bản ghi cuối cùng
Hình 91: Hàm truy vấn thời gian từ InfluxDB Định nghĩa các endpoint API từ InfluxDB
- Endpoint lấy dữ liệu từ InfluxDB
Hình 92: Endpoint của hàm truy vấn lấy dữ liệu từ InfluxDB
Hình 93: Kết quả trả về từ endpoint của hàm truy vấn lấy dữ liệu từ InfluxDB
- Endpoint lấy thời gian gần nhất từ InfluxDB
Endpoint này truy vấn thời gian gần nhất của các measurement là “trump” hoặc
“biden”, nhóm theo mã bang
Hình 94: Endpoint của hàm truy vấn thời gian từ InfluxDB
Lưu trữ các tweet từ Twitter và dữ liệu phân tích bởi AI Llama 3, đảm bảo rằng thông tin này có thể được truy cập và sử dụng trong tương lai.
- BIDENDATASETSTATUS: Lưu trạng thái của dataset liên quan đến Biden
- TRUMPDATASETSTATUS: Lưu trạng thái của dataset liên quan đến Trump
- BIDENTWEETDATA: Lưu thông tin chi tiết về các tweet liên quan đến Biden
- TRUMPTWEETDATA: Lưu thông tin chi tiết về các tweet liên quan đến Trump
- SUMMARY: Lưu các đoạn mô tả được trả về từ AI SUMMARY BOX
Hình 96: Các bảng được lưu trữ trong MySQL
Lưu trữ và phân tích dữ liệu cảm xúc của cử tri về hai ứng viên tổng thống, đồng thời cung cấp các số liệu thống kê, giúp trực quan hóa kết quả theo thời gian thực thông qua biểu đồ và dữ liệu được cập nhật liên tục.
Hình 97: Các Bucket trong InfluxDB
Hình 98: Dữ liệu phân tích cảm xúc của cử tri trong InfluxDB
- Nhận dữ liệu tweet từ FastAPI:
Dữ liệu đầu vào dưới dạng json chứa nội dung tweet, bang và mã bang
Hình 99: Dữ liệu nhận từ FastAPI được gửi vào Kafka
- Nhận dữ liệu phân tích cảm xúc sau khi xử lý bằng Spark:
Kết quả đầu ra sau khi xử lý và chuyển đổi thành JSON, trả về có trường sentiment là
1 nếu tích cực, 0 nếu tiêu cực
Hình 100: Dữ liệu nhận từ Spark được gửi vào Kafka
Nhận dữ liệu từ Kafka
Hình 101: Tạo một SparkSession trong môi trường local với ứng dụng có tên là SentimentAnalysis
- Đọc dữ liệu từ các topic Kafka
Hình 102: Định nghĩa và đọc dữ liệu từ Biden Topic vào streaming DataFrame biden_df
Hình 103: Định nghĩa và đọc dữ liệu từ Trump Topic vào streaming DataFrame trump_df
Phân tích cảm xúc bằng model LGBM
- Tiền xử lý dữ liệu đầu vào
+ Xác định từ điển chứa tất cả các biểu tượng cảm xúc với ý nghĩa của chúng
Hình 104: Ảnh một biến chứa tất cả các biểu tượng cảm xúc với ý nghĩa của chúng
+ Xác định từ điển chứa tất cả các từ dừng
Danh sách từ dừng ("mystopwordlist") bao gồm các từ phổ biến trong tiếng Anh, thường không mang nhiều ý nghĩa Những từ này thường được loại bỏ trong quá trình tiền xử lý văn bản để giảm nhiễu và nâng cao hiệu quả cho các mô hình xử lý ngôn ngữ tự nhiên.
Hình 105: Ảnh một biến chứa tất cả các từ dừng
+ Tiền xử lý văn bản
Hàm preprocess sẽ thực hiện các bước sau:
1 Chuyển đổi văn bản thành chữ thường: Giúp đồng nhất dữ liệu
2 Thay thế URL bằng từ ‘URL’: Loại bỏ các đường dẫn không cần thiết
3 Thay thế emoji bằng từ đại diện: Giúp các mô hình hiểu được ngữ nghĩa của emoji
4 Thay thế tên người dùng (@username) bằng từ ‘USER’: Bảo vệ sự riêng tư và loại bỏ thông tin không cần thiết
5 Loại bỏ các ký tự không phải chữ cái: Giữ lại các từ có ý nghĩa
6 Thay thế các ký tự lặp lại bằng 2 ký tự lặp lại: Giảm thiểu nhiễu từ các ký tự lặp lại
7 Loại bỏ từ dừng và thực hiện lemmatization: Giúp giảm kích thước từ vựng và chuẩn hóa từ
Lemmatization: Đây là quá trình chuẩn hóa từ về dạng gốc của nó Ví dụ, các từ như
“running”, “runs”, “ran” đều được chuyển về dạng gốc “run” Điều này giúp giảm số lượng từ khác nhau mà mô hình phải xử lý
Hình 106: Ảnh chụp hàm preprocess trong quá trình phân tích cảm xúc bằng model LGBM
- Tải mô hình đã huấn luyện
Hình 107: Ảnh chụp hàm load_model để tải hai mô hình từ tệp đã lưu trữ
- Dự đoán cảm xúc và thêm các trường mới vào DataFrame
Hình 108: Ảnh chụp hàm analyze_sentiment cho phân tích cảm xúc, phân loại văn bản đầu vào là 1
(tích cực) hoặc 0 (tiêu cực)
The predict_udf function is a User-Defined Function (UDF) in Apache Spark, designed to be applied to a column within a DataFrame Leveraging the analyze_sentiment function, this UDF enables sentiment analysis on a text column in a DataFrame, providing valuable insights into the emotional tone of the content.
Hình 109: Ảnh chụp hàm predict_udf định nghĩa một User-Defined Function (UDF)
Hình 110: Định nghĩa schema cho một DataFrame trong Spark
Hình 111: Đoạn mã thực thi chuyển đổi chuỗi JSON thành DataFrame với schema xác định trước và thêm một cột mới sử dụng hàm predict_udf
Hình 112: Ảnh một bảng mô tả cấu trúc dữ liệu cho một khung dữ liệu đã được biến đổi từ
Hình 113: Ảnh một bảng mô tả cấu trúc dữ liệu cho một khung dữ liệu đã được biến đổi từ
Hình 114: Ảnh DataFrame biden_df1 thực hiện thêm cột và chọn dữ liệu
Hình 115: Ảnh chụp biến biden_process_steam là một streaming query
Hình 116: Ảnh một bảng mô tả cấu trúc dữ liệu cho một khung dữ liệu đã được biến đổi từ
Hình 117: Ảnh DataFrame trump_df1 thực hiện thêm cột và chọn dữ liệu
Hình 118: Ảnh chụp biến trump_process_steam là một streaming query
Hình 119: Ảnh một bảng mô tả cấu trúc dữ liệu cho một khung dữ liệu đã được biến đổi từ
Gửi kết quả phân tích trở về Kafka
Thiết lập luồng xử lý dữ liệu thời gian thực với Spark, kết hợp dữ liệu từ hai nguồn khác nhau, chuyển đổi sang định dạng JSON và gửi vào Kafka Topic Luồng này hoạt động liên tục, xử lý dữ liệu mới mỗi 30 giây, đảm bảo phân tích cảm xúc về Biden và Trump luôn được cập nhật trong Kafka.
Hình 120: Ảnh chụp biến kafka_writer_query là một streaming query, để viết dữ liệu từ DataFrame vào một nguồn dữ liệu Kafka
MONITORING
Cấu hình và chuyển dữ liệu từ Kafka vào InfluxDB bao gồm các bước sau: dữ liệu được xử lý bằng Spark và gửi về Topic của Kafka, sau đó được chuyển đến Telegraf trước khi được lưu vào cơ sở dữ liệu InfluxDB.
Hình 121: Ảnh cấu hình kết nối giữa Topic của Kafka với Telegraf
Hình 122: Ảnh chụp màn hình khởi động Telegraf sau khi cấu hình kết nối Kafka
FRONDEND
+ ReactJS: Framework chính để xây dựng giao diện người dùng
+ TailwindCSS: Thư viện CSS để thiết kế giao diện
+ Vite: Công cụ build và phát triển dự án
+ Axios: Thư viện để giao tiếp API
- Giao diện người dùng để hiển thị các biểu đồ và số liệu thống kê
+ Giao diện chính của trang web bầu cử Mỹ áp dụng hệ thống thời gian thực
Hình 123: Ảnh chụp giao diện ứng dụng bầu cử Mỹ áp dụng hệ thống thời gian thực
Bản đồ nước Mỹ hiển thị kết quả cuộc bầu cử với các tiểu bang được tô màu xanh hoặc đỏ, cho biết ứng cử viên thắng cử tại từng tiểu bang.
Hình 124: Ảnh chụp giao diện bản đồ được mã hóa màu của Mỹ, hiển thị kết quả của một cuộc bầu cử
Bản đồ nước Mỹ hiển thị các "Battleground States" (bang chiến trường) trong cuộc bầu cử, là những bang có sự cạnh tranh khốc liệt giữa các ứng viên Những bang này đóng vai trò quan trọng trong việc quyết định ai sẽ trở thành Tổng thống Mỹ.
Hình 125: Ảnh chụp biểu đồ bản đồ thể hiện Battleground State của Mỹ
Biểu đồ bản đồ nước Mỹ minh họa hiện tượng “Flipped Seats” trong bầu cử, cho thấy các vị trí đại diện chính trị, như Quốc hội hoặc chính quyền địa phương, đã chuyển giao từ một đảng sang đảng khác so với kết quả bầu cử trước đó.
Hình 126: Ảnh chụp biểu đồ bản đồ thể hiện Flipped Seats của Mỹ
Biểu đồ bản đồ nước Mỹ thể hiện "Size of lead" trong bầu cử Mỹ, phản ánh sự chênh lệch về số phiếu bầu giữa hai ứng cử viên hoặc hai đảng Thông qua biểu đồ này, người xem có thể dễ dàng nhận thấy mức độ cạnh tranh trong các cuộc bầu cử và sự phân bố phiếu bầu trên toàn quốc.
Hình 127: Ảnh chụp biểu đồ bản đồ thể hiện Size of Lead của Mỹ
Giao diện hiển thị của bài viết được trình bày trong một khung với tiêu đề "Tóm tắt Bầu cử", kèm theo các thông tin tóm tắt và thời gian cập nhật Nội dung này tập trung vào việc phân tích cuộc bầu cử, nhấn mạnh những lợi thế nổi bật của các ứng cử viên.
Hình 128: Ảnh chụp đoạn văn bản liên quan đến việc phân tích hoặc báo cáo về cuộc bầu cử
Biểu đồ đường thể hiện sự thay đổi theo thời gian thực, với các điểm dữ liệu được cập nhật liên tục, minh họa sự biến động của tỷ lệ ủng hộ giữa hai ứng cử viên chính trong cuộc bầu cử Mỹ.
Hình 129: Ảnh chụp một biểu đồ đường thay đổi theo thời gian thực trong bầu cử Mỹ
Phần tử giao diện dưới đây hiển thị thông tin về tổng số phiếu ủng hộ và tỷ lệ chiến thắng giữa hai ứng cử viên chính trong bầu cử Mỹ, Trump và Biden.
Hình 130: Ảnh chụp thể hiện tổng số ủng hộ và tỷ lệ chiến thắng của Trump và Biden
Phần tử giao diện dưới đây bao gồm các thẻ cập nhật kết quả chi tiết từ từng bang, giúp người dùng hiểu rõ hơn về quá trình bầu cử Tổng thống Mỹ.
Hình 131: Ảnh chụp các thẻ thể hiện kết quả chi tiết của từng bang trong bầu cử Mỹ
8.1 Xử lý dữ liệu bầu cử và tự động cập nhật thông tin
8.1.1 Xử lý dữ liệu bầu cử và tạo tóm tắt về lợi thế của Trump và Biden
Xử lý dữ liệu bầu cử từ cơ sở dữ liệu InfluxDB cho phép tạo ra một tóm tắt hiệu quả về tình hình ứng cử viên Hệ thống AI Llama sẽ sử dụng thông tin này để tạo ra một đoạn văn ngắn bằng tiếng Việt, nêu rõ lợi thế của các ứng cử viên Trump và Biden Việc này giúp cung cấp cái nhìn sâu sắc và khách quan về cuộc bầu cử.
Lấy dữ liệu từ cơ sở dữ liệu InfluxDB để xử lý và tạo file CSV, chứa tổng số phiếu bầu của các ứng cử viên Trump và Biden theo từng bang ở Mỹ.
Hình 132: Hàm truy vấn dữ liệu từ InfluxDB
Hình 133: Ảnh chụp một đoạn mã tạo dữ liệu CSV từ các bản ghi trong các bảng
Hình 134: Ảnh chụp một đoạn mã chuyển đổi danh sách csv_data thành định dạng CSV
- Tạo một đoạn văn mô tả về số phiếu bầu của Trump và Biden theo từng bang, sử dụng dữ liệu từ file CSV
Hình 135: Ảnh chụp hàm create_election_summary tạo ra một bản mô tả theo yêu cầu
- Chuẩn bị payload để gửi cho hệ thống AI (Llama) để nhận phản hồi về đoạn mô tả đã tạo
Hình 136: Ảnh chụp một đoạn mã gửi và xử lý dữ liệu tóm tắt bầu cử đến hệ thống Llama
8.1.2 Kết nối đến cơ sở dữ liệu InfluxDB, gọi hàm process_csv_data để xử lý dữ liệu và trả về kết quả
Hình 137: Ảnh chụp một hàm kết nối đến cơ sở dữ liệu InfluxDB, gọi hàm process_csv_data để xử lý dữ liệu và trả về kết quả
8.2 Định nghĩa và thiết lập cơ sở hạ tầng
8.2.1 Thiết lập và bắt đầu công việc lập lịch tự động cập nhật dữ liệu bầu cử
Hình 138: Bắt đầu và dừng bộ lập lịch
8.2.2 Định nghĩa mô hình cơ sở dữ liệu và truy vấn
Hình 139: Lớp dữ liệu của bảng SUMMARY
Hình 140: Hàm truy vấn dữ liệu tóm tắt từ MySQL
8.3.1 Định nghĩa lớp mô hình và cấu hình từ Pydantic
Hình 141: Định nghĩa lớp mô hình và cấu hình từ Pydantic 8.3.2 Endpoint API
Hình 142: Endpoint của hàm truy vấn dữ liệu tóm tắt từ MySQL
9 ĐÁNH GIÁ ĐỘ CHÍNH XÁC CỦA DỰ ĐOÁN SO VỚI KẾT QUẢ BẦU CỬ THỰC TẾ
Hình 144: Kết quả dự đoán cuộc bầu cử Mỹ của hệ thống
Dựa trên hệ thống dự đoán, Joe Biden được dự đoán sẽ nhận 52.45% phiếu bầu, trong khi Donald Trump nhận 47.55% Thực tế, Joe Biden đạt 51.3% và Donald Trump 46.9%, với sai số 1.15% cho Biden và 0.65% cho Trump Điều này cho thấy hệ thống có khả năng dự đoán chính xác với sai số nhỏ, phản ánh xu hướng bầu cử thực tế Mặc dù còn một số sai số nhỏ, nhưng độ chênh lệch này nằm trong phạm vi chấp nhận được, khẳng định tiềm năng và hiệu quả của hệ thống Việc cải thiện thuật toán sẽ nâng cao độ chính xác trong tương lai, với dữ liệu thời gian thực từ Twitter.
1 NHỮNG KẾT QUẢ ĐẠT ĐƯỢC
- Hiểu rõ và ứng dụng được mô hình LightGBM vào mô hình phân tích cảm xúc
- Hiểu được rõ cách xây dựng hệ thống thời gian thực
- Áp dụng Llama 3 để tạo một SUMMARY BOX đơn giản
- Trực quan hóa dữ liệu
- Rèn luyện kỹ năng làm việc nhóm, giải quyết vấn đề chung
- Tư duy phản biện, kỹ năng giao tiếp giữa các thành viên trong nhóm
- Kỹ năng đọc tài liệu tiếng anh, tự học, tự nghiên cứu để giải quyết khó khăn
- Kỹ năng quản lý thời gian để thực hiện đúng tiến độ mà không bị ảnh hưởng bởi nhiều yếu tố khác nhau
2 HẠN CHẾ CỦA ĐỒ ÁN
- Độ chính xác, hiệu suất của mô hình phân tích cảm xúc LightGBM chưa cao
- Độ trễ của hệ thống chưa được tối ưu
- SUMMARY BOX khá đơn giản, cần nâng cấp
- Giao diện chưa bắt mắt
- Thử nghiệm lai ghép với các thuật toán khác để tăng độ chính xác của mô hình dự đoán cảm xúc
- Phát triển website có đầy đủ giao diện (đăng nhập, đăng ký, thao tác với trang web)
[1] Tổng quan về InfluxDB, https://www.influxdata.com/products/influxdb-overview/, truy cập ngày 12/02/2024
[2] Tổng quan về Telegraf, https://www.influxdata.com/time-series-platform/telegraf/, truy cập ngày 02/02/2024
[3] Tổng quan về Llama3, https://llama.meta.com/llama3/, truy cập ngày 15/04/2024
[4] Tổng quan về Apache Spark, https://spark.apache.org/, truy cập ngày 19/01/2024
[5] Tổng quan về Apache Kafka, https://kafka.apache.org/, truy cập ngày 22/01/2024
[6] Biểu đồ cuộc bầu cử Hoa Kỳ năm 2020, https://edition.cnn.com/election/2020/results/, truy cập ngày 30/01/2024
[7] InfluxDB system for Docker, https://github.com/influxdata/influxdb/, truy cập ngày 19/2/2024
[8] Các phương pháp vẽ bản đồ nước Mỹ, https://github.com/VictorCazanave/svg- maps/blob/master/packages/usa/README.md/ truy cập ngày 03/03/2024
[9] Các phương pháp vẽ bản đồ nước Mỹ, https://github.com/liringlas/react-usa-svg/, truy cập ngày 05/03/2024
[10] Các phương pháp vẽ bản đồ nước Mỹ, https://github.com/mittidesai/US-Elections- SentimentAnalysis/ , truy cập ngày 05/03/2024
[11] Real-time population of tweets using Kafka to Elastic Search displaying Sentiments, https://github.com/mittidesai/US-Elections-Sentiment-Analysis/ , truy cập ngày 14/03/2024
[12] Truy vấn Flux trong InfluxDB, https://docs.influxdata.com/flux/v0/, truy cập ngày 01/04/2024
[13] Cấu hình InfluxDB Telegraf, https://docs.influxdata.com/influxdb/cloud/tools/telegraf- configs/, truy cập ngày 23/02/2024
[14] Sử dụng Tailwind CSS với Vite, https://tailwindcss.com/docs/guides/vite, truy cập ngày 05/04
[15] Giới thiệu về Actor trong apify, https://apify.com/apidojo/tweet-scraper, truy cập ngày 16/03/2024
[16] Kết quả bầu cử Mỹ của CNN, https://edition.cnn.com/election/2020/results/president/, truy cập ngày
Bài viết của báo Thanh Niên phân tích đường thắng của hai ứng viên tổng thống Mỹ, nhấn mạnh những chiến lược và thách thức mà họ phải đối mặt trong cuộc bầu cử Các ứng viên đang cạnh tranh gay gắt để thu hút sự ủng hộ từ cử tri, với các vấn đề chính như kinh tế, an ninh và chính sách đối ngoại Phân tích này cung cấp cái nhìn sâu sắc về xu hướng bầu cử và khả năng chiến thắng của từng ứng viên, giúp độc giả hiểu rõ hơn về bối cảnh chính trị hiện tại.
[18] Spark streaming for realtime-system, https://spark.apache.org/docs/latest/structured- streaming-programming-guide.html/, truy cập ngày 19/03/2024
[19] Kafka streams, https://kafka.apache.org/37/documentation/streams/, truy cập ngày 01/04/2024
[20] How to use Llama 3 to create a chat box, https://github.com/meta-llama/llama3/, truy cập ngày 20/05/2024