2010-07-23 37 views
8

Trong một ứng dụng tôi đang tạo, tôi muốn thêm chức năng nhóm các câu chuyện tin tức lại với nhau. Tôi muốn nhóm các câu chuyện tin tức về cùng một chủ đề từ các nguồn khác nhau vào cùng một nhóm. Ví dụ, một bài viết về XYZ từ CNN và MSNBC sẽ nằm trong cùng một nhóm. Tôi đoán một số loại so sánh logic mờ. Làm thế nào tôi sẽ làm điều này từ quan điểm kỹ thuật? Những lựa chọn của tôi là gì? Chúng tôi thậm chí chưa bắt đầu ứng dụng, vì vậy chúng tôi không giới hạn trong các công nghệ chúng tôi có thể sử dụng.Cách nhóm/so sánh các bài viết tương tự

Xin cảm ơn, trước sự giúp đỡ!

Trả lời

8

Sự cố này phân tích thành một vài vấn đề phụ từ quan điểm học máy.

Trước tiên, bạn sẽ muốn tìm ra những thuộc tính của những câu chuyện tin tức bạn muốn nhóm dựa trên. Một kỹ thuật phổ biến là sử dụng 'word bags': chỉ một danh sách các từ xuất hiện trong phần nội dung của câu chuyện hoặc trong tiêu đề. Bạn có thể thực hiện một số xử lý bổ sung như xóa tiếng Anh thông dụng "stop words" không cung cấp ý nghĩa, chẳng hạn như "the", "bởi vì". Bạn thậm chí có thể làm porter stemming để xóa các dư thừa với các từ số nhiều và các từ kết thúc như "-ion". Danh sách các từ này là vectơ tính năng của mỗi tài liệu và sẽ được sử dụng để đo lường sự giống nhau. Bạn có thể phải thực hiện một số tiền xử lý để loại bỏ đánh dấu html.

Thứ hai, bạn phải xác định số liệu tương tự: các câu chuyện tương tự có điểm tương đồng cao. Cùng với cách tiếp cận từ ngữ, hai câu chuyện tương tự nếu họ có những từ tương tự trong chúng (tôi đang mơ hồ ở đây, bởi vì có rất nhiều thứ bạn có thể thử, và bạn sẽ phải xem cái nào hoạt động tốt nhất).

Cuối cùng, bạn có thể sử dụng thuật toán phân cụm cổ điển, chẳng hạn như k-means clustering, nhóm các câu chuyện lại với nhau, dựa trên số liệu tương tự.

Tóm lại: chuyển câu chuyện tin tức thành vectơ nổi bật -> xác định chỉ số tương tự dựa trên vectơ tính năng này -> nhóm không giám sát.

Kiểm tra Google scholar, có thể có một số giấy tờ về chủ đề cụ thể này trong các tài liệu gần đây. Rất nhiều thứ mà tôi vừa thảo luận được thực hiện trong các mô-đun xử lý ngôn ngữ tự nhiên và học máy cho hầu hết các ngôn ngữ chính.

+0

Câu trả lời hay! Điều này thật đúng với gì mà tôi đã tìm kiếm. Nhanh chóng theo dõi câu hỏi. Nếu tôi đang tìm kiếm một nhà phát triển với các bộ kỹ năng này, tôi nên yêu cầu loại điều gì? Tôi thậm chí không biết lĩnh vực nghiên cứu này được gọi là gì. – Randy

+0

Hãy tìm một sinh viên khoa học máy tính đã hoặc đang học một lớp với hoặc đã có kinh nghiệm về 'xử lý ngôn ngữ tự nhiên' hoặc 'học máy'. Câu hỏi của bạn rất đơn giản để trả lời trong ngữ cảnh học máy, vì vậy hãy hỏi họ cách họ sẽ thực hiện một cái gì đó nhóm các câu chuyện tin tức. Ngoài ra, các dự án như thế này không phải lúc nào cũng hiệu quả vì có rất nhiều thứ có thể vắt trong ML và NLP - nhưng khi nó hoạt động, nó khá là tuyệt vời. –

1

Một cách tiếp cận sẽ là thêm thẻ vào các bài viết khi chúng được liệt kê. Một thẻ sẽ là XYZ. Các thẻ khác có thể mô tả chủ đề bài viết.

Bạn có thể làm điều đó trong cơ sở dữ liệu. Bạn có thể có số lượng thẻ không giới hạn cho mỗi bài viết. Sau đó, "nhóm" có thể được xác định bởi một hoặc nhiều thẻ.

Cách tiếp cận này phụ thuộc nhiều vào con người khi chỉ định các thẻ thích hợp để các bài viết phù hợp được trả về từ tìm kiếm, nhưng không quá nhiều bài viết. Nó không phải là dễ dàng để làm thực sự tốt.

+0

hmmm, giải pháp tốt, nhưng tôi không nghĩ điều đó có hiệu quả đối với chúng tôi. giải pháp của chúng tôi sẽ tự động kéo các bài viết từ web mà không có bất kỳ tương tác nào của con người, vì vậy chúng tôi không thể gắn thẻ chúng. – Randy

2

Vấn đề có thể được chia nhỏ để:

  • Làm thế nào để đại diện cho bài viết (tính năng, thường là một túi từ với TF-IDF)
  • Làm thế nào để tính toán sự tương đồng giữa hai bài báo (cosin tương đồng là phổ biến nhất)
  • Làm thế nào để cụm điều với nhau dựa trên trên

có hai nhóm lớn các thuật toán phân nhóm: hàng loạt và gia tăng. Lô là tuyệt vời nếu bạn đã có tất cả các bài viết của bạn trước thời hạn. Vì bạn đang phân cụm tin tức, bạn có thể có các bài viết của bạn đang tăng dần, vì vậy bạn không thể nhóm tất cả chúng cùng một lúc. Bạn sẽ cần một thuật toán gia tăng (hay còn gọi là tuần tự) và những thuật toán này có xu hướng phức tạp.

Bạn cũng có thể thử http://www.similetrix.com, tìm kiếm nhanh trên Google xuất hiện và họ yêu cầu cung cấp dịch vụ này qua API.

Các vấn đề liên quan