Procesarea limbajului natural în Ruby [închis] (Programare, Ruby, Inteligență Artificială, Nlp)

Joey Robert a intrebat.

Caut să fac o analiză a unor propoziții (în principal pentru aplicații twitter) și să deduc câteva caracteristici generale. Există vreo bibliotecă bună de procesare a limbajului natural pentru acest tip de lucru în Ruby?

Similar cu Există o bibliotecă bună de procesare a limbajului natural, dar pentru Ruby. Aș prefera ceva foarte general, dar orice piste sunt apreciate!

Comentarii

  • De ce nu încercați wit.ai? Este un serviciu extern gratuit. Am scris o bijuterie care înfășoară funcționalitatea lor: wit_bot –  > Por Ben Aubin.
11 răspunsuri
Alex Martelli

Există unele lucruri la Ruby Linguistics și câteva linkuri de acolo, deși nu pare să fie nici pe departe apropiat de ceea ce NLTK este pentru Python, încă.

utilizator2398029

Trei pachete NLP excelente și mature sunt Stanford Core NLP, , Open NLP și LingPipe. Există legături Ruby pentru Stanford Core NLP (licență GPL), precum și la OpenNLP (licență Apache).

În ceea ce privește partea mai experimentală a lucrurilor, întrețin o aplicație Set de instrumente de recuperare, extragere și adnotare a textului (Treat), eliberat sub licență GPL, care oferă o API comună pentru aproape toate bijuteriile legate de NLP care există pentru Ruby. Următoarea listă a caracteristicilor lui Treat poate servi, de asemenea, ca o bună referință în ceea ce privește gemurile stabile de procesare a limbajului natural compatibile cu Ruby 1.9.

  • Segmentări și tokenizări de text (punkt-segmenter, , tactful_tokenizer, , srx-english, , scalpel)
  • Analizatoare de limbaj natural pentru limbile engleză, franceză și germană și extragerea entităților numite pentru limba engleză (stanford-core-nlp).
  • Inflexiunea și conjugarea cuvintelor (linguistics), stemming (ruby-stemmer, , uea-stemmer, , lingua, , etc.)
  • Interfața WordNet (rwordnet), etichetări POS (rbtagger, , engtagger, , etc.)
  • Limba (whatlanguage), data/ora (chronic, , kronic, , nickel), cuvânt cheie (lda-ruby) extracție.
  • Recuperarea textului cu indexare și căutare în text complet (ferret).
  • Extragerea entităților numite (stanford-core-nlp).
  • Învățare automată de bază cu arbori de decizie (decisiontree), MLP (ruby-fann), SVM-uri (rb-libsvm) și clasificarea liniară (tomz-liblinear-ruby-swig).
  • Metrici de similaritate a textului (levenshtein-ffi, , fuzzy-string-match, , tf-idf-similarity).

Nu sunt incluse în Treat, dar sunt relevante pentru NLP: apă caldă (algoritmi de distanțare a șirurilor de caractere), yomu (lianți pentru Apache Tiki pentru citirea fișierelor .doc, .docx, .pages, .odt, .rtf, .pdf), graph-rank (o implementare a GraphRank).

jshen

Puteți folosi oricând jruby și să folosiți bibliotecile java.

EDIT: Capacitatea de a face ruby nativ pe jvm și de a folosi cu ușurință bibliotecile java este un mare avantaj pentru rubyști. Aceasta este o opțiune bună care ar trebui să fie luată în considerare într-o situație ca aceasta.

Ce set de instrumente NLP să folosiți în JAVA?

Comentarii

  • Nu ar trebui să spuneți doar că ar trebui să folosiți biblioteci java, ci care biblioteci java. Este posibil ca acestea să nici nu existe, din câte ar putea ști un cititor. –  > Por Daniel Ribeiro.
  • stackoverflow.com/questions/895893/… – –  > Por jshen.
Joey Robert

Am găsit un articol excelent care detaliază câțiva algoritmi NLP în Ruby aici. Acesta include stemmers, date time parsers și grammar parsers.

Comentarii

  • +1 pentru că m-ai îndrumat către Chronic singur… –  > Por cbmeeks.
zanbri

TREAT – the Text REtrieval and Annotation Toolkit – este cel mai cuprinzător set de instrumente pe care îl cunosc pentru Ruby: https://github.com/louismullie/treat/wiki/

Raul Garreta

Luați în considerare și utilizarea API-urilor SaaS, cum ar fi MonkeyLearn. Puteți antrena cu ușurință clasificatori de text cu învățare automată și integrați prin intermediul unui API. Există o Ruby SDK disponibil.

Pe lângă crearea propriilor clasificatori, puteți alege modulele pre-create pentru analiza sentimentului, clasificarea subiectelor, detectarea limbii și multe altele.Avem, de asemenea, extractoare, cum ar fi extracția de cuvinte cheie și entități, și vom continua să adăugăm mai multe module publice.

Alte caracteristici interesante:

  • Aveți o interfață grafică pentru a crea/testa algoritmi.
  • Algoritmii rulează foarte repede în platforma noastră de cloud computing.
  • Vă puteți integra cu Ruby sau cu orice alt limbaj de programare.

diasks2

Mențin o listă de resurse de procesare a limbajului natural Ruby (biblioteci, API-uri și prezentări) pe GitHub, care acoperă bibliotecile enumerate în celelalte răspunsuri de aici, precum și câteva biblioteci suplimentare.

Lohith MV

Încercați aceasta

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

Despre gemul stanford-core-nlp

Această bijuterie oferă legături Ruby de nivel înalt pentru pachetul Stanford Core NLP, un set de instrumente de procesare a limbajului natural pentru tokenizare, segmentare de propoziții, etichetare a părților de vorbire, lematizare și analiză a limbilor engleză, franceză și germană. Pachetul oferă, de asemenea, recunoașterea entităților numite și rezolvarea coreferențelor pentru limba engleză.

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

Smerit

Trebuie să fiți mult mai specific în ceea ce privește aceste „caracteristici generale”.

În NLP, „caracteristicile generale” ale unei propoziții pot însemna un milion de lucruri diferite – analiza sentimentului (adică atitudinea vorbitorului), etichetarea de bază a părții de vorbire, utilizarea pronumelui personal, dacă propoziția conține verbe active sau pasive, care este timpul și vocea verbelor…

Nu mă deranjează dacă sunteți vagi în ceea ce privește descrierea, dar dacă nu știm ce ne cereți, este puțin probabil să vă putem ajuta în mod specific.

Sugestia mea generală, în special pentru NLP, este că ar trebui să obțineți instrumentul cel mai bine conceput pentru această sarcină, în loc să vă limitați la un anumit limbaj. Limitarea la un limbaj specific este bună pentru anumite sarcini în care instrumentele generale sunt implementate peste tot, dar NLP nu este una dintre acestea.

Cealaltă problemă în lucrul cu Twitter este că o mare parte din propozițiile de acolo vor fi pe jumătate coapte sau comprimate în moduri ciudate și minunate – pentru care majoritatea instrumentelor NLP nu sunt pregătite. Pentru a vă ajuta în acest sens, aplicația NUS SMS Corpus este format din „aproximativ 10.000 de mesaje SMS colectate de studenți”. Datorită restricțiilor și utilizării similare, analiza acestuia poate fi utilă în explorările dumneavoastră cu Twitter.

Dacă sunteți mai specific, voi încerca să enumăr câteva instrumente care vă vor ajuta.

Adam D

Eu aș consulta cartea gratuită a lui Mark Watson Practical Semantic Web and Linked Data Applications, Java, Scala, Clojure și JRuby Edition (Aplicații practice pentru web semantic și date legate, ediția Java, Scala, Clojure și JRuby). El are capitole despre NLP folosind java, clojure, ruby și scala. El oferă, de asemenea, link-uri către resursele de care aveți nevoie.

JohnSalzarulo

Pentru persoanele care caută ceva mai ușor și simplu de implementat, această opțiune a funcționat bine pentru mine.

https://github.com/yohasebe/engtagger