2009-06-16 56 views
63

Tôi đang tìm cách thực hiện một số phân tích câu (chủ yếu cho các ứng dụng twitter) và suy ra một số đặc điểm chung. Có bất kỳ thư viện xử lý ngôn ngữ tự nhiên nào tốt cho loại điều này trong Ruby không?Xử lý ngôn ngữ tự nhiên trong Ruby

Tương tự như Is there a good natural language processing library nhưng đối với Ruby. Tôi muốn một cái gì đó rất chung chung, nhưng bất kỳ dẫn được đánh giá cao!

+0

Tại sao không thử wit.ai? Đó là một dịch vụ bên ngoài miễn phí. Tôi đã viết một viên ngọc kết thúc tốt đẹp chức năng của họ: [wit_bot] (// bensites.com/wit_bot) –

Trả lời

23

Có một số thứ tại Ruby Linguistics và một số liên kết từ đó, mặc dù dường như không có gì gần với những gì NLTK là dành cho Python.

2

Bạn cần cụ thể hơn về những "đặc điểm chung" này. Trong NLP "đặc điểm chung" của một câu có thể có nghĩa là hàng triệu thứ khác nhau - phân tích tình cảm (tức là thái độ của người nói), phần cơ bản của gắn thẻ lời nói, sử dụng đại từ cá nhân, câu có chứa hoạt động hoặc thụ động không động từ, những gì là căng thẳng và giọng nói của các động từ ...

Tôi không ngại nếu bạn mơ hồ về mô tả nó, nhưng nếu chúng tôi không biết những gì bạn đang yêu cầu nó rất khó chúng tôi có thể cụ thể giúp bạn.

Đề xuất chung của tôi, đặc biệt là cho NLP, bạn nên có công cụ được thiết kế tốt nhất cho công việc thay vì giới hạn bản thân bằng một ngôn ngữ cụ thể. Hạn chế bản thân với một ngôn ngữ cụ thể là tốt cho một số nhiệm vụ mà các công cụ chung được thực hiện ở khắp mọi nơi, nhưng NLP không phải là một trong số đó.

Vấn đề khác khi làm việc với Twitter là rất nhiều câu sẽ có một nửa được nén hoặc nén theo những cách kỳ lạ và tuyệt vời - mà hầu hết các công cụ NLP không được đào tạo. Để giúp đỡ, NUS SMS Corpus bao gồm "khoảng 10.000 tin nhắn SMS được thu thập bởi sinh viên". Do các hạn chế và cách sử dụng tương tự, việc phân tích có thể hữu ích trong các khám phá của bạn với Twitter.

Nếu bạn cụ thể hơn, tôi sẽ thử và liệt kê một số công cụ sẽ hữu ích.

11

Bạn luôn có thể sử dụng jruby và sử dụng thư viện java.

CHỈNH SỬA: Khả năng tạo ruby ​​tự nhiên trên jvm và dễ dàng sử dụng thư viện java là một lợi thế lớn đối với người ruby. Đây là một lựa chọn tốt nên được xem xét trong một tình huống như thế này.

Which NLP toolkit to use in JAVA?

+4

Bạn không nên chỉ nói rằng bạn nên sử dụng các thư viện java, mà là các thư viện java. Họ có thể thậm chí không tồn tại, cho tất cả người đọc có thể biết. –

+0

http://stackoverflow.com/questions/895893/which-nlp-toolkit-to-use-in-java – jshen

9

Tôi tìm thấy một bài viết tuyệt vời quy định chi tiết một số thuật toán NLP trong Ruby here. Điều này bao gồm stemmers, phân tích cú pháp thời gian ngày và phân tích cú pháp ngữ pháp.

+0

+1 để chỉ tôi đến một mình ... – cbmeeks

60

Ba gói NLP xuất sắc và trưởng thành là Stanford Core NLP, Open NLPLingPipe. Có các ràng buộc Ruby với các công cụ Stanford Core NLP (giấy phép GPL) cũng như các công cụ OpenNLP (Giấy phép Apache).

Về mặt thử nghiệm hơn, tôi duy trì Text Retrieval, Extraction and Annotation Toolkit (Xử lý), được phát hành theo GPL, cung cấp API chung cho hầu hết mọi đá quý liên quan đến NLP tồn tại cho Ruby. Danh sách các tính năng của Treat sau đây cũng có thể phục vụ như là một tài liệu tham khảo tốt về đá quý xử lý ngôn ngữ tự nhiên ổn định tương thích với Ruby 1.9.

  • segmenters văn bản và tokenizers (punkt-segmenter, tactful_tokenizer, srx-english, scalpel)
  • parsers ngôn ngữ tự nhiên cho tiếng Anh, khai thác tổ chức Pháp và Đức và đặt tên cho tiếng Anh (stanford-core-nlp).
  • Lời uốn và chia (linguistics), bắt nguồn (ruby-stemmer, uea-stemmer, lingua, vv)
  • giao diện WordNet (rwordnet), người gắn thẻ POS (rbtagger, engtagger, vv)
  • Language (whatlanguage), ngày/time (chronic, kronic, nickel), từ khóa (lda-ruby) trích xuất.
  • Truy xuất văn bản bằng tìm kiếm chỉ mục và tìm kiếm toàn văn (ferret).
  • Trích xuất thực thể được đặt tên (stanford-core-nlp).
  • Học máy cơ bản với cây quyết định (decisiontree), MLP (ruby-fann), SVM (rb-libsvm) và phân loại tuyến tính (tomz-liblinear-ruby-swig).
  • Số liệu tương tự văn bản (levenshtein-ffi, fuzzy-string-match, tf-idf-similarity).

Không bao gồm trong Treat, nhưng có liên quan đến NLP: hotwater (thuật toán chuỗi khoảng cách), yomu (chất kết dính để Apache Tiki để đọc .doc, .docx, .pages, .odt, .rtf, .pdf), graph-rank (triển khai GraphRank).

4

Hãy thử điều này một

https://github.com/louismullie/stanford-core-nlp

Về stanford-core-NLP đá quý

đá quý này cung cấp cao cấp Ruby bindings để gói Stanford Lõi NLP, một thiết lập các công cụ xử lý ngôn ngữ tự nhiên cho tokenization , phân đoạn câu, gắn thẻ một phần của lời nói, lemmatization và phân tích cú pháp tiếng Anh, tiếng Pháp và tiếng Đức. Gói này cũng cung cấp nhận dạng đối tượng được đặt tên và độ phân giải lõi cho tiếng Anh.

http://nlp.stanford.edu/software/corenlp.shtml trang demo http://nlp.stanford.edu:8080/corenlp/

5

Cũng xem xét sử dụng SaaS API như MonkeyLearn. Bạn có thể dễ dàng đào tạo các bộ phân loại văn bản với máy học và tích hợp thông qua API. Có sẵn Ruby SDK.

Bên cạnh việc tạo các trình phân loại của riêng bạn, bạn có thể chọn các mô đun được tạo trước để phân tích tình cảm, phân loại chủ đề, phát hiện ngôn ngữ và hơn thế nữa. Chúng tôi cũng có các trình giải nén như trích xuất từ ​​khóa và các thực thể và chúng tôi sẽ tiếp tục thêm các mô-đun công khai hơn.

tính năng tốt đẹp khác:

  • Bạn có một giao diện đồ họa để tạo ra thuật toán/kiểm tra.
  • Thuật toán chạy rất nhanh trên nền tảng điện toán đám mây của chúng tôi.
  • Bạn có thể tích hợp với Ruby hoặc bất kỳ ngôn ngữ lập trình nào khác.
4

tôi duy trì một danh sách các Ruby Natural Language Processing resources (thư viện, các API, và trình bày) trên GitHub bao gồm các thư viện được liệt kê trong câu trả lời khác ở đây cũng như một số thư viện bổ sung.

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