6

Có ai biết các mô hình phân loại văn bản nguồn mở tốt không? Tôi biết về Stanford Classifier, Weka, Mallet, vv nhưng tất cả đều yêu cầu đào tạo.phân loại văn bản phân loại

Tôi cần phân loại bài viết tin tức thành Thể thao/Chính trị/Y tế/Trò chơi/v.v. Có mô hình nào được đào tạo trước đó không?

Giả kim thuật, OpenCalais, v.v. không phải là tùy chọn. Tôi cần các công cụ mã nguồn mở (tốt nhất là trong Java).

Trả lời

5

Có một mô hình trước huấn luyện giả định rằng các corpus đã được sử dụng để đào tạo là từ cùng tên miền như các tài liệu bạn đang cố gắng phân loại. Nói chung, điều này sẽ không cung cấp cho bạn các kết quả mà bạn muốn bởi vì bạn không có kho gốc. Học máy không phải là tĩnh, khi bạn huấn luyện một trình phân loại bạn cần phải cập nhật mô hình khi các tính năng/thông tin mới có sẵn.

Ví dụ: phân loại các bài viết tin tức như bạn muốn trong miền Thể thao/Chính trị/Y tế/Trò chơi/v.v.

Ngôn ngữ đầu tiên là gì? Có phải chúng ta đang nói về tiếng Anh không? Cơ thể gốc được dán nhãn như thế nào? Và không rõ nhất là danh mục vv.

Đào tạo trình phân loại của riêng bạn thực sự rất dễ dàng. Nếu bạn đang phân loại văn bản, MALLET là lựa chọn tốt nhất. Bạn có thể lên và chạy trong vòng ít nhất 10 phút. Bạn có thể thêm MALLET vào ứng dụng của riêng bạn trong chưa đầy 1 giờ.

Nếu bạn muốn phân loại các bài báo có rất nhiều tập đoàn nguồn mở mà bạn có thể sử dụng làm cơ sở để bắt đầu đào tạo. Tôi sẽ bắt đầu với Reuters-21578 hoặc RCV-1.

+0

Cảm ơn rất nhiều, Shane, cho câu trả lời của bạn.Tôi chắc chắn sẽ xem xét các tập dữ liệu bạn đã đề cập! Nhưng có, tôi chỉ làm việc trên dữ liệu tiếng Anh và các miền tin tức chung (tương tự như các bài viết được phân loại bởi Alchemy và OpenCalais). Tôi sẽ cho MALLET một shot. – MFARID

+0

Tuyệt vời cho tôi biết nếu bạn có bất kỳ vấn đề gì! – Shane

0

Có một danh sách dài các mô hình trước huấn luyện cho OpenNLP

http://opennlp.sourceforge.net/models-1.5/

+1

Cảm ơn rất nhiều, nhưng không ai trong số họ làm văn bản phân loại – MFARID

+0

Không chắc chắn nếu điều này sẽ phù hợp với nhu cầu của bạn https://cwiki.apache.org/MAHOUT/bayesian.html cũng trích dẫn một ví dụ đi kèm với nguồn của họ. https://cwiki.apache.org/MAHOUT/wikipedia-bayes-example.html –

2

Có rất nhiều bộ phân loại ở đó tùy theo nhu cầu của bạn. Đầu tiên, tôi nghĩ bạn có thể muốn thu hẹp những gì bạn muốn làm với các trình phân loại.

Và đào tạo là một phần của các bước phân loại, tôi không nghĩ bạn sẽ tìm thấy nhiều bộ phân loại được đào tạo trước đó. Bên cạnh đó, đào tạo hầu như luôn là phần dễ phân loại.

Điều đó đang được nói, có rất nhiều tài nguyên bạn có thể xem. Tôi không thể giả vờ để có tín dụng này, nhưng đây là một trong những ví dụ:

Weka - là một tập hợp các máy thuật toán học cho khai thác dữ liệu. Đây là một trong những khung phân loại văn bản phổ biến nhất . Nó chứa các triển khai của một loạt các thuật toán bao gồm Naive Bayes và Hỗ trợ Vector Máy (SVM, được liệt kê trong SMO) [Ghi chú: Các hoạt động SVM khác không được sử dụng Java SVM là SVM-Light, LibSVM và SVMTorch]. Dự án có liên quan là Kea (Thuật toán trích xuất từ ​​khóa) một thuật toán để trích xuất các cụm từ khóa từ tài liệu văn bản .

Apache Lucene Mahout - Một dự án lồng ấp để tạo ra khả năng mở rộng triển khai phân phối các thuật toán học máy phổ biến trên trên cùng của khung bản đồ giảm Hadoop.

Nguồn: http://www.searchenginecaffe.com/2007/03/java-open-source-text-mining-and.html

+0

Cảm ơn, Hearty, vì bạn đã trả lời. – MFARID

2

gì bạn có nghĩa là bằng cách phân loại là rất quan trọng.

Phân loại là một nhiệm vụ được giám sát, yêu cầu trước đó phải được dán nhãn trước. Di chuyển từ kho dữ liệu đã được dán nhãn, bạn phải tạo một mô hình bằng cách sử dụng một số phương thức và cách tiếp cận và cuối cùng bạn có thể phân loại một kho dữ liệu thử nghiệm không dán nhãn bằng cách sử dụng mô hình đó. Trong trường hợp này, bạn có thể sử dụng một trình phân loại nhiều lớp, thường là một ứng dụng cây nhị phân của một trình phân loại nhị phân. Cách tiếp cận hiện đại cho loại công việc như vậy là sử dụng một nhánh học máy, SVM. Hai trong số các trình phân loại SVM tốt nhất là LibSVMSVMlight. Đây là những nguồn mở, dễ sử dụng và bao gồm các công cụ phân loại nhiều lớp. Cuối cùng, bạn phải thực hiện một cuộc khảo sát tài liệu để hiểu phải làm gì ngoài việc có được kết quả tốt, bởi vì việc sử dụng những bộ phân loại đó không đủ. Bạn phải thao tác/xử lý trước kho dữ liệu của mình để trích xuất các phần mang thông tin (ví dụ: unigrams) và loại trừ các phần nhiễu. Nói chung, bạn có thể có một chặng đường dài để đi, nhưng NLP là một chủ đề rất thú vị và đáng để làm việc.

Tuy nhiên, nếu ý bạn là phân loại theo nhóm thì vấn đề sẽ phức tạp hơn. Clustering là một nhiệm vụ không giám sát, có nghĩa là bạn sẽ không bao gồm thông tin cho chương trình bạn đang sử dụng về ví dụ nào thuộc về nhóm/chủ đề/lớp nào. Ngoài ra còn có các công trình hàn lâm về các phương pháp lai bán giám sát, nhưng chúng phân biệt một chút so với mục đích thực sự của vấn đề phân cụm. Việc xử lý trước mà bạn cần sử dụng trong khi thao tác kho văn bản của bạn mang tính chất tương tự với những gì bạn phải làm trong vấn đề phân loại, vì vậy tôi sẽ không đề cập đến nó nữa. Để thực hiện phân cụm, có một số phương pháp bạn phải tuân theo. Đầu tiên, bạn có thể sử dụng phương pháp LDA (Cấp phát Dirichlet Latinh) để giảm kích thước (số thứ nguyên không gian của bạn) của kho văn bản, điều này sẽ góp phần nâng cao hiệu quả và thông tin từ các tính năng. Bên cạnh hoặc sau LDA, bạn có thể sử dụng Phân cụm theo thứ bậc hoặc các phương pháp tương tự khác như K-Means để cụm cụm sao không được gắn nhãn của bạn. Bạn có thể sử dụng các công cụ Gensim hoặc Scikit-Learn làm các công cụ mã nguồn mở để phân cụm. Cả hai đều là công cụ mạnh mẽ, được tài liệu hóa và dễ sử dụng.

Trong mọi trường hợp, hãy học đọc rất nhiều và cố gắng hiểu lý thuyết bên dưới các nhiệm vụ và vấn đề đó. Bằng cách này, bạn có thể đưa ra các giải pháp sáng tạo và hiệu quả cho những gì bạn đang xử lý cụ thể, bởi vì các vấn đề trong NLP thường phụ thuộc vào corpus và bạn thường tự mình xử lý vấn đề cụ thể của mình. Rất khó để tìm ra các giải pháp chung và sẵn sàng để sử dụng và tôi cũng không khuyên bạn nên dựa vào một lựa chọn như vậy.

Tôi có thể trả lời quá cao câu hỏi của bạn, xin lỗi vì các phần không liên quan.

Chúc may mắn =)

+0

Câu trả lời hay! Cảm ơn rất nhiều. Tôi biết rõ về phân loại. Tôi đang tìm cách tiếp cận được giám sát, nhưng với các mô hình đã được đào tạo – MFARID

+1

Mô hình là kết quả chính của công việc của bạn trong phân loại; tất cả những thứ khác là tạo ra một mô hình tốt phù hợp với nhu cầu của bạn. Theo nghĩa đó, cố gắng tìm một mô hình sẵn sàng sử dụng là không liên quan và có lẽ là không thể. Điều này chủ yếu là bởi vì nhiệm vụ bạn đang cố gắng đạt được, tập hợp bạn đang làm việc, hiệu quả bạn cần và tất cả các khía cạnh khác sẽ là duy nhất cho bạn và trường hợp của bạn; vì thế nó là một vấn đề may mắn để tìm ra một mô hình thỏa mãn các mục tiêu của bạn. Lời khuyên của tôi là để có được bàn tay của bạn bẩn càng sớm càng tốt, chúc may mắn =) – clancularius