2012-07-03 31 views
11

Tôi muốn tìm ra cách tốt để thực hiện trích xuất cụm từ trên dữ liệu văn bản người tiêu dùng tự do. Trong một kịch bản lý tưởng, tôi có thể trích xuất các cụm từ danh từ của ít nhất hai từ bao gồm một số loại ngữ cảnh sử dụng của chúng. Đây là những yêu cầu lý tưởng của tôi.Trích xuất các cụm từ có liên quan theo ngữ cảnh (cụm từ danh từ) từ văn bản trong dự án .NET

  • cụm từ Danh từ khai thác
  • Dễ dàng tích hợp trong một dự án NET
  • Không có dịch vụ bên thứ 3 tích hợp

tôi đã thực hiện một số nghiên cứu đã và tôi đã bao gồm một số lưu ý dưới đây.

Có nhiều thư viện NLP khác nhau. Các đối thủ lớn dường như là NLTKOpenNLP. Cả hai hỗ trợ mã hóa dữ liệu văn bản và giải nén trong số những thứ khác, cụm từ danh từ. Tuy nhiên, không được thực hiện trong .NET và một số loại lớp IPC sẽ được yêu cầu. Cả hai đều có đường cong học tập khá cao.

SharperNLP là cổng C# của OpenNLP. Nó có một loạt hoạt động ngắn trong năm 2006, nhưng không nhiều kể từ đó.

Dưới đây là một số ghi chú từ người cố gắng tích hợp với NLTK trong triển khai .NET bằng IronPython.

Open Source NLP in C# 3.5 using NLTK.

Giải pháp dễ nhất mà tôi đã tìm thấy cho đến nay là Dịch vụ tích hợp máy chủ SQL Term Extraction Transformation. Nó rất đơn giản để cấu hình và bắt đầu và chạy. Nó có thể trích xuất các cụm từ danh từ có ý nghĩa với độ chính xác cao. Tuy nhiên, nó có một số hạn chế.

  • Đây là gói SSIS, tuyệt vời để phân tích văn bản sau khi thực tế, nhưng không phải trong thời gian thực.
  • Nó yêu cầu giấy phép doanh nghiệp SQL Server.
  • Nó chỉ hỗ trợ tiếng Anh mà không có kế hoạch hỗ trợ các ngôn ngữ khác.

Để đóng, tôi nhận thấy yêu cầu của tôi có thể hơi quá nghiêm ngặt, vì vậy, vui lòng trả lời với bất kỳ loại giải pháp nào ít nhất là trích xuất các đoạn câu trong danh từ.

+0

Không có cùng một thuật toán nhưng là C# của thuật toán gốc. http://tartarus.org/~martin/PorterStemmer/csharp2.txt Một cụm từ danh từ rõ ràng phức tạp hơn – Paparazzi

Trả lời

1

Tôi đã thực hiện một số nghiên cứu và tìm thấy một cách dễ dàng để sử dụng OpenNLP trong một dự án .NET với sự trợ giúp của một công cụ được gọi là IKVM.NET. Để biết thêm thông tin về cách chuyển các khay OpenNLP sang một hội đồng .NET, hãy xem bài viết wiki OpenNLP sau đây.

A quick guide to using OpenNLP from .NET

Để biết thêm thông tin về giải pháp của tôi, hãy xem bài đăng sau.

Extracting noun phrases with contextual relevance in .NET using OpenNLP

4

Bạn đã xem xét Lucene.NET? Nó được sử dụng ở đây trên Stack Overflow, và nó có khả năng phân chia các thuật ngữ.

Bạn có thể sử dụng PortStemFilter class để xử lý những thứ như phiên bản số nhiều của các từ.

Ngoài ra, có thể bạn sẽ phải xem Apache Solr project (dựa trên Java Lucene) và một số cổng hoạt động với .NET để xử lý các khía cạnh NLP. Tuy nhiên, Lucene.NET sẽ thực hiện các tokenizing cho bạn, do đó, nó giúp bạn một phần của con đường đó.

Cần lưu ý rằng Lucene.NET là mã .NET 100%, được chuyển trực tiếp từ phiên bản Java.

Ngoài ra, nếu bạn có một máy chủ bạn có thể chạy nó, bạn có thể tốt hơn chỉ cần chạy SOLR và thực hiện cuộc gọi đến dịch vụ qua HTTP đến chỉ mục được cấu hình với bộ lọc sẽ tạo ra kết quả bạn đang tìm kiếm cho (có lẽ dễ hơn làm việc chuyển mã NLP).

+0

SOLR có khai thác cụm từ danh từ ngoài hộp không? –

+0

Có, Chúng tôi sử dụng Lucene.NET trong các dự án ngay bây giờ. Sửa tôi nếu tôi sai, nhưng AFAIK nó không hỗ trợ chunking câu và xác định các cụm từ danh từ. PortStemFilter trông thú vị, nhưng điều này không đáp ứng bất kỳ yêu cầu hiện tại nào của tôi –

+0

@seglo no, nó sẽ không, bạn phải kết hợp nó với OpenNLP để có được những gì bạn muốn. Xem http://stackoverflow.com/q/2954814/50776 để biết thêm chi tiết. – casperOne

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