Tôi là Duyệt

Propel - Machine learning for Javascript

Propel cung cấp cơ chế GPU-backed giống như thư viện Numpy trên Python, propel có thể cung cấp 1 kiến trúc rất mạnh cho các thuật toán Machine learning trên Javascript, như hỗ trợ tính toán rất mạnh và nhanh, như các tính toán trên ma trận, list, plot, ...

Với ưu điểm trên Javascript, Propel có thể chạy ở mọi nơi (từ browser đến natively trên Node).
Cả 2 môi trường trên thư viện đều có thể sử dụng sức mạnh của GPU. Trên trình duyệt, thư viện sử dụng WebGL thông qua deeplearn.js, còn trên Node nó sử dụng TensorFlow's C API.


Phân lớp SVM với Word2vec

Trong chuỗi bài viết này mình sử sử dụng thuật toán SVM để phân lớp sentiment (cảm xúc) cho văn bản, kết hợp với ứng dụng Word2vec để biểu diễn các text dưới dạng vector.

Bằng cách sử dụng 1 tập văn bản đã được gán nhãn sẵn. Mỗi câu được vector hóa sử dụng Word2vec (xem lại Kiều2vec). Được minh họa như hình dưới đây:



Duckling - phân tích văn bản sang dữ liệu có cấu trúc

Duckling là một thư viện của Haskell, phát triển bởi Facebook, rất hay để phân tích (parses) dữ liệu text sang dạng có cấu trúc (structured data). Công cụ này rất hữu ích trong các ứng dụng phân tích văn bản trong NLP và nhất là lĩnh vực chatbot.

Colaboratory - phiên bản custom của Jupyter Notebook từ Google

Colaboratory là phiên bản Jupyter Notebook được Google update lại, nhiều chức năng hay hơn nhất là khả năng cộng tác tương tự Google Docs. Code được lưu trong Google Drive, sử dụng miễn phí backend máy ảo của Google.

Doc2vec trong Sentiment Analysis

Sự thành công của Word2vec đã được chứng minh trong rất nhiều công trình NLP.

Nhắc lại về Word2vec, nó sử dụng 1 tập copus, qua một mạng Neural biểu diễn các word thành các vector, các vector giữ lại được tính chất ngữ nghĩa. Tức các từ mang ý nghĩa similar với nhau thì gần nhau trong không gian vector. Trong NLP, đây một trong những phương thức của word embedding. Word2vec hiện nay được sử dụng hết sức rộng rãi.

Doc2vec, ngoài từ (word), ta còn có thể biểu diễn các câu (sentences) thậm chí 1 đoạn văn bản (document). Khi đó, bạn có thể dễ dàng vector hóa cả một đoạn văn bản thành một vector có số chiều cố định và nhỏ, từ đó có thể chạy bất cứ thuật toán classification cơ bản nào trên các vector đó.

Ảnh: https://arxiv.org/pdf/1405.4053.pdf
Trong bài này, mình sẽ giới thiệu rất cơ bản basic concept để các bạn có thể hình dung việc ứng dụng Doc2vec trong Sentiment Analysis như thế nào.

Python - Nhận dạng xe hơi với OpenCV

Trong bài này, mình sẽ hướng dẫn sử dụng OpenCV để nhận diện xe hơi trong ảnh (video frame) với đặc trưng haar, sử dụng file mô hình đã được trained.

Bài viết chỉ giúp hình dung code trên Opencv chứ không đi sâu vào thuật toán. Trong bài này mình sẽ hướng dẫn cách build/install opencv trên Ubuntu, một chương trình đơn giản detect 1 vùng ảnh, phân loại đó có phải xe hơi hay không và vẽ 1 hình chữ nhật đánh dấu.

Tolks.io - Put your story up on the Internet

[Fun] project tolks.io này giúp ta tạo một đoạn hội thoại ngắn giữa các nhân vật, trông rất ngộ nghĩnh. Trang này được viết bằng Vue.js



Homepage: https://tolks.io/

Machine Learning is Fun! (Vietnamese version)

Chuỗi bài viết "Machine Learning is Fun!" này mình lược dịch từ bài viết gốc của tác giả ageitgey. Mình tin chắc có rất nhiều bạn đã và đang quan tâm đến Machine Learning hiện nay. "Machine Learning is Fun!" chắc chắn sẽ mang cho bạn đến cho bạn cái nhìn từ cơ bản đến chuyên sâu nhất về thế giới Machine Learning.

Phân lớp văn bản

Trong Machine Learning và NLP, phân lớp văn bản là một bài toán xử lí văn bản cổ điển, gán các nhãn phân loại lên một văn bản mới dựa trên mức độ tương tự của văn bản đó so với các văn bản đã được gán nhãn trong tập huấn luyện.

Các ứng dụng của phân lớp văn bản thường rất đa dạng như: lọc email spam, phân tích cảm xúc (sentiment analysis), phân loại tin tức, ...

Sau mình sẽ giới thiệu vài nét rất tổng quát các bước để có thể phân lớp văn bản, một số kỹ thuật thường sử dụng, các thư viện, đưa ra từ khóa để tự tìm hiểu thêm và chi tiết ở các bài viết khác.

natural - NLTK cho Javascript

"Natural" được ví như nltk cho Node. natural có nhiều chức năng xử lý ngôn ngữ tự nhiên như: Tokenizing, stemming, classification, phonetics, tf-idf, WordNet, string similarity, ...

Nếu bạn là người yêu thích cả NLP và Javascript/Node, thì đây là một thư viện thú vị nên thử qua.

gpu.js - Tăng tốc Javascript với GPU

Mình lướt github và vô tình thấy thư viện gpu.js này. gpu.js tự động compile mã Javascript thành một ngôn ngữ ánh xạ khác, và chạy trên GPU nhờ vào WebGL API. Nếu máy trình duyệt không có GPU, mã JS vẫn được thực thi bình thường.

URLs là UI

URLs are UI - mình đã nghe cái này nhiều và từ lâu rồi. Điều này hết sức rõ ràng và mình thấy hoàn toàn đúng.


Như Jakob Nielsen nói năm 1999, hay Tim Berners-Lee, URL góp phần tăng trải nghiệm người dùng, là một phần của UI, thường có tính chất như:
  • domain name dễ nhớ và dễ đọc
  • URL ngắn
  • URL dễ gõ
  • thể hiện được cấu trúc site
  • không bị thay đổi theo thời gian
  • ...

Cài Apache Spark standalone bản pre-built

Mình nhận được nhiều phản hồi từ bài viết BigData - Cài đặt Apache Spark trên Ubuntu 14.04 rằng sao cài khó và phức tạp thế. Thực ra bài viết đó mình hướng dẫn cách build và install từ source.

Thực tế, Spark còn hỗ trợ cho ta nhiều phiên bản pre-built cùng với Hadoop. Pre-build tức Spark đã được build sẵn và chỉ cần sử dụng thôi. Cách làm như sau.