2011-11-15 33 views
7

Tôi đang làm việc trên một vấn đề phân loại văn bản, tôi đang cố gắng phân loại một tập hợp các từ thành thể loại, có rất nhiều thư viện để phân loại, vì vậy vui lòng không trả lời nếu bạn đang đề nghị sử dụng chúng.Phân loại văn bản thành các hạng mục

Hãy để tôi giải thích những gì tôi muốn triển khai. (Lấy ví dụ)

Danh sách từ:

  1. java
  2. lập trình
  3. ngôn ngữ
  4. c-sắc nét

Danh sách Categories.

  1. java
  2. c-sắc nét

ở đây chúng tôi sẽ đào tạo các thiết lập, như:

  1. bản đồ java để loại 1. java
  2. lập trình bản đồ để loại 1. java
  3. bản đồ lập trình thành thể loại 2.c-sharp
  4. bản đồ ngôn ngữ để loại 1.java
  5. bản đồ ngôn ngữ để loại 2.c-sắc nét
  6. bản đồ c-sắc nét để loại 2.c-sắc nét

Bây giờ chúng ta có một cụm từ "tốt nhất lập trình java cuốn sách " từ cụm từ cho từ sau một trận đấu để chúng ta "Danh sách Words":.

  1. java
  2. lập trình

"lập trình" có hai danh mục được ánh xạ "java" & "c-sharp" do đó, nó là một từ phổ biến.

"java" được ánh xạ tới danh mục "java".

Vì vậy, danh mục phù hợp của chúng tôi cho các cụm từ là "java"

Đây là những gì xuất hiện trong đầu của tôi, là giải pháp tốt này, nó có thể được thực hiện, đề xuất của bạn là gì, bất cứ điều gì tôi bỏ lỡ, sai sót , vv ..

+0

không có gì, đó là câu hỏi, điều này có hiệu quả không, tôi có nên dành thời gian để thực hiện điều này không? –

Trả lời

4

Tất nhiên điều này có thể được triển khai. Nếu bạn huấn luyện một trình phân loại Naive Bayes hoặc SVM tuyến tính trên tập dữ liệu bên phải (tiêu đề của các sách lập trình Java và C#, tôi đoán), nên học cách kết hợp thuật ngữ "Java" với Java, "C#" và ".NET" với C# và "lập trình" với cả hai. Nghĩa là, một trình phân loại Naive Bayes có khả năng sẽ tìm hiểu một xác suất thậm chí gần như của Java hoặc C# cho các thuật ngữ phổ biến như "lập trình" nếu tập dữ liệu được chia đều.

+0

+1 Điều gì sẽ xảy ra nếu tôi đang cố phân loại văn bản dưới 1000 danh mục khác nhau ... Tuy nhiên, trình phân loại Naive Bayes sẽ là một lựa chọn tốt ... Điều này có thể xảy ra, văn bản trong khi thử nghiệm sẽ tạo ra 100 kết quả khác nhau ... Vui lòng đề xuất .. . – Wazzzy

0

Nếu có thể, hãy đọc phần có tên "Bộ phân loại Naive" trong chương "Lọc tài liệu" trong cuốn sách có tên "Lập trình tập thể thông minh". Mặc dù các ví dụ là bằng Python, tôi hy vọng rằng sẽ không có nhiều rắc rối cho bạn.

2

Một cách đơn giản để thực hiện điều này là sử dụng Lucene thẳng đứng (hoặc bất kỳ công cụ lập chỉ mục văn bản nào). Tạo một tài liệu Lucene đơn với tất cả các ví dụ "java" và một tài liệu khác có các ví dụ "C#" và thêm cả hai vào chỉ mục. Để phân loại một tài liệu mới, HOẶC tất cả các thuật ngữ trong tài liệu và thực hiện một truy vấn đối với chỉ mục và lấy danh mục có điểm số cao nhất.

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