Truy vấn văn bản – Document Retrieval

book_search
book_search

Giả sử bạn đang đọc một bài viết nào đó, hệ thống truy vấn văn bản sẽ giúp bạn tìm kiếm những bài viết tương tự như bài viết của bạn đang đọc. Vậy làm sao ta có thể tính được độ tương tự giữa các văn bản để tìm kiếm trong vô số các tài liệu có sẵn, tỷ lệ giống nhau về nội dung của các văn bản là bao nhiêu?

Trong bài viết này, ta sẽ sử dụng tập văn bản liên quan đến những người nổi tiếng download từ wikipedia (file csv đã xử lý có thể download ở đây) để xây dựng hệ thống truy vấn văn bản dựa trên nội dung đang đọc.

Xem tiếp

Hệ thống recommend bài nhạc

song-recommendations
song-recommendations

Một trong những công nghệ giúp cho đời sống con người ngày càng dễ dàng hơn đó là recommender system. Recommender system giúp kết nối người dùng với sản phẩm mà họ tìm kiếm được thuận tiện và nhanh chóng hơn từ đó mang lại lợi thế cạnh tranh của sản phẩm so với các đối thủ khác. Bạn có thể bắt gặp hệ thống này ở các trang xem phim, nghe nhạc, mua bán, mạng xã hội, … Về cơ bản, bạn có thể áp dụng ngay kỹ thuật này vào hệ thống của bạn thông qua các hướng tiếp cận như: Popularity – liệt kê top các sản phẩm được nhiều người quan tâm nhất, Classification – dựa vào các chủ đề mà bạn cung cấp để lọc ra danh sách sản phẩm tương ứng. Tuy nhiên, các hướng tiếp cận này đều mang tính đại chúng, không nhắm vào một cá nhân cụ thể nào. Hơn nữa, không ai dễ dàng cung cấp thông tin cá nhân cho ứng dụng của bạn để có thể lọc thông tin phù hợp.

Do đó, trong bài viết này, tôi sẽ đi theo hướng tiếp cận Collaborative Filtering với hai phương pháp gồm Memory-Based Collaborative Filtering và Model-Based Collaborative filtering giúp trả lời hai câu hỏi “user nghe bài nhạc này thì sẽ có xu hướng nghe các bài như…” và “user có gu âm nhạc như bạn thì sẽ có xu hướng nghe các bài nhạc như…”. Trong đó, Model-Based sẽ sử dụng singular value decomposition (SVD) và Memory-Based sử dụng khoảng cách cosine để mô hình hóa hệ thống. Bạn có thể download dữ liệu từ đây Million Song Dataset Challenge.

Source code: Github.

Xem tiếp

Sentiment Analysis cơ bản

amazon-reviews.jpg
Sentiment analysis – hay phân tích tâm lý của đối tượng – là một chủ đề thách thức trong Machine Learning. Mọi người thể hiện cảm nhận của mình thông qua ngôn ngữ tự nhiên có bản chất nhập nhằng, mơ hồ đã gây không ít khó khăn cho việc xử lý cho máy tính hiểu. Chưa kể, họ sử dụng các cách chơi chữ, ẩn ý hay các kí hiệu như

:), :(, =)))

để giải bày cảm xúc của họ.

Trong bài viết này, tôi sẽ sử dụng tập dữ liệu Web data: Amazon Fine Foods reviews cho việc áp dụng kĩ thuật Sentiment analysis. Đây là tutorial cơ bản dành cho các bạn mới bắt đầu nghiên cứu vấn đề này. Ở đây, ta sẽ sử dụng hướng tiếp cận Bag of Words để chuyển đổi dữ liệu văn bản thành ma trận vector từ đó có thể đưa vào các mô hình phân lớp để học.

Source code: classification_algorithms.py

Xem tiếp

Python snippet: Linear regression

cartoon_guide_regression.png

Linear regression (Hồi quy tuyến tính) thường được ứng dụng vào dự đoán giá trị số thực khi cho trước dữ liệu đầu vào. Ví dụ một số ứng dụng của Linear regression:

  • Dự đoán mức lương sau khi ra trường của một người dựa vào các thông số như điểm trung bình khoá học, số lượng các hoạt động ngoại khoá đã tham gia, giới tính, …
  • Dự đoán giá chứng khoán ngày mai dựa vào lịch sử giá trước đó, các sự kiện xã hội, số lượng vốn đầu kỳ, …
  • Bao nhiêu người sẽ share bài viết của bạn trên facebook dựa trên số lượng bạn bè, số lượng bạn của bạn bè, độ phổ biến của hashtag, những bài viết trước đó, …
  • Điều chỉnh nhiệt độ phòng dựa trên thời gian trong ngày, nhiệt độ ngoài trời, ánh sáng trong phòng, …

Tiếp tục series Python snippet (Python snippet: Visualizing, Python snippet: Thu thập dữ liệu), tuần này tôi sẽ đưa vào một vài snippet liên quan đến linear regression áp dụng trên tập dữ liệu home_data để dự đoán giá nhà dựa trên một vài thuộc tính cơ bản như số lượng phòng ngủ, số lượng phòng tắm, điểm đánh giá, …

Lý thuyết: linear regression
Source code: data-science-works
Thư viện: matplotlib, pandas, scikit-learn

Xem tiếp

Python snippet: Thu thập dữ liệu

multiple-data-sources

Trước khi có thể làm việc với dữ liệu, việc đầu tiên bạn cần làm là thu thập chúng. Có rất nhiều nguồn dữ liệu khác nhau như web, APIs, databases, những định dạng file plain text (.csv, .tsv). Sau khi thu thập, ta có thể thực hiện vài động tác chuẩn hoá dữ liệu sao cho phù hợp với nhu cầu làm việc của mình nhất.

Tiếp tục series Python snippet (Python snippet: Visualizing), tuần này tôi sẽ đưa vào một vài snippet thường gặp trong quá trình thu thập dữ liệu.
Source code: data-science-works
Thư viện: csv, json, re, collections, requests, bs4, twython

Xem tiếp

Command line thường dùng

Linux is sexy.jpg

Trong quá trình phân tích dữ liệu, tôi thường làm việc trực tiếp trên môi trường UNIX. Nơi mà bạn chỉ có màn hình nền đen chữ trắng (terminal, command line) để tương tác với hệ thống (thu thập, quan sát, chỉnh sửa, chia sẻ dữ liệu). Lý do là vì bạn thường phải thuê server bên ngoài như Amazon và họ chỉ cung cấp cho bạn môi trường tương tác chính là từ dòng lệnh. Bài viết này xin tổng hợp lại những command line mà tôi thường dùng nhất để tiện cho các bạn mới nhập môn tham khảo và áp dụng.

Hy vọng sự linh hoạt của các dòng lệnh này có thể giúp bạn trở thành một nhà khoa học dữ liệu hiệu quả và năng suất hơn. Bạn sẽ học được cách kết hợp các công cụ dòng lệnh nhỏ nhưng mạnh mẽ này với nhau để nhanh chóng thu thập, khám phá và xây dựng mô hình dữ liệu của bạn.

Xem tiếp

Python snippet: Visualizing

matplotlib

Python snippet là series các bài viết tổng hợp lại những đoạn code hữu ích trong quá trình làm việc và nghiên cứu của tôi. Mục đích chủ yếu làm nơi tham khảo nhanh để tiết kiệm thời gian cài đặt và triển khai. Tôi sẽ bắt đầu với visualizing gồm các chart (biểu đồ) cơ bản thường hay dùng để phân tích dữ liệu.

Source code: data-science-works
Thư viện: matplotlib, numpy

Xem tiếp

Những chuyên gia bạn nên follow trong lĩnh vực Data Science

Những câu nói hay về Data Science

Tầm quan trọng của dữ liệu

Data vs information
Data vs information

“You can have data without information, but you cannot have information without data.”- Daniel Keys Moran, Computer programmer and science fiction author

Bạn có thể có dữ liệu mà không cần thông tin, nhưng bạn không thể có thông tin mà không có dữ liệu.

“Most of the world will make decisions by either guessing or using their gut. They will be either lucky or wrong.”- Suhail Doshi, CEO, Mixpanel

Hầu hết mọi người đưa ra những quyết định chỉ dựa vào phán đoán của mình. Làm như vậy họ chỉ nhận được một là thành công do may mắn hay hai là thất bại do sai lầm.

“It is a capital mistake to theorize before one has data.”- Arthur Conan Doyle, Author of Sherlock Holmes

Ta sẽ mắc nhiều sai lầm khi đưa ra giả thuyết trước khi được cung cấp thêm dữ liệu.

“We’re entering a new world in which data may be more important than software.”- Tim O’Reilly, Founder, O’Reilly Media

Chúng ta đang ở trong một thế giới mới mà ở đó dữ liệu quan trọng hơn cả phần mềm.

“Data is a precious thing and will last longer than the systems themselves.”- Tim Berners-Lee, father of the Worldwide Web

Dữ liệu là một thứ tài sản quý giá và sẽ tồn tại lâu hơn cả chính hệ thống của mình.

“It’s difficult to imagine the power that you’re going to have when so many different sorts of data are available.”- Tim Berners-Lee

Bạn sẽ khó hình dung được sức mạnh mà bạn sẽ có khi sở hữu đa dạng các loại dữ liệu ngoài kia.

“Web users ultimately want to get at data quickly and easily. They don’t care as much about attractive sites and pretty design.”- Tim Berners-Lee

Người dùng Web thật sự cần dữ liệu càng nhanh càng đơn giản càng tốt. Họ sẽ không quan tâm nhiều đến vẻ hào nhoáng và vẻ đẹp của giao diện đâu.

“Data, I think, is one of the most powerful mechanisms for telling stories. I take a huge pile of data and I try to get it to tell stories.” – Steven Levitt, Co-author of Freakonomics

Dữ liệu là một công cụ mạnh mẽ được dùng để kể các câu chuyện. Tôi sử dụng nhiều biểu đồ khác nhau để kể nên các câu chuyện mà mình muốn chia sẻ.

“Before Google, and long before Facebook, Bezos had realized that the greatest value of an online company lay in the consumer data it collected.” – George Packer, author for the New Yorker

Trước khi có Google và Facebook, Bezos đã nhận ra rằng giá trị thật sự của các công ty online là dựa vào dữ liệu khách hàng mà họ thu thập được.

“Our ability to do great things with data will make a real difference in every aspect of our lives.” – Jennifer Pahlka, Founder and Executive Director for Code for America

Khả năng làm việc với dữ liệu sẽ mang lại những thay đổi hữu ích ở mọi mặt của cuộc sống chúng ta.

“Some of the best theorizing comes after collecting data because then you become aware of another reality.” – Robert J. Shiller, Winner of the Nobel Prize in Economics

Nhiều lý thuyết hay được phát minh từ việc thu thập dữ liệu. Vì trong quá trình này, bạn đã nhận ra được các chân lý mới.

“Without big data analytics, companies are blind and deaf, wandering out onto the Web like deer on a freeway.” – Geoffrey Moore, Partner at MDV

Nếu không phân tích được Big Data, các công ty cũng như những người khiếm thị và khiếm thính, đi vào khu rừng Web như những chú hưu ngây thơ.

Đối xử với dữ liệu

Torture the data
Torture the data

“Torture the data, and it will confess to anything.” – Ronald Coase, winner of the Nobel Prize in Economics

Hãy “tra tấn” dữ liệu và nó sẽ thú nhận với bạn tất cả.

“Data scientists are involved with gathering data, massaging it into a tractable form, making it tell its story, and presenting that story to others.” – Mike Loukides, VP, O’Reilly Media

Công việc của Data scientists liên quan đến thu thập dữ liệu, ghi chú lại các thông tin để dễ theo dõi, xây dựng câu chuyện trên các số liệu này, và trình bày câu chuyện đó cho mọi người.

“I think you can have a ridiculously enormous and complex data set, but if you have the right tools and methodology then it’s not a problem.” – Aaron Koblin, Entrepreneur in data and digital technologies

Nếu bạn có dữ liệu kỳ quặc, lớn và phức tạp nhưng bạn có những công cụ và phương pháp đúng đắn, thì mọi việc coi như xong.

“When human judgment and big data intersect there are some funny things that happen.”- Nate Silver, Founder of FiveThirtyEight

Khi phán xét của con người và Big Data gặp nhau thì sẽ có nhiều điều thú vị xảy ra.

Những điều không ngờ tới

Forensics and guess work
Forensics and guess work

“The problem with data is that it says a lot, but it also says nothing. ‘Big data’ is terrific, but it’s usually thin. To understand why something is happening, we have to engage in both forensics and guess work.”- Sendhil Mullainathan, Professor of economics, Harvard

Vấn đề của dữ liệu là nó sẽ cho ta biết quá nhiều thứ và cũng không cho ta biết gì cả. Để hiểu được điều gì đang diễn ra, bạn cần đóng vai như một người pháp y và nhà phỏng đoán.

“Big Data is like teenage sex: everyone talks about it, nobody really knows how to do it, everyone thinks everyone else is doing it, so everyone claims they are doing it.”- Dan Ariely, Author of Predictably Irrational

Big Data giống như sex ở tuổi teen: mọi người nói về nó, không ai thật sự biết phải làm như thế nào, mọi người nghĩ là mọi người đang thực hiện chúng, nên mọi người cho rằng họ đang làm điều đó.

Dữ liệu và quyền riêng tư

Eagle eye
Eagle eye

“Everything we do in the digital realm – from surfing the Web to sending an e-mail to conducting a credit card transaction to, yes, making a phone call – creates a data trail. And if that trail exists, chances are someone is using it – or will be soon enough.”- Douglas Rushkoff, Author of Throwing Rocks at the Google Bus

Những việc chúng ta làm liên quan đến kĩ thuật số – lướt web, gửi mail, giao dịch thẻ tín dụng, gọi điện thoại – đều tạo ra lưu vết dữ liệu. Nếu lưu vết này tồn tại, thì sẽ có ai đó đang sử dụng chúng hoặc không sớm thì muộn cũng sẽ sử dụng chúng.

“You happily give Facebook terabytes of structured data about yourself, content with the implicit tradeoff that Facebook is going to give you a social service that makes your life better.”- John Battelle, Founder of Wired Magazine

Bạn đưa hàng terabytes các thông tin về cá nhân cho Facebook, đổi lại Facebook sẽ cung cấp những dịch vụ giúp cho cuộc sống của bạn thêm thú vị hơn.

“It’s so cheap to store all data. It’s cheaper to keep it than to delete it. And that means people will change their behavior because they know anything they say online can be used against them in the future.”- Mikko Hypponen, Security and privacy expert

Việc lưu trữ dữ liệu rẻ hơn việc xoá dữ liệu. Nghĩa là mọi thông tin hiện tại sẽ được sử dụng để chống lại chúng ta trong nay mai.

“The price of freedom is eternal vigilance. Don’t store unnecessary data, keep an eye on what’s happening, and don’t take unnecessary risks.” — Chris Bell, US Congressman

Cái giá của sự tự do là phải luôn cảnh giác. Đừng lưu trữ những dữ liệu không cần thiết, hãy quan sát những gì đang diễn ra và đừng dính vào những rủi ro không cần thiết.

Những thay đổi

Sexy jobs
Sexy jobs

“I keep saying that the sexy job in the next 10 years will be statisticians, and I’m not kidding.”- Hal Varian, Chief economist, Google

Tôi luôn nói rằng nghề nghiệp “gợi cảm” nhất trong 10 năm tới sẽ là các nhà thống kê, và tôi không đùa đâu.

“There’s a digital revolution taking place both in and out of government in favor of open-sourced data, innovation, and collaboration.”- Kathleen Sebelius, Former United States Secretary of Health and Human Services

Có một cuộc cách mạng kĩ thuật số diễn ra ở trong và ngoài chính phủ liên quan đến mã nguồn mở, đổi mới và hợp tác.

“We should teach the students, as well as executives, how to conduct experiments, how to examine data, and how to use these tools to make better decisions.”- Dan Ariely

Tôi sẽ dạy cho những sinh viên, cũng như những nhà điều hành, cách tiến hành các thực nghiệm, làm sao để kiểm tra dữ liệu, làm sao sử dụng những công cụ này để đưa ra các quyết định tốt hơn.

“The world is one big data problem.”- Andrew McAfee, MIT scientist

Thế giới là một bài toán Big Data.

Nguồn tham khảo

41 Shareable Data Quotes That Will Change How You Think About Data
A Beginner’s Guide to Getting Your First Data Science Job

Amazon Kinesis Streams là gì

AWS Kinesis
AWS Kinesis

Thông thường, khi thiết kế một hệ thống streaming, ta nghĩ ngay đến bộ công cụ (Kafka, Storm, Redis) để nhận, xử lý, và lưu trữ dữ liệu. Tuy nhiên, khi sử dụng Kafka (một message queue giúp đảm bảo lượng dữ liệu khổng lồ ập đến không bị tắc nghẽn) bạn phải nghiên cứu khá nhiều công nghệ cũng như hiệu chỉnh các thiết lập, thậm chí phải viết code để tối ưu hoá hệ thống của mình. Tương tự như Kafka, Kinesis mặc dù có throughput (tốc độ đọc/ghi) không nhanh bằng nhưng lại giảm đáng kể công việc cho admin system cũng như các developer trong khâu bắn (put) dữ liệu và đọc dữ liệu từ stream.

Trong bài viết này, tôi sẽ trình bày một số thách thức trong xử lý stream cũng như các hướng tiếp cận để giải quyết. Đồng thời cũng giới thiệu sơ qua Kinesis, các tính năng và các thông số cơ bản của hệ thống cùng với các lệnh tương tác với Kinesis stream.

Xem tiếp