Công nghệvà thư viện sử dụng
3.5.1 Web framework Spring Boot
Spring Boot[7]là một Java framework được phát triển bởi Pivital Team dựa trên Java framework mã nguồn mở để tạo ra các microservice, nhằm mục đích xây dựng các ứng dụng Spring độc lập một cách nhanh chóng và có khả năng thực thi ngay.
Sau khi sử dụng Spring Boot để lậptrình ứng dụng Spring, bạn có thể chạy ngay
ứng dụng của mình mà không cần phải config (cấu hình) quá nhiều. Những đặc điểm nổi bật của Spring boot:
Spring Boot được phát triển tối ưu sao cho việc cấu hình XML trở nên đơn
giản nhất trong Spring.
Spring Boot được phát triển sao cho việc lập trình trở nên nhanh chóng và
dễ dàng.
Gia tăng năng suất trong lập trình.
53
3.5.2 Vuejs
Vue[8] là một progressive framework dùng để xây dựng giao diện người dùng
(UI). Không giống các monolithic framework. Core của Vue chỉ tập trung vào lớp view mà và nó rất dễ để làm quen hay tích hợp với các thư viện hoặc các project có sẵn.Hơn nữa, Vue lại chứa đựng một sức mạnh rất lớn trong việc xây dựng Single-Page
Applications khi được kết hợp với công cụ build và các thư viện/component được xây dựng bởi cộng đồng.
Trước sự tồn tại của hàng loạt các framework, thư viện Javascript vô cùng mạnh
mẽ như React, Angular, VueJS nổi bật và trở thành lựa chọn lý tưởng hàng đầu của
các lâp trình viên khi phát triển ứng dụng bởi những lý do sau.
Hiệu suất vô cùng cao: Là một framework linh động với nhiều tính năng
được kế thừa từ đối thủ và khả năng mở rộng cao, VueJS mang lại hiệu suất vô cùng cao trong các dự án phát triển. Lập trình viên chỉ cần dùng một framework duy nhất để tạo ra các app.
Kho thư viện lớn, hỗ trợ xây dựng giao diện một cách nhanh chóng.
Đơn giản và dễ học: VueJS rất đơn giản, dễ học và dễ áp dụng vào trong
các dự án, tài liệu dễ hiểu.
3.5.3 Redis queue
Redis queue[9]là một dạng nosql key-value được sử dụng phổ biến. Mỗi value có
một key tương ứng. Redis là dạng in-memory database, data được lưu trữ trên ram nên
việc truy xuất rất nhanh. Redis thường xuyên được sử dụng như một bộ nhớ đệm, secondary database, hoặc sử dụng như một queue để chung chuyển data.
3.5.4 Sklearn
Scikit-learn (Sklearn)[10]là thư viện mạnh mẽ nhất dành cho các thuật toán học máy được viết trên ngôn ngữ Python. Thư viện cung cấp một tập các công cụ xử lý các bài toán machine learning và statistical modeling gồm: classification, regression,
clustering, và dimensionality reduction.
Nhóm thuật toán được xây dựng bởi thư viện scikit-learn
Clustering: Nhóm thuật toán Phân cụm dữ liệu không gán nhãn. Ví dụ thuật
54
Cross Validation: Kiểm thử chéo, đánh giá độ hiệu quả của thuật toán học
giám sát sử dụng dữ liệu kiểm thử (validation data) trong quá trình huấn luyện
mô hình.
Datasets: Gồm nhóm các Bộ dữ liệu được tích hợp sẵn trong thư viện. Hầu như các bộ dữ liệu đều đã được chuẩn hóa và mang lại hiêu suất cao trong quá trình huấn luyện như iris, digit, ...
Dimensionality Reduction: Mục đích của thuật toán này là để Giảm sốlượng
thuộc tính quan trọng của dữ liệu bằng các phương pháp như tổng hợp, biểu diễn dữ liệu và lựa chọn đặc trưng. Ví dụ thuật toán PCA (Principal
component analysis).
Ensemble methods: Các Phương pháp tập hợp sử dụng nhiều thuật toán học tập để có được hiệu suất dự đoán tốt hơn so với bất kỳ thuật toán học cấu
thành nào.
Feature extraction: Trích xuất đặc trưng. Mục đích là để định nghĩa các thuộc tình với dữ liệu hình ảnh và dữ liệu ngôn ngữ.
Feature selection: Trích chọn đặc trưng. Lựa chọn các đặc trưng có ý nghĩa trong việc huấn luyện mô hình học giám sát.
Parameter Tuning: Tinh chỉnh tham số. Các thuật toán phục vụ việc lựa chọn tham số phù hợp để tối ưu hóa mô hình.
Manifold Learning: Các thuật toán học tổng hợp và Phân tích dữ liệu đa
chiều phức tạp.
Supervised Models: Học giám sát. Mảng lớn các thuật toán học máy hiện nay.
Ví dụ như linear models, discriminate analysis, naive bayes, lazy methods,
neural networks, support vector machines và decision trees.
3.5.5 Fasttext
FastText[11]là một phương pháp nhúng từ khác là một phần mở rộng của mô hình word2vec được tạo bởi phòng thí nghiệm Nghiên cứu AI (FAIR) của Facebook. Thay vì học trực tiếp vectơ cho các từ, fastText biểu thị mỗi từ dưới dạng n-gam ký tự. Điều này giúp nắm bắt ý nghĩa của các từ ngắn hơn và cho phép nhúng hiểu các hậu tố và
tiền tố. Khi từ đã được biểu diễn bằng ký tự n-gram, một mô hình bỏ qua gram được
55
trên một từ vì không tính đến cấu trúc bên trong của từ. Miễn là các ký tự nằm trong cửa sổ này, thứ tự của n-gram không quan trọng.FastText hoạt động tốt với các từ hiếm. Vì vậy, ngay cả khi một từ không được nhìn thấy trong quá trình đào tạo, nó có thể được chia nhỏ thành n-gram để nhúng.
3.5.6 Deeplearning4j
Deeplearning4j[12]là một trong những thư viện học máy mã nguồn mở mạnh nhất được sử dụng trong java. Nó cung cấp khung tính toán cho các thuật toán phát triển dựa trên học sâu khác nhau. Khung tính toán phân tán của nó thừa hưởng Apache
Hadoop và Spark framework cho các mô hình ML đào tạo. Mô-đun này được phát triển
bằng ngôn ngữ lập trình Java. Nó có khả năng tương thích với bất kỳ ngôn ngữ JVM nào sử dụng Kotlin, Scala,…
56
CHƯƠNG 4. KIỂM THỬ VÀ ĐÁNH GIÁ Chức năng phần mềm
4.1.1 Khối thu thập dữ liệu
a. Dữ liệu tin tức
Hệ thống đã cung cấp bộ thu thậptin tức từ các trang tin tức chứng khoán lớn ở
Việt Nam. Dữ liệu tin tức thu thập hiện tại khoảng 400.000 bài viết đến từ 4 đầu báo lớn ở Việt Nam: tinnhanhchungkhoan.vn, cafef.vn, fireant.vn, vietstock.vn