2012-01-01 56 views
16

Tôi thấy mình phải học những điều mới mọi lúc. Tôi đã cố gắng nghĩ cách để tôi có thể tiến hành quá trình học các môn học mới. Tôi nghĩ rằng nó có thể được gọn gàng nếu tôi có thể viết một chương trình để phân tích một bài viết wikipedia và loại bỏ tất cả mọi thứ, nhưng các thông tin có giá trị nhất.Tóm tắt Bài viết trên Wikipedia

Tôi bắt đầu bằng cách tham gia bài viết trên Wikipedia số PDFs và trích xuất 100 câu đầu tiên. Tôi đã cho mỗi câu một số điểm dựa trên giá trị mà tôi nghĩ là như thế nào. Tôi đã tạo một tệp theo định dạng sau:

<sentence> 
<value> 
<sentence> 
<value> 
etc. 

Sau đó, tôi phân tích tệp này và tìm các hàm khác nhau có tương quan với mỗi câu với giá trị mà tôi đã đưa ra. Tôi vừa mới bắt đầu học về máy học và thống kê và không có điều gì, vì vậy tôi đang làm rất nhiều vụng về ở đây. Đây là nỗ lực mới nhất của tôi: https://github.com/JesseAldridge/Wikipedia-Summarizer/blob/master/plot_sentences.py.

Tôi đã thử một loạt các công cụ dường như không tạo ra mối tương quan nào cả - chiều dài từ trung bình, vị trí trong bài viết, v.v. Điều duy nhất tạo ra bất kỳ mối quan hệ hữu ích nào là chiều dài của chuỗi (cụ thể hơn, đếm số chữ cái thường của chữ cái e có vẻ hoạt động tốt nhất). Nhưng điều đó có vẻ hơi xấu hổ, bởi vì dường như rõ ràng là các câu dài hơn sẽ có nhiều khả năng chứa thông tin hữu ích hơn. Tại một thời điểm tôi nghĩ rằng tôi đã tìm thấy một số chức năng thú vị, nhưng sau đó khi tôi cố gắng loại bỏ các ngoại lệ (chỉ đếm các phần tư bên trong), chúng bật ra để tạo ra kết quả tồi tệ hơn, sau đó chỉ trả về 0 cho mỗi câu. Điều này khiến tôi băn khoăn về việc có bao nhiêu thứ khác mà tôi có thể làm sai ... Tôi cũng tự hỏi liệu đây có phải là cách hay để tiếp cận vấn đề này hay không.

Bạn có nghĩ rằng tôi đang đi đúng hướng không? Hay đây chỉ là một chuyện ngu ngốc? Có bất kỳ thiếu sót rõ ràng nào trong mã được liên kết không? Có ai biết cách tốt hơn để tiếp cận vấn đề tóm tắt một bài viết trên Wikipedia không? Tôi muốn có một giải pháp nhanh chóng và bẩn thỉu hơn cái gì đó hoàn hảo mà phải mất một thời gian dài để đặt lại với nhau. Bất kỳ lời khuyên chung nào cũng sẽ được hoan nghênh.

+0

Tiếp theo, bạn sẽ muốn chúng tôi sử dụng báo chí để làm cho bài viết được quét thậm chí ngắn hơn;) – tylerthemiler

+4

Bạn rõ ràng là quá cũ. Để những thứ này cho những người 16 tuổi http://www.wired.com/gadgetlab/2011/12/summly-app-summarization/ – ColinE

+0

:) Tóm lại trông thật tuyệt. Tôi không thể chạy nó trên ipod của tôi, nhưng tôi có thể đọc các nhận xét. Chúng khá hỗn hợp. Tôi có ấn tượng rằng nó không hoạt động tốt. –

Trả lời

13

Xét rằng câu hỏi của bạn liên quan nhiều hơn đến hoạt động nghiên cứu hơn là vấn đề lập trình, bạn có lẽ nên xem xét tài liệu khoa học. Ở đây bạn sẽ tìm thấy các chi tiết được công bố của một số thuật toán thực hiện chính xác những gì bạn muốn. Một tìm kiếm google cho "tóm tắt từ khóa" tìm thấy những điều sau đây:

Single document Summarization based on Clustering Coefficient and Transitivity Analysis

Multi-document Summarization for Query Answering E-learning System

Intelligent Email: Aiding Users with AI

Nếu bạn đọc ở trên, sau đó làm theo các tài liệu tham khảo chúng chứa, bạn sẽ thấy cả một sự giàu có của thông tin. Chắc chắn đủ để xây dựng một ứng dụng chức năng.

+2

Ok, vì vậy tôi chỉ cần thêm một biểu đồ phụ thuộc dựa trên phân tích quan hệ phụ thuộc cú pháp và sử dụng hệ số phân cụm để đo các kết nối nút. Sau đó, chỉ đơn giản là kéo tam giác nút ra và sử dụng chúng để trích xuất các câu chính. ffs ... rất nhiều cho nhanh chóng và bẩn. Nghiêm túc, mặc dù cho các giấy tờ. Đó là những thông tin tốt nhất mà tôi có thể nhận được. –

+4

Hey ... bạn vừa tóm tắt thành công từ khóa cho bài báo đó. Có lẽ đây là một công việc cho một cơ khí! – ColinE

1

Chỉ hai xu của tôi ...

Bất cứ khi nào tôi duyệt một chủ đề mới trên Wikipedia, tôi thường thực hiện tìm kiếm "rộng đầu tiên"; Tôi từ chối chuyển sang một chủ đề khác cho đến khi tôi quét mỗi và mọi liên kết mà trang kết nối tới (giới thiệu một chủ đề mà tôi chưa quen). Tôi đọc câu đầu tiên của mỗi đoạn và nếu tôi thấy điều gì đó trong bài viết có vẻ liên quan đến chủ đề ban đầu, tôi lặp lại quy trình.

Nếu tôi được thiết kế giao diện cho một "Summarizer" Wikipedia, tôi sẽ

  1. Luôn in toàn bộ đoạn giới thiệu.

  2. Trong phần còn lại của bài viết, in bất kỳ câu nào có liên kết trong đó.

    2a. In bất kỳ danh sách liên kết được tách nhau bằng dấu phẩy nào dưới dạng danh sách dấu đầu dòng.

  3. Nếu liên kết đến bài viết được "mở rộng", hãy in đoạn đầu tiên cho bài viết đó.

  4. Nếu đoạn giới thiệu đó được mở rộng, hãy lặp lại danh sách câu có liên kết.

Quy trình này có thể lặp lại vô thời hạn.

Điều tôi đang nói là tóm tắt các bài viết trên Wikipedia không giống như tóm tắt một bài báo từ một tạp chí hoặc đăng trên blog. Hành động thu thập dữ liệu là một phần quan trọng trong việc học các khái niệm giới thiệu nhanh chóng qua Wikipedia và tôi cảm thấy nó là tốt nhất. Thông thường, nửa dưới của bài viết là nơi các thẻ citation needed bắt đầu xuất hiện, nhưng nửa đầu của bất kỳ bài viết nào được coi là kiến ​​thức được đưa ra bởi cộng đồng.

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