Trong những năm qua, ứng dụng nguồn dữ liệu lớn (bigdata) được nhiều tổ chức trong nước và ngoài nước sử dụng nhằm khai thác các tiềm năng sẵn có từ bigdata, để phục vụ cho các công việc của chúng ta. Tuy nhiên, bên cạnh những tiềm năng đó, thì có không ít những khó khăn từ bigdata cần được giải quyết trước khi đưa vào khai thác.
Trang 1NHỮNG KHÓ KHĂN VÀ GIẢI PHÁP TRONG THU THẬP GIÁ BÁN LẺ HÀNG HÓA VÀ DỊCH VỤ TIÊU DÙNG TỪ CÁC
TRANG WEB THƯƠNG MẠI ĐIỆN TỬ TẠI VIỆT NAM
Trong những năm qua, ứng dụng nguồn dữ liệu lớn (bigdata) được nhiều
tổ chức trong nước và ngoài nước sử dụng nhằm khai thác các tiềm năng sẵn có từ bigdata, để phục vụ cho các công việc của chúng ta Tuy nhiên, bên cạnh những tiềm năng đó, thì có không ít những khó khăn từ bigdata cần được giải quyết trước khi đưa vào khai thác
Năm 2015, Viện Khoa học Thống kê (KHTK) đã thành lập Nhóm nghiên cứu, khai thác nguồn dữ liệu lớn (bigdata) để sản xuất số liệu thống kê nhà nước do đồng chí Viện trưởng Viện KHTK trực tiếp chỉ đạo Cụ thể, Viện KHTK đã thử nghiệm khai thác bigdata phục vụ sản xuất chỉ số giá tiêu dùng Trong quá trình thực hiện nhóm đã nghiên cứu công nghệ, xây dựng chương trình trích xuất dữ liệu, quy trình thu thập giá tiêu dùng từ các website bán hàng trực tuyến, thu thập
và xử lý dữ liệu của hàng hóa và dịch vụ tiêu dùng phục vụ sản xuất chỉ số giá tiêu dùng Quá trình thử nghiệm khai thác được cụ thể theo 4 bước:
Bước 1: Lựa chọn công nghệ trích xuất dữ liệu từ các trang web
Bước 2: Xác định các trang web chứa thông tin về giá bản lẻ hàng hóa và dịch
vụ tiêu dùng
Bước 3: Trích xuất, chuyển đổi cấu trúc và phân loại dữ liệu từ các trang web Bước 4: Xử lý và lưu trữ dữ liệu
Trong quá trình thử nghiệm, nhóm tiến hành song song nghiên cứu công nghệ mới, và triển khai thử nghiệm, nên mỗi bước thực hiện đều có những khó khăn nhất định Bài viết dưới đây viết về những khó khăn và các giải pháp cụ thể nhóm
đã thực hiện để đạt được kết quả tốt nhất
1 Lựa chọn công nghệ trích xuất dữ liệu từ các trang web
Khó khăn:
Trang 2Theo nghiên cứu của Viện KHTK, hiện nay trên thế giới đang sử dụng nhiều nền tảng công nghệ khác nhau để trích xuất dữ liệu từ nguồn bigdata như: Web Scarper, API, Crowsourcing, Machine learning, Google Voice Search, Hadoop (Map reduce); Spark; Hơn nữa, đây là vấn đề rất mới, ở Việt Nam chưa có kinh nghiệm nghiên cứu nhiều nên việc lựa chọn công nghệ nào phù hợp với công tác nghiên cứu là rất khó khăn Cụ thể nhóm là sẽ sử dụng công nghệ nào để xây dựng chương trình thu thập giá bán lẻ của hàng hóa và dịch vụ tiêu dùng từ các trang web bán hàng trực tuyến
Giải pháp:
Để xác định công nghệ sẽ sử dụng, nhóm đã tiến hành nghiên cứu kinh nghiệm tại Hàn Quốc, Anh và một số nước thành viên trong nhóm nghiên cứu toàn cầu về dữ liệu lớn của Liên Hợp quốc (GWG) Kết quả nghiên cứu kinh nghiệm của các nước trên, đặc biệt là Hàn Quốc cho thấy: Hàn Quốc sử dụng 2 công nghệ Web Scaper và công nghệ API (Sử dụng các hàm truy vấn thông minh để trích xuất thông tin do các website bán hàng trực tuyến ở Hàn Quốc đều hỗ trợ nền tảng công nghệ API)
Tuy nhiên, Ở Việt Nam có rất ít các website thương mại điện tử hỗ trợ công nghệ API mặc dù số lượng website thương mại điện tử khá nhiều Vì vậy nhóm không lựa chọn công nghệ API
Tiếp tục nghiên cứu sâu nền tảng công nghệ Web Scraper của Hàn Quốc nhóm nhận thấy công nghệ Web Scraper là phù hợp nhất với tình hình hiện tại ở Việt Nam Mặt khác, công nghệ này có ưu điểm không đòi hỏi chi phí quá cao, trong khi đó hiệu năng thu thập thông tin là rất tốt
2 Xác định các trang web chứa thông tin về giá bản lẻ hàng hóa và dịch vụ tiêu dùng
Khó khăn:
Tương tự như việc tiến hành khảo sát, lập mạng lưới các điểm điều tra thu thập thông tin giá tiêu dùng theo phương pháp truyền thống, việc xác định các trang web chứa thông tin về giá bán lẻ hàng hóa và dịch vụ tiêu dùng cũng vô cùng
Trang 3quan trọng Hiện nay theo xu hướng phát triển của thương mại điện tử nên trên mạng Internet có rất nhiều trang web thương mại điện tử bán hàng trực tuyến Tuy nhiên, trong thử nghiệm ban đầu nhóm gặp nhiều khó khăn trong việc lựa chọn trang web để thu thập dữ liệu, như:
- Các trang web có miền truy cập không khả dụng
- Nhiều trang web chặn lệnh truy vấn, vì vậy không thể trích xuất được dữ liệu
- Có trang web tên miền nước ngoài nhưng lại hoạt động tại lãnh thổ Việt Nam (VD: yes.com)
- Một số trang web chỉ cho phép trích xuất dữ liệu trong một khoảng thời gian nhất định (VD: lazada.vn)
Giải pháp:
Để đưa ra được giải pháp nhóm đã nghiên cứu các yếu tố ảnh hưởng đến sự hoạt động ổn định các trang web, từ đó nhóm đưa ra các tiêu chí để lựa chọn các webhoạt động ổn định và phù hợp với mục tiêu đề ra để đưa vào danh sách làm nguồn thu thập dữ liệu:
+ Các trang web có bán các mặt hàng tiêu dùng trong danh mục rổ hàng hóa tiêu dùng truyền thống;
+ Các trang web có sẵn các mặt hàng thay thế trong trường hợp thông tin bị khuyết thiếu khi tiến hành thu thập;
+ Trang web có đặc điểm phù hợp với nền tảng công nghệ thu thập (web scraper) được nhóm sử dụng và có thể trích xuất được dữ liệu;
+ Trang web phải do Bộ Công thương quản lý (Cục Thương mại điện tử); + Trang web có số lượt truy cập nhiều
Kết quả, nhóm đã lựa chọn được 44/104 trang web có khả năng thu thập được dữ liệu khá tương đồng với tên và quy cách hàng hóa trong rổ hàng hóa tính CPI hiện nay
Trang 43 Trích xuất, chuyển đổi cấu trúc dữ liệu và phân loại dữ liệu thu thập từ các trang web
Khó khăn:
Quá trình trích xuất dữ liệu, khó khăn lớn nhất gặp phải là yêu cầu dữ liệu trích xuất ở dạng phi cấu trúc (dữ liệu text, dữ liệu số, dữ liệu hình ảnh,…)
Giải pháp:
Để giải quyết các vấn đề này cần có một công nghệ phù hợp Viện KHTK đã nghiên cứu và thiết kế chương trình/công cụ trích xuất dữ liệu từ các trang web với tên gọi ISS-robot Chương trình trích xuất dữ liệu viết theo ngôn ngữ lập trình Nodejs1 để trích xuất dữ liệu về giá bán lẻ hàng hóa và dịch vụ tiêu dùng từ 44 trang web bán hàng trực tuyến trên mạng Internet
Tuy nhiên vẫn còn những khó khăn lớn hơn là khâu làm sạch và phân loại
dữ liệu theo rổ hàng truyền thống Ví dụ, Thử nghiệm ngày 1/12/2018, Viện
KHTK tiến hành thu thập giá bán lẻ của các mặt hàng tiêu dùng tại trang web
http://thucphamnhanh.com/
Sau khi xác định trang web thông tin cần thu thập ở bước 1 là trang trang
web http://thucphamnhanh.com/ , tiếp đó xác định các thông tin cần thu thập ở
bước 2 được thực hiện như sau: Lấy đường dẫn nhóm các mặt hàng và thông tin
về các mặt hàng cần thu thập
- Sử dụng tiện ích của Google là Scraper Similar, chúng ta trích xuất ra được toàn bộ các đường dẫn có chứa các thông tin về các mặt hàng cần thu thập Các thông tin đó được lưu trữ trong một file có đuôi định dạng.js
- Thông tin về mặt hàng sẽ bao gồm: Tên mặt hàng, quy cách, phẩm cấp ( có sản phẩm có, có sản phẩm không có), thông tin về khuyến mại (nếu có), giá bán của mặt hàng ( bao gồm cả đơn vị tính), hình ảnh
Bước 3: Khởi động chương trình ISS-Robot để thu thập dữ liệu tự động
Trang 5Chương trình ISS-Robot có cấu trúc: Gồm 2 module quan trọng:
- Module 1: là file chứa toàn bộ thông tin toàn bộ các mặt hàng cần thu thập
- Module 2: là các file trong đó có các đường dẫn chứa các nhóm sản phẩm (đã được xác định ở bước trên) (chương trình sẽ tạo ra nhiều file, mỗi file sẽ chứa đường dẫn của các nhóm sản phẩm của 1 trang web)
- Yêu cầu đối với ISS-Robot khi thu thập dữ liệu từ các website:
- Phải gắn các đường dẫn của nhóm các mặt hàng trên website (đã lấy được ở trên) vào chương trình
- Gắn các thông tin về mặt hàng (đã được xác định ở trên) vào chương trình
- Xây dựng một chứng chỉ để tránh một số website ngăn chặn việc truy cập để trích xuất thông tin của chương trình
Công việc thu thập và trích xuất dữ liệu từ các website là một công việc khó khăn vì đây là công nghệ mới, Tuy nhiên nhóm đã nghiên cứu và tối ưu hóa các bước thực hiện nhằm mục đích tạo sự đơn giản thuận tiện cho cán bộ Thống kê
- Khởi động ISS-Robot: Chọn Start ở góc trái màn hìnhGõ CMD để chạy file module 1
- Theo dõi sự hoạt động của chương trình thông qua trình duyệt web (bằng cách trên trình duyệt, gõ địa chỉ locallhost:3000) Khi chạy vào chương trình theo dõi thì sẽ hiển thịdanh sách của 44 website đã xác định Chọn lần lượt vào từng website để lấy đường dẫn chứa các thông tin được thu thập bằng ISS-Robot (đường dẫn dạng locallhost: 3000/tên website thu thập Ví dụ: locallhost/thucphamnhanh) Khi thực hiện thao tác này thì sẽ hiện thị thông tin của các mặt hàng trên website mà thu thập về được Nếu là trang bảo mật, sẽ hiện ra thông báo phải liên hệ với quản trị website
- Lưu trữ dữ liệu thô vừa thu thập được
Công nghệ: sử dụng hệ quản trị cơ sở dữ liệu MongoDB
Trang 6 Đưa các đường chứa các thông thông tin được thu thập bằng ISS-Robot vào MongoDB để lưu trữ dữ liệu thô Kết quả đã thu được 1300 bản ghi thông tin (dữ liệu thô) các mặt hàng từ trang: thucphamnhanh
Lấy dữ liệu thô để đưa vào sử dụng:
- Lấy các dường dẫn chứa các thông tin được thu thập bằng ISS-Robot đưa vào trong Excel thông qua chức năng kết nối dữ liệu từ website (Data / Data from Web) (trong công cụ này có thể chỉnh sửa thời gian tự động cập nhật)
- Kết quả cho ra dữ liệu thô để phục vụ cho các bước xử lý dữ liệu tiếp theo (dữ liệu thô phi cấu trúc lưu ở dạng file Excel)
Chuyển đổi cấu trúc dữ liệu
Chuyển đổi dữ liệu thô đã thu thập được ở dạng phi cấu trúc về dạng có cấu trúc: Sử dụng các hàm và Macro của Excel
- Tách dữ liệu thô thu được thành 2 trường: Tên mặt hàng (gồm tên, quy cách, phẩm cấp của mặt hàng) và Giá (gồm giá và đơn vị tính giá) bằng cách sử dụng các hàm Left, Right và Find của Excel
- Tiếp tục tách và xử lý Giá (loại bỏ các ký tự không cần thiết trong cột giá):
Sử dụng Macro (code tự phát triển để sử dụng) Kết quả thu được là một cột Giá của sản phẩm đã loại bỏ hết các ký tự không cần thiết (chỉ còn lại giá)
- Tiếp tục tách và xử lý cột Tên mặt hàng (thực chất là tách riêng tên mặt hàng
và quy cách, phẩm cấp): Dùng các hàm Left, Right và Find để tách cột tên mặt hàng thành 2 cột (tên mặt hàng và cột quy cách mặt hàng)
- Tiếp tục tách Đơn vị tính của mặt hàng (từ cột quy cách mặt hàng vừa tách được ở bước trên): dùng notepad++ để tách (xóa hết các ký tự trước đơn vị
về khối lượng của mặt hàng) Có một số mặt hàng sau khi tách đơn vị tính vẫn có dạng như: 12 cái/30 cái (bánh bao màn thầu cacao tân việt sin), 1.8kg cánh lớn (bột ngọt ajnomoto) Để xử lý được thì phải chuyển sang bước làm sạch để chuẩn hóa đơn vị tính)
Trang 7Kết quả: Từ dữ liệu thô ban đầu chuyển thành dữ liệu có cấu trúc gồm các trường: Tên mặt hàng, quy cách, đơn vị tính của mặt hàng, giá
Làm sạch dữ liệu
Kiểm tra, xử lý các trường hợp thiếu thông tin về giá, đơn vị tính, hoặc thông tin không logic giữa đơn giá với đơn vị tính lượng, thì tạm thời loại bỏ những bản ghi này
Thực tế có bản ghi thu được không rõ về quy cách, đơn vị tính nhưng vẫn có giá (ví dụ trường hợp cá thu nhật 1kg, ba ba nguyên con, ) Hướng xử lý là tạm thời giữ lại
Kết quả: Từ 1300 bản ghi thông tin (dữ liệu thô) sau khi tiến hành xử lý dữ liệu còn lại 600 bản ghi thông tin các mặt hàng từ trang: thucphamnhanh
Phân nhóm các mặt hàng theo danh mục của rổ hàng hóa truyền thống:
Ý tưởng: Tách tên mặt hàng trong danh mục mặt hàng truyền thống của Vụ Thống kê Giá thành từng từ rồi so khớp với những từ trong tên mặt hàng của 600 bản ghi thông tin thu thập được
Thực hiện:
- Tách tên mặt hàng thành từng từ bằng Excel như sau: Chọn trường tên mặt hàng dùng chức năng Text to colum trong excel Chọn ở mục ký hiệu là dấu cách Kết quả tên các mặt hàng đã được tách ra thành từng từ (VD Gạo_tấm_xốp _lai)
- So khớp các mặt hàng từ cấp 1 chi tiết đến cấp 5: So khớp từ mặt hàng cấp 4: Số mặt hàng tìm được mã để so sánh với danh mục hàng hóa truyền thống là: 161/600
- So khớp các mặt hàng từ cấp 5 đến cấp 1: Số mặt hàng tìm được mã để so sánh với danh mục hàng hóa truyền thống là: 76/600
Khó khăn:
Trang 8Phát hiện một số mặt hàng bị khớp sai mã Do trong bảng danh sách từ khóa chưa có tên mặt hàng đó nên theo tìm kiếm tương đối của hàm vlookup, sẽ trả kết quả là một mã có tên mặt hàng gần giống như vậy Ví dụ: Bạc hà đánh cùng mã với ba rọi, chân gà đánh cùng mã với chả giò…
Để giải quyết vấn đề này, Viện Khoa học Thống kê đã lập ra một nhóm soát lại việc so khớp mã của các mặt hàng nhằm tìm ra các mặt hàng bị đánh mã nhầm
và bổ sung và bảng danh sách các từ khóa Ví dụ: Mặt hàng bạc hà cần được bổ sung vào bảng danh sách từ khóa và đánh mã vào mục Rau gia vị tươi, khô các loại
Hơn nữa, khó khăn lớn nhất nhất là hiện nay chưa tìm được công cụ phân nhóm tự động hoặc đồng loạt nhiều bản ghi một lúc Muốn làm được thì vẫn phải phân nhóm một cách thủ công
Ví dụ 2: Thử nghiệm ngày 3/12/2018 Trích xuất dữ liệu từ 3 website:
thucphamnhanh.com, adayroi.com, csfood.vn với tổng số 32122 mặt hàng
Quy trình thu thập dữ liệu tương tự thử nghiệm ngày 1/12/2018
Chuyển đổi dữ liệu thô thành dữ liệu có cấu trúc
Yêu cầu: Toàn bộ dữ liệu thu được lưu trên 1 file định dạng excel duy nhất (không
để mỗi file là dữ liệu của 1 website mà là dữ liệu của tất cả 44 website trên 1 file)
Kiểm tra, đánh giá dữ liệu (sau khi nhận được dữ liệu có cấu trúc)
Yêu cầu:
- Có đầy đủ các thông tin: tên website, tên mặt hàng, quy cách, đơn vị tính, giá của mặt hàng?
- Định dạng có thống nhất không? Đơn vị tính có phù hợp không?
- Khi sắp xếp tên mặt hàng theo thức tự abc thì phải theo đúng trật tự do thực tế, khi thực hiện lệnh sort thì vẫn có một số mặt hàng không sắp xếp theo đúng thứ
tự Nguyên nhân vì khối lượng dữ liệu sắp xếp quá lớn nên có trường hợp phần mềm excel thông thường thực hiện chưa đáp ứng được yêu cầu
Trang 9Làm sạch dữ liệu
Yêu cầu:
- Loại bỏ các bản ghi (mặt hàng) trùng nhau (bằng lệnh Remove Duplicates trong excel)
Ví dụ, tại trang adayroi nhóm Bigdata phát hiện có nhiều dòng thông tin bị trùng nhau (trùng hơn 1000 dòng), nguyên nhân do có nhiều người bán cùng bán mặt hàng đó, hoặc một người bán nhưng đăng lên nhiều tin
Tiêu chí của các mặt hàng trùng nhau: trùng nhau ở tất cả các tiêu chí: thu được từ cùng một website; tên mặt hàng giống nhau; quy cách phẩm cấp mặt hàng giống nhau; đơn vị tính của mặt hàng giống nhau; giá của mặt hàng bằng nhau
- Khi thực hiện trên excel, trường hợp nếu việc loại bỏ các mặt hàng trùng nhau không bị giới hạn bởi số bản ghi mỗi lần xóa hoặc bị giới hạn bởi số bản ghi mỗi một lần xóa nhưng cho phép thực hiện xóa nhiều lần thì vẫn giữ nguyên 1 file dữ liệu Trường hợp nếu việc loại bỏ các mặt hàng trùng nhau chỉ cho phép thực hiện xóa một lần duy nhất với số lượng bản ghi giới hạn tối đa bị xóa thì tách làm 2 file (lấy điểm cắt tên của mặt hàng nào đó) để xóa) và sau khi xóa xong thì nối lại 2 file này thành 1 file như ban đầu
- Loại bỏ các mặt hàng không phải mặt hàng tiêu dùng (mặt hàng mà người mua mua về để phục vụ sản xuất, hoặc mua về để mua đi bán lại, )
- Loại bỏ các mặt hàng không có giá
Một số phát sinh gặp phải:
Một số mặt hàng thu thập được từ 1 website bản chất là cùng một mặt hàng, chỉ khác nhau về khối lượng mặt hàng, nhưng giá thì tỷ lệ với khối lượng của mặt hàng Trong trường hợp này có xóa đi một mặt hàng hay không? Ví dụ: Tại trang adayroi có 2 bản ghi về 1 mặt hàng: Gạo lứt thơm Thái Dương túi 1kg có giá 24000 đồng và Gạo lứt thơm Thái Dương túi 2kg có giá 48000 đồng
Trang 10Nếu những bản ghi là cùng 1 mặt hàng nhưng khác nhau về tên gọi (do cách gọi của vùng miền: ví dụ như áo gối và vỏ gối, ngô và bắp, bát và chén, ) thì cân nhắc việc thay tên của một mặt hàng về tên của mặt hàng còn lại để có tên giống nhau (ví dụ replace tên áo gối thành vỏ gối, bắp thành ngô, )
Xem xét dữ liệu để ưu tiên xác định những nhóm mặt hàng có trong danh mục truyền thống để lọc trước
Xem xét dữ liệu để thấy những nhóm mặt hàng nào có số lượng nhiều để lọc trước nhằm giảm bớt số lượng các bản ghi của những lần lọc sau
Xem xét dữ liệu để xác định những mặt hàng nào trong cùng một nhóm nhưng lại
ở các vị trí khác nhau trong tập dữ liệu vì có tên mặt hàng bắt đầu bằng các chữ cái khác nhau (ví dụ bàn và bàn ủi hoặc máy tính để bàn và máy tính xách tay) để khi lọc có thể cắt toàn bộ các bản ghi cùng nhóm này, tránh phải thực hiện lọc nhiều lần mất thời gian
Lọc dữ liệu
Lọc dữ liệu: sử dụng lệnh Filter trong excel
Hạn chế: lệnh Filter dữ liệu bị giới hạn chỉ hiển thị tối đa tên của 10.000 bản ghi cùng một lúc nên phải thực hiện Filter nhiều lần, sau đó cắt toàn bộ các bản ghi
đã lọc được sang chỗ khác thì khi filter lần tiếp theo excel sẽ tự động đẩy các bản ghi bên dưới 10.000 bản ghi trước đó đã cắt để hiển thị tiếp)
Có nhiều mặt hàng chưa biết phân vào nhóm mặt hàng truyền thống nào Hiện tại, nhóm cố gắng tối đa lọc và phân các mặt hàng vào các nhóm mặt hàng cấp 5
và cấp 4 theo rổ hàng hóa truyền thống
Phân nhóm các mặt hàng theo danh mục của rổ hàng hóa truyền thống:
- Ưu tiên tách nhóm các mặt hàng có thể tách được tới cấp 5 trước (nếu không thì
sẽ tách tới cấp 4, rồi tới cấp 3) Ưu tiên tách thứ tự các mặt hàng theo thứ tự các nhóm mặt hàng theo danh mục truyền thống
- Nhìn nhanh dữ liệu, những mặt hàng có số lượng lớn (xuất hiện nhiều trong danh sách mặt hàng thu được) sẽ tách trước để giảm bớt khối lượng những lần