Bài học trong thang máy

Hôm nay đi thang máy
Trong tất cả mọi người
Có một ông lớn tuổi
Cầm điếu thuốc hút chơi.

Tôi thì tôi không nói
Cũng chẳng ai nói gì
Bỗng một anh lên tiếng
“Bác nên tắt thuốc đi.”

Tắt vì trong thang máy
Ô xi ít khói nhiều
Mọi người thì khó chịu
Còn mình bác lại phiêu.

Bác kia không thay đổi
Tới tầng lăm bác ra
Để lại trong thang máy.
Lũ người, khói sì gà.

“Bác kia Founder đấy
Của cái chốn nơi đây
Của công ty to vật
Của cái thang máy này.”

Tôi có nói như vậy
Và các chị đồng tình.
Nhưng anh kia bật lại
Người như vậy thì khinh.

“Dù thủ tướng xuất hiện
Dù ông giời dáng trần
Đã ở nơi công cộng
Vì mọi người phải tuân.”

Tôi bỗng nhiên xấu hổ
Cách ứng xử của mình
Không cần thì lại nói,
Lúc cần lại lặng thinh.

18 Tam Trinh, Hà Nội, 04/02/2013

Note: Tuần vừa rồi được biết và tìm hiểu thơ thẩn/cách sống của thầy Thái Bá Tân mình cũng tập tọe học làm những bài thơ lăm chữ theo lối khẩu ngôn🙂

Posted in Cảm nhận, Ngoài lề, Trải nghiệm, Xã hội | 3 phản hồi

Cách đọc tin tức Việt Nam một cách khoa học về thời gian

Theo báo cáo của WeAreSocial  tháng  10 – 2012 về tình hình sử dụng internet của Việt Nam thì thấy rằng tỉ lệ người sử dụng internet để đọc tin tức là chiếm phần đa số tới 95% của tổng số ~31 triệu người.
Bài blog đưa ra các phương thức tiếp cận tin tức trực tuyến từ mất nhiều thời gian nhất tới sử dụng khoa học về thời gian nhất. Dĩ nhiên mỗi phương thức tiếp cận phù hợp với từng bạn hoặc sở thích thói quen. Tuy nhiên cần so sánh giữa các phương thức về phương diện thời gian thì rõ ràng cách tiếp cận cuối cùng tiết kiệm thời gian và tiền bạc. Tính toán vui nhé: Nếu tất cả mọi người sử internet Việt Nam đang sử dụng 2 giờ để đọc toàn bộ tin tức, khi sử dụng phương thức mới mất 20 phút thì thời gian tiết kiệm được trong một ngày là (2*60-20)*31.000.000*95% = 2945.000.000 phút = 2.045.138,89 ngày.
Bài blog theo thời gian cũng sẽ lạc hậu, do vậy nếu bạn có bổ sung thông tin gì xin cứ viết comment ở bài viết. Tôi sẽ bổ sung nếu thấy hợp lý hoặc nhiều người thất hợp lý.

Cách tiếp cận tin tức theo phương thức truyền thống.

Hình ảnh site Tuần Việt Nam ngày 16/12/2012

Hình ảnh site Tuần Việt Nam ngày 16/12/2012

Gọi là truyền thống nhưng thực sự phương thức đọc tin này cũng chỉ diễn ra cách đây hơn chục năm khi vnexpress, tuanvietnam(dantri sau này) và vietnamnet ra đời. Nội dung của phương thức này là bạn vào từng trang tin tức mà bạn biết, bạn quan tâm, bạn yêu thích và theo dõi tất cả các bài viết của họ. Ưu điểm là bạn được tiếp cận tin tức nóng hổi mới nhất, các chủ đề nóng được cập nhật thường xuyên nhất từ những tờ báo mà bạn cho là uy tín nhất. Nhược điểm là rất tốn thời gian với những người có quỹ thời gian eo hẹp. Nếu bạn là người thích theo phương thức này thì nên chọn lọc các tờ báo tinh túy để đọc thay vì đọc xô bồ kiểu cướp, giết, hiếp…

Cách tiếp cận tin tức theo phương thức sử dụng công cụ để thu thập tin tức.

Hình ảnh site Google News ngày 16/12/2012

Hình ảnh site Google News ngày 16/12/2012

Các công cụ thu thập tin tức theo từ ngữ chuyên môn gọi là Crawler. Các hệ thống này thu thập tin tức từ tất cả các site tin tức Việt Nam( hoặc cũng có thể từ một vài site do bạn cá nhân hóa hệ thống) để trình diễn cho bạn. Trong quá trình trình diễn tin tức hệ thống phân cụm theo từng chủ đề cho bạn dễ theo dõi. Ưu điểm thì khỏi nói, bạn có thể bao quát được toàn bộ tin tức không chỉ những site bạn quan tâm mà có thể toàn bộ tin tức Việt Nam lại mất ít thời gian. Cách sử dụng cũng đơn giản tương tự như bạn sử dụng một trang web tin tức nên phù hợp với tất cả mọi người.
Ví dụ điển hình cho phương thức này là các website: baomoi.com, news.google.com.vn, news.go.vn,…
Trong đó news.google.com.vn về mặt công nghệ khủng nhất nhưng họ ko lưu bản tạm tin tức trên site của họ nên rất bất cập. baomoi.com thì lưu bản tạm tin tức trên site của họ, hiện tại baomoi.com cũng là mô hình thành công nhất về thu thập tin tức tiếng Việt, nhưng đến lúc nào đó vấn đề bản quyền làm chặt thì việc để bản tạm tin tức trên hệ thống baomoi là ko phù hợp  hoặc phải có giải pháp nửa vời như việc bảo vệ bản quyền chia sẻ nhạc trực tuyến( tải về thì thu phí, nghe chất lượng vừa phải thì không thu phí).

Cách tiếp cận sử dụng mạng xã hội.

Hình ảnh site Link Hay(linkhay.com) ngày 16/12/2012

Hình ảnh site Link Hay(linkhay.com) ngày 16/12/2012

Hình ảnh Twitter ngày 16/12/2012

Hình ảnh Twitter ngày 16/12/2012

Đây là cách tiếp cận tin tức thông qua việc chia sẻ tin tức từ những người có mối quan hệ nào đó với bạn. 3.1 Nếu mối quan hệ đó là bạn bè thân thích thì tiêu biểu là facebook.3.2 Nếu mối quan hệ bạn bè đó là những người có cùng sở thích chém gió tin tức thì hệ thống tiêu biểu là linkhay. 3.3  Nếu mối quan hệ giữa bạn và nguồn cung cấp tin tức là chủ sở hữu của tin tức thì hệ thống tiêu biểu là facebook, twitter. Có lẽ cách tiếp cận này phù hợp với những bạn thích chém gió comment(bình luận) trên mạng, và cũng khoa học trong việc sử dụng thời gian cho việc cập nhật tin tức.
Cá nhân tôi thì đánh giá phương thức 3.3 là có giá trị nhất. Tôi đã “theo đuôi” anh MC Phan Anh, anh nghệ sĩ hài Xuân Bắc trên Facebook. Những thông  tin mà cá nhân mà các anh cung cấp có lẽ còn nhanh hơn các báo chính thống rất nhiều. Thi thoảng cũng cho các anh một vài nhát “Like”. Trên cộng đồng thế giới nói chung thì twitter mới là kẻ đi đầu trong phương thức này. Tuy nhiên sau facebook thấy ngon ăn mới bổ sung tính năng “subscribe – theo đuôi” và cũng là lúc Facebook bắt đầu nổi ở Việt Nam nên với tin tức tiếng Việt thì Facebook vẫn là đại diện tiêu biểu cho phương thức này.

Sử dụng công cụ để nhận tin tức được quan tâm.

Giao diện google reader với nguồn từ tinhte.vn, tuanvietnam.net, gocnhinalan.com

Giao diện google reader với nguồn từ tinhte.vn, tuanvietnam.net, gocnhinalan.com

Tính năng RSS Feeder của Firefox

Tính năng RSS Feeder của Firefox

Phương thức này sử dụng một công cụ đọc nguồn RSS từ các trang tin tức tiếng Việt. Công cụ đọc RSS thì rất nhiều; phổ biến nhất như tính năng RSS feeder trong FireFox, Google Reader. Đây là phương thức khá cổ điển bắt đầu xuất hiện từ năm 1999 ( theo Wikipedia) nhưng người dùng thông thường ít để ý mặc dù site tin tức lớn nào cũng cung cấp phương thức này.
Đây là phương thức cũ kỹ nhưng cá nhân tôi vẫn thấy nó khoa học nhất về phương diện sử dụng thời gian để theo dõi tin tức. Cách tiếp cận tin tức này cũng phù hợp với người dùng có không gian theo dõi chật trội, có nhiều thiết bị khác nhau cần sử dụng chung một công cụ.

Sử dụng lai ghép giữa các phương thức.

Không một phương thức nào đúng đắn trong mọi tình huống ngay cả phương thức này😀. Trong quá trình sử dụng bạn phải mềm dẻo áp dụng các phương thức để làm sao đỡ mất thời gian công sức mà vẫn thu thập đầy đủ thông tin tin tức Việt Nam. Cá nhân tôi thường sử dụng kết hợp Google Reader với một trong các phương thức còn lại. Hi vọng đó cũng là một gợi ý có giá trị với bạn.

Tác giả: Aladeck.wordpress.com

Nguồn thông tin:
Thông tin thống kê người dùng Việt Nam:
http://nhipsongso.tuoitre.vn/Nhip-song-so/516689/308-trieu-nguoi-Viet-Nam-su-dung-Internet.html
Facebook bổ sung tính năng subscribe:
http://www.tinhte.vn/threads/847119/
Các bức ảnh đại diện được chụp vào sáng Chủ Nhật 16/12/2012. Một Chủ Nhật rỗi rãi

Posted in Ứng dụng văn phòng, Ngoài lề, Trải nghiệm | Tagged , , , , , , | Để lại bình luận

Sử dụng Dismax trong Solr 1.4.x, 3.x

1. Giới thiệu

DisMaxRequestHandler(thường được gọi ngắn gọn là Dismax) được thiết kế để xử lý các câu truy vấn đơn giản( không bao gồm các ký tự đặc biệt của Solr) mà người dùng cung cấp sau đó tìm kiếm các đơn vị từ(term) trên những trường(field) xác định với trọng số(boost) khác nhau. Thêm nữa hệ thống này còn giúp thay đổi điểm trả về dựa trên những quy tắc đặc thù cho từng use-case cụ thể.

Solr Lucene

Solr Lucene

2. Cách sử dụng

Để sử dụng có 2 cách khai báo tham số
qt=dismax sẽ sử dụng các tham số phụ khai báo trong file Solr config
defType=dismax sẽ sử dụng tham số truyền vào trên parameter của Solr
Cá nhân tôi hay sử dụng qt=dismax hơn

3. Các tham số dành cho cho dismax

q.alt

Định nghĩa câu truy vấn được sử dụng trong trường hợp câu truy vấn để trống hoặc không được chỉ ra trong tham số gửi lên server.

qf(query fields)

Danh sách các trường và các trọng số sử dụng trong các trường này trong quá trình phân tích câu truy vấn mà người dùng cung cấp.  Ví dụ sử dụng fieldOne^2.3 fieldTwo fieldThree^0.4. Chỉ ra rằng trường fieldOne có trọng số là 2.3, trường fieldTwo có trọng số mặc định là 1, trường fieldThree có trọng số là 0.4.  tức là trong trường hợp nếu nội dung câu truy vấn xuất hiện ở 3 trường thì các tài liệu có nội dung trên fieldOne quan trọng hơn tài liệu có nội dung trên fieldTwo và kém quan trọng nhất là tài liệu có nội dung trên fieldThree
Ví dụ định nghĩa qf trong Solr config:
<str name=”qf”>        CategoryName^6.0 Title^1.0     </str>

mm(Minimum ‘Should’ Match):

Trong Solr/Lucene có 3 kiểu mệnh đề là: “phải xuất hiện”, “không được xuất hiện”, và “có thể xuất hiện”(should match). Mặc định khi cung cấp một câu truy vấn Solr sẽ xử lý dạng “có thể xuất hiện” tùy thuộc vào cấu hình trong Solr config. Hoặc cũng có thể cung cấp ký tự đặc biệt để xác định đâu là mệnh đề “không được xuất hiện” đâu là mệnh đề phải xuất hiện. Khi xử lý với  mệnh đề “có thể xuất hiện” thì option “mm” sẽ chỉ ra chính xác số lượng nhỏ nhất các mệnh đề phải xuất hiện( must match).  Dưới đây là một vài ví dụ cài đặt.
– Ít nhất có 2 mệnh đề trong câu truy vấn phải xuất hiện trong tài liệu tìm được, mm=2( hoặc trong define trong Solr Config <str name=”mm”>1</str>)
– Ít nhất 75% mệnh đề phải xuất hiện, 75%
– Nếu từ 1 mệnh đề tới 2 mệnh đề thì bắt buộc phải xuất hiện tất cả. nếu từ 3 mệnh đề trở lên thì ít nhất 75% mệnh phải xuất hiện, 2<-25%
– Nếu từ 1 đến 2 mệnh đề thì bắt buộc phải xuất hiện tất cả. Nếu từ 3 mệnh đề tới 5 mệnh đề(gọi là x mệnh đề) thì x-1 mệnh đề bắt buộc phải xuất hiện. Nhiều hơn 5 mệnh đề thì ít nhất 80% mệnh đề xuất hiện.

Để rõ ràng hơn mọi người có thể tham khảo  quy tắc sử dụng cú pháp trong phần của Lucene.
http://lucene.apache.org/solr/api/org/apache/solr/util/doc-files/min-should-match.html
Nhưng có 2 điểm trái ngược giữa link trên và link
http://wiki.apache.org/solr/DisMaxQParserPlugin
Là:
1. 75% và -25%  ở Solr coi là tương đương, nhưng trong Lucene thì không phải lúc nào cũng là tương đương, do quy tắc làm tròn số khác nhau.
2. Ví dụ cuối trong Lucene khi giải thích 2<-25% 9<-3 có vẻ không hợp lý lắm

pf( Phrase Fields)

Trong danh sách trả về các document, thì tham số “pf”giúp “tăng cường trọng số” boosting cho những tài liệu nào có sự xuất hiện cả câu truy vấn trong một trường field nhất định. Định dạng của cấu hình này tương đương với định dạng tham số qf
<str name=”pf”>   CategoryName^2.0 Title^6.0     </str>
Ý nghĩ của cấu hình này như sau, với tài liệu có “toàn bộ” nội dung câu truy vấn tồn tại trong trường Title thì nhân điểm của nó lên 6.0, với tài liệu có “toàn bộ” nội dung câu truy vấn tồn tại trong CategoryName thì sẽ nhân điểm của nó lên với 2.0

ps(Pharse Slop)

Chỉ ra tham số Slop bổ trợ cho tham số pf (phrase fields).
Khái niệm này phụ thuộc vào khái niệm slop trong phrase query, Slop sẽ xác định số lượng lớn nhất các đơn vị tự (term) xuất hiện giữa 2 term của một câu truy vấn CÂU. Ví dụ với câu truy vấn “anh em”(có ngoặc kép) nếu slop xác định bằng 0 thì chỉ những văn bản có cụm từ “anh em” mới trả về. Nếu slop =1 nghĩa là văn bản chứa “anh em” hoặc “anh yêu em” hoặc “anh và em” đều thỏa mãn, còn văn bản chứa cụm từ “anh không yêu em” không phù hợp. trong trường hợp slop=2 thì các tài liệu trên đều phù hợp.

qs(Query Slop)

Định nghĩa tham số slop bổ trợ cho câu truy vấn.
Mọi người sẽ thấy conflict giữa 2 tham số này, nhưng không phải thế. qs sử dụng cho quá trình tìm kiếm tài liệu và áp dụng cho câu truy vấn chứa các mệnh đề là phrase query. Trong khi đó ps áp dụng cho quá trình boosting tài liệu(sau khi đã tìm thấy tài liệu rồi) và áp dụng cho tham số pf trình bày ở trên.

tie

Khi một đơn vị từ term được đối sánh đối với các trường khác nhau của cùng một văn bản thì có thể có nhiều trường chứa term này với các điểm khác nhau, mặc định của hệ thống Solr/Lucene sẽ sử dụng score lớn nhất trong các score để làm điểm đại diện để tính điểm cho tài liệu.
Tham số tie sẽ giúp điểm cuối cùng sẽ không phải là điểm lớn nhất mà sẽ bao gồm điểm cả các trường khác gộp lại
Max score + tie(điểm trên trường 1+điểm trên trường 2+…)

Nếu tie=0 thì trở về phương pháp tính điểm mặc định của Solr/Lucene, nếu tie=1 thì điểm sẽ là điểm tổng của các trường tìm thấy. Thực nghiệm người ta sử dụng 0.1

bq( Boost Query)

Là một câu query được thêm vào để thay đổi điểm trả về theo một chiều hướng nhất định. Mặc định hệ thống sẽ thêm câu truy vấn phụ này vào câu truy vấn chính rồi truyền xuống phía dưới.

bf(Boost Function)

Là một Function thêm vào câu truy vấn để làm thay đổi điểm của tài liệu trả về. Mọi function được hỗ trợ  bởi Solr đều có thể sử dụng được kèm theo một trọng số tương ứng.

Tham khảo http://wiki.apache.org/solr/FunctionQuery/ để biết rõ hơn về function query

Tham khảo tài liệu tiếng Anh
http://wiki.apache.org/solr/DisMaxRequestHandler
http://wiki.apache.org/solr/DisMaxQParserPlugin
http://lucene.apache.org/solr/api/org/apache/solr/util/doc-files/min-should-match.html

Nguồn: http://www.aladeck.wordpress.com

Posted in Phần mềm nguồn mở, Search Engine | Tagged , , , , | Để lại bình luận

Các thách thức kỹ thuật khi xây dựng công cụ tìm kiếm tiếng Việt

Sau nhiều năm sử dụng các công cụ tìm kiếm trên mạng, đồng thời hơn một năm sử dụng mã nguồn mở Solr-Lucene cho mục đích tìm kiếm dữ liệu tác giả xin tổng kết các thách thức kỹ thuật gặp phải khi xây dựng một công cụ tìm kiếm tiếng Việt.

Hình ảnh về các search engine sưu tầm trên mạng

Hiện tại công cụ tìm kiếm tiếng Việt vẫn chưa gặt hái được thành công như Bamboo, Xalo, Socbay,… trong khi đó thì công nghệ tìm kiếm của các ông lớn như Google, Bing đang phát triển mạnh mẽ. Tuy nhiên không phải là không còn những “kẽ hở” để cho công cụ tìm kiếm trong nước phát triển, ví dụ như tìm kiếm theo chiều dọc, hay tìm kiếm thông minh, trên các nền tảng ngoài máy tính…
Cơ hội sử dụng lại/tham khảo mã nguồn mở cũng rất lớn, trong bài viết này tác giả sẽ đề cập đến một thư viện mã nguồn mở rất nổi tiếng là Lucene và một ví dụ thành công là Google Search

1. Đặc thù ngôn ngữ tiếng Việt.

Đặc điểm ngôn ngữ tiếng Anh(một ngôn ngữ phổ thông trên internet) và các ngôn ngữ tương tự là các từ có nghĩa cách nhau bằng một khoảng trắng còn đối với tiếng Việt thì không phải hoàn toàn thế( ví dụ từ ‘ví dụ’, ‘du dương’,… nếu cắt bằng khoảng trắng thì ra các từ đơn vô nghĩa( không biểu hiện nghĩa ban đầu của từ ghép). Như vậy việc xác định từ có nghĩa bằng khoảng trắng để có một đơn vị từ(term) phụ vụ cho mục đích tìm kiếm đối với tiếng Việt là không có giá trị.
Cũng có các công trình nghiên cứu về việc tách từ cho tiếng Việt như vntokenizer của ông Lê Hồng Phương nhưng do tính chất đa nghĩa của câu tiếng Việt nên không phải đoạn văn bản nào cũng có thể tách từ một cách chuẩn xác( ví dụ cụm từ ‘con ngựa đá con ngựa đá’ trong từng hoàn cảnh có ý nghĩa khác nhau).
Như vậy việc xây dựng từ điển từ cho tập văn bản-trang web tiếng Việt là cực kỳ khó khăn và không chuẩn xác. Giải pháp cắt đơn vị từ bằng khoảng trắng có thể áp dụng cho công cụ tìm kiếm tiếng Việt nhưng nó sẽ làm cho việc “hiểu” ngôn ngữ tiếng Việt của công cụ bị bỏ qua. Trong khi đó muốn công cụ tìm kiếm tiếng Việt thành công thì việc địa phương hóa – hiểu tiếng Việt là một yêu cầu số một.

2. Performance và tính mở rộng.

Khi Google ra đời vấn đề performance có thể đã là một câu hỏi nhưng không phải quá quan trọng như ngày nay. Tuy nhiên ngày nay đã khác. Lượng dữ liệu rất lớn và tăng lên theo từng giây đòi hỏi performent và tính mở rộng cực kỳ cao. Số lượng server phục vụ cho Google Search là một con số khổng lồ. Nó đảm bảo Google Search quản lý một lượng dữ liệu rất lớn đồng thời đáp ứng cho nhu cầu mở rộng rất tốt( scale up – thêm mới một server vào hệ thống, bỏ một server ra khỏi hệ thống, một server bị hỏng hóc,… không ảnh hướng tới tính sẵn sàng phục vụ của hệ thống).
Tại thời điểm hiện tại cũng có nhiều giải pháp áp dụng Lucene vào tìm kiếm phân tán như katta, Solr Cloud, Hbasene, HbaseDirectory,.. tuy nhiên kết quả mới dừng ở mức độ nghiên cứu chưa có bản chính thức nào được áp dụng rộng rãi.

3. Thời gian thực(Near realtime)

Hiện nay các mạng xã hội ra đời, thông tin do một lượng lớn người cung cấp nên tốc độ cập nhật thông tin trên những hệ thống này cập nhật gần như tức thì( khi có một sự kiện người ta có thể đưa thông tin lên những mạng xã hội kiểu Twitter, Facebook). Nếu hệ thống tìm kiếm muốn thành công thì phải đi trước đối thủ một bước, tức là cập nhật thông tin từ các mạng xã hội, các trang tin tức một cách nhanh nhất có thể( near realtime).
Để đảm bảo dữ liệu được lập chỉ mục(indexing) một cách gần thời gian thực cũng có các dự án support thư viện Lucene như Zoie. Tuy nhiên đây chỉ là dự án cho một hệ thống Lucene đơn lẻ và nó cũng không tính tới thời gian cập nhật dữ liệu từ hệ thống mạng xã hội sang hệ thống của mình để bắt đầu chức năng lập chỉ mục.

4. Nghiên cứu hành vi của người sử dụng

Việc nghiên cứu hành vi, phân cụm người dùng cũng là một yếu tốt then chốt tạo nên sự thành công của các công cụ tìm kiếm nói chung. Khi lượng dữ liệu rất lớn, đối với cùng một câu truy vấn không thể trả về cùng tập dữ liệu giống nhau cho tất cả người dùng vì mỗi người thuộc một nhóm nhất định và quan tâm tới chủ đề nhất định. Ví dụ đơn giản nếu một lập trình viên tìm kiếm với cụm từ Apple, Red hat,… thì có nhiều khả năng họ quan tâm tới công ty máy tính Apple, hoặc hệ điều hành Red Hat hơn là quan tâm tới mũ đỏ hay quả táo. Đối với công cụ tìm kiếm tiếng Việt cũng không nằm ngoài nhu cầu này.
Như vậy hệ thống tìm kiếm cần phân tích hành vi của người dùng( lịch sử tìm kiếm) để xác định được người tìm kiếm thuộc nhóm người nào giúp trả ra những kết quả phù hợp. Hệ thống Google hiện tại là một ví dụ điển hình, cá nhân tôi khi tìm kiếm với các cụm từ thì các kết quả liên quan tới lập trình luôn có thứ hạng cao.

5. Công thức tính điểm

Công thức tính điểm sẽ quyết định điểm cho mỗi tài liệu-trang web, dựa trên điểm này hệ thống sẽ sắp xếp theo thứ tự kết quả trả về cho phù hợp.
Về bản chất công thức tính điểm là tính điểm “sự tương đồng” giữa câu truy vấn người dùng cung cấp và tập tài liệu-trang web. Hệ thống Lucene sử dụng công thức VSM(Vector Space Model), và công thức này cũng luôn được giới nghiên cứu đánh giá là công thức tính toán rất chuẩn.
Thách thức không nằm ở trong công thức tính điểm mà nằm ở tham số truyền vào công thức tính điểm. Ví dụ cùng một nội dung ở n tài liệu-trang web, tài liệu nào quan trọng hơn trang web nào quan trọng hơn. Nếu cùng tham số truyền vào thì n tài liệu-trang web này có cùng điểm, nhưng thực tế thì không thể thế được. Ví dụ trang vnexpress ra một bản tin, một trang khác copy nội dung về nếu 2 trang web về bản tin này có cùng số điểm là không thể chấp nhận được.
Việc xác định đâu là tài liệu quan trọng hơn, đâu là tài liệu kém quan trọng, đâu là tài liệu spam,.. bằng rất nhiều thông số khác nhau như độ nổi tiếng của trang web, tốc độ cập nhật, lịch sử hình thành,… Đây cũng là đặc sắc của hệ thống tìm kiếm Google mà mọi người thường gọi là PageRank

6. Chất lượng dữ liệu đầu vào

Bản thân tác giả không tham gia nhiều vào các mạng xã hội nước ngoài và hiếm khi theo dõi nội dung này. Tuy nhiên có theo dõi các nội dung trên các mạng xã hội của Việt Nam mới thấy kinh khủng. Ví dụ như cụm từ “rồi ạ” có rất nhiều biến thể ngôn ngữ( về chính tả sẽ là một cụm từ vô nghĩa trong tiếng Việt) như “jồi ak” “zồi aj”… Như vậy việc người dùng tìm kiếm cụm từ “rồi ạ” mà ra cả những cụm từ “jồi ak” “zồi aj” thì hệ thống tìm kiệm thật khó đáp ứng trừ khi hệ thống ghi nhớ lại tất cả các biến thể từ hoặc nghiên cứu hệ  thống chuẩn hóa cụm “jồi ak” “zồi aj” về các từ chuẩn.
Việc gõ chữ không dấu có thể coi là đặc điểm ngôn ngữ tiếng Việt. Gõ sai chính tả coi như là đặc điểm địa phương của tiếng Việt. Tuy nhiên biến thể không dấu hoặc sai chính tả trong một số trường hợp vẫn có nghĩa theo chính tả chuẩn của tiếng Việt nhưng theo nghĩa khác. Như vậy không thể đánh đồng chữ có dấu với chữ không dấu, chữ đúng chính tả và chữ đúng … phụ tả được😀.
Đáp ứng được nhu cầu này thì gần như là “nối giáo cho giặc” trái với nhu cầu “bảo vệ sự trong sáng của tiếng Việt” trên internet.

Tổng kết

Các vấn đề liệt kê phía trên không thể đảm bảo cho công cụ tìm kiếm tiếng Việt của bạn thành công, nhưng nếu bạn có nhu cầu xây dựng hoặc nghiên cứu một hệ thống tìm kiếm cho tiếng Việt thì những vấn đề liệt kê phía trên chắc chắn bạn cần phải giải quyết. Trong các vấn đề liệt kê phía trên có thể chưa đủ, chưa chuẩn, vậy xin mời các bạn đóng góp về aladeck@gmail.com để bài viết chất lượng hơn.

Nguồn: https://aladeck.wordpress.com

Tham khảo

1. Trang chủ của dự án core Lucene và các dự án liên quan
http://lucene.apache.org/
2. Trang chủ của dự án vntokenizer của ông Lê Hồng Phương
http://www.loria.fr/~lehong/tools/vnTokenizer.php
3. Giới thiệu về VSM(Vector Space Model)
http://en.wikipedia.org/wiki/Vector_space_model
4. Giới thiệu về PageRank
http://en.wikipedia.org/wiki/PageRank

Posted in Phần mềm nguồn mở, Search Engine | Tagged , , , , , , , , | Để lại bình luận

Cài đặt bandwidthd trên Centos

– bandwidthd: là một trình theo dõi dung lượng truyền tải giữa máy chủ Centos và các địa chỉ IP khác. Bài hướng dẫn nhằm vào đối tượng là những người amater, mới làm quen với linux vì bài hướng dẫn sẽ chỉ ra từng bước cụ thể một. Bài hướng dẫn tham khảo bản tiếng Anh tại địa chỉ link và có sự bổ sung những thao tác cơ bản khác.

1. Copy file tgz
http://sourceforge.net/projects/bandwidthd/files/bandwidthd/bandwidthd%202.0.1/bandwidthd-2.0.1.tgz/download

2. Vào thư mục chứa file tgz
– Chạy lệnh “tar -zxvf bandwidthd-2.0.1.tgz”  để giải nén

3. Vào thư mục đã được giải nén để cài đặt(bước này là quan trọng nhất)
./configure && make install

Nó sẽ có  thể bao gồm một hoặc tất cả warrning sau
a) ” error: no acceptable cc found in $PATH”
– yum install gcc
b) “error: Bandwidthd requires but cannot libpng”
– yum install libpng-devel
c) “error: Bandwidthd requires but cannot find libgd”
– yum install gd-devel
d) “error: Bandwidthd requires but cannot find libpcap”
– yum install libcap-devel

4. Cấu hình bandwitdhd
– Vào thư mục /usr/local/bandwidthd/etc/
– Sửa file cấu hình như hình bên

bandwidthd config

bandwidthd config

5. Chạy bandwidthd
– /usr/local/bandwidthd/bandwidthd
6. Cấu hình bandwidthd initialize cùng hệ thống
– Thêm /usr/local/bandwidthd/bandwidthd
vào file /etc/rc.local

7. cài đặt apache(httpd)
– yum install httpd

8. Cấu hình apache, sau đó retart lại apache

– Thêm vào cuối file config của apache tại đường dẫn /etc/httpd/conf/httpd.conf

Alias /bandwidthd “/usr/local/bandwidthd/htdocs”
<Directory “/usr/local/bandwidthd/htdocs”>
Order Allow,Deny
Allow from All
</Directory>

– Restart lại apache: service httpd retart

9. Truy suất vào địa chỉ http://localhost/bandwidthd

Done,

Posted in Phần mềm nguồn mở, Tiện ích | Tagged | 2 phản hồi

Giới thiệu Solr và chạy thử Solr

Giới thiệu Solr

Solr là một ứng dụng mã nguồn mở cung cấp chức năng tìm kiếm, cung cấp các API để làm việc. Solr nhập dữ liệu dưới dạng XML thông qua HTTP,và/hoặc sử dụng thư viện để nhập khối lượng lớn dữ liệu. Người dùng có thể truy vấn dữ liệu này thông qua HTTP GET và nhận về một kết quả dạng XML. Solr sử dụng Lucene Java làm thư viện cho việc index( đánh chỉ số) và search( tìm kiếm).

Tham khảo thông tin:
http://lucene.apache.org/solr/index.html
http://lucene.apache.org/java/docs/index.html

Các chức năng cơ bản của Solr

– Khả năng tìm kiếm văn bản toàn diện(Full-Text Search) giống kiểu Google.
– Chỉnh sửa để hiệu năng tốt hơn.
– Dựa trên các chuẩn mở trong giao tiếp với các hệ thống khác – XML, JSON và HTTP
– Quản trị dưới dạng giao diện HTML đơn giản
– Thống kê dưới dạng JMX
– Khả năng mở rộng ra nhiều server Solr
– Cấu hình đơn giản dễ dàng với định dạng XML
– Có khả năng bổ sung các phần mở rộng(plugin) mới. Ví dụ như phân tích mở rộng tiếng Việt: Bắt lỗi chính tả, bỏ dấu,…

Chạy thử Solr.

– Đầu tiên download về bản mới nhất của Solr, giải nén và chuyển thư mục làm việc vào thư mục example của Solr

ls
cd solr-my-directory/example/

– Solr có thể chạy trên mọi server Java Servlet Container kiểu như ( Tomcat, JBoss, Jetty), trong ví dụ này chúng ta chạy ứng dụng với Jetty, một server cực đơn giản và đã được tích hợp sẵn vào thư mục example. Để khởi động Jetty với ứng dụng Solr chỉ cần chạy file start.jar

solr-my-directory/example$ java -jar start.jar
2009-10-23 16:42:53.816::INFO: Logging to STDERR via org.mortbay.log.StdErrLog
2009-10-23 16:42:53.907::INFO: jetty-6.1.3

– Kết quả là server Jetty được khởi động và lắng nghe tại port( cổng) 8983 trên máy tính của bạn. Bạn có thể chạy Solr bằng cách nhập vào địa chỉ http://localhost:8983/solr/admin/ trong trình duyệt web(khuyến cáo sử dụng FireFox vì nó có khả năng hiểu ký hiệu XML khá tốt). Kết quả sẽ như hình vẽ bên đây.

Giao diện trang admin

Giao diện trang admin


– Bạn thử tìm kiếm với từ khóa “*:*” không có dấu ngoặc kép nhé. Kết quả sẽ ra dạng XML sau.

Không kết quả trả về

Không kết quả trả về


– Nhập dữ liệu: Vì bạn chưa cung cấp dữ liệu cho Solr nên việc tìm kiếm trên trả ra không kết quả. Trong bài viết này chúng ta sử dụng một công cụ Java để nhập dữ liệu dạng XML lên hệ thống Solr. Mở cửa sổ terminal mới( nhớ rằng phải để Jetty chạy ở cửa sổ cũ). Vào thư mục làm việc /example/exampledocs


solr-my-directory/example/exampledocs$ java -jar post.jar *.xml
SimplePostTool: version 1.2
SimplePostTool: WARNING: Make sure your XML documents are encoded in UTF-8, other encodings are not currently supported
SimplePostTool: POSTing files to http://localhost:8983/solr/update..
SimplePostTool: POSTing file solr.xml
SimplePostTool: POSTing file monitor.xml
SimplePostTool: COMMITting Solr index changes..

– Thực hiện lại quá trình tìm kiếm với từ khóa “*:*” bạn sẽ có kết quả khác biệt(Nhớ nhấn tổ hợp phím Ctrl+F5 để FireFox làm tươi lại bộ nhớ cache, trong trường hợp bạn vẫn thấy không kết quả).

Kết quả tìm kiếm thành công

Kết quả tìm kiếm thành công

Nguồn : aladeck.wordpress.com

Posted in Lập trình, Phần mềm nguồn mở, Search Engine, Tiện ích | Tagged , , , , | 3 phản hồi

Đo khoảng cách trên bản đồ Gmap

Nhu cầu: Nhiều khi bạn muốn đo khoảng cách đoạn đường từ điểm này tới điểm kia. Tuy nhiên không phải ai cũng có cơ hội để đi từ Hà Nội nên một điểm trên Thái Nguyên để đo khoảng cách chính xác giữa chúng. Một nhu cầu rất hữu ích nữa cho những người kinh doanh bất động sản muốn tìm hiểu xem từ một vị trí chuẩn bị mua cách nội thành hoặc một lợi điểm nào đó là bao nhiêu.

Vậy chúng ta chỉ cần ngồi bên máy tính có kết nối internet và bắt đầu sử dụng ứng dụng dựa trên Gmaps.

Bắt đầu nào:

  1. Vào trang web: http://www.gmap-pedometer.com/
  2. Chuyển sang chế độ đo bằng mét, kilômet thông thường: Chọn nút radio “metric”
  3. Chọn bản đồ Hà Nội bằng cách điền “hanoi” vào ô nhập văn bản “jump to” và nhấn nút “go”
  4. Bắt đầu tính toán khoảng cách, nhấn nút “start recording”
  5. Ví dụ bạn muốn biết đoạn đường từ Bigc tới Cầu diễn qua Đại Học Sư Phạm khoảng cánh là bao nhiêu. Bạn thực hiện ba thao tác tiếp theo:
  6. Nháy kép chuột trên đường chỗ BigC
  7. Nháy kép chuột trên đường qua đại học Sư Phạm
  8. Nháy kép chuột trên đường qua Cầu Diễn.
  9. Kết quả hiện trong ô “Total Distance”
  10. Done

Mở rộng:

  1. Để thực hiện lại việc đo đạc, bạn nhấn nút “Clear points and start over”
  2. Bạn cũng có thể lưu lại và chia sẻ cho bạn bè, bạn nhấn nút “Save route”
Đo khoảng cách từ BigC qua Đại Học Sư Phạm tới Cầu Diễn

Đo khoảng cách từ BigC qua Đại Học Sư Phạm tới Cầu Diễn

Nguồn: aladeck.wordpress.com

Posted in Ứng dụng văn phòng, Thủ thuật, Tiện ích | Tagged , | 9 phản hồi