2009-06-16 27 views
63

Sto cercando di eseguire un'analisi delle frasi (principalmente per le app di Twitter) e di inferire alcune caratteristiche generali. Esistono buone librerie di elaborazione del linguaggio naturale per questo genere di cose in Ruby?Elaborazione del linguaggio naturale in Ruby

Simile a Is there a good natural language processing library ma per Ruby. Preferirei qualcosa di molto generale, ma ogni vantaggio è apprezzato!

+0

Perché non provare wit.ai? È un servizio esterno gratuito. Ho scritto una gemma che racchiude le loro funzionalità: [wit_bot] (// bensites.com/wit_bot) –

risposta

23

Ci sono alcune cose a Ruby Linguistics e alcuni collegamenti da esso, anche se non sembra da nessuna parte vicino a ciò che NLTK è per Python, ancora.

2

È necessario essere molto più specifici su quali siano queste "caratteristiche generali".

In PNL "caratteristiche generali" di una frase può significare un milione di cose diverse - analisi del sentimento (cioè l'atteggiamento del relatore), parte fondamentale del tagging del discorso, uso del pronome personale, la frase contiene attivo o passivo verbi, qual è il tempo e la voce dei verbi ...

Non mi dispiace se sei vago nel descriverlo, ma se non sappiamo cosa stai chiedendo è altamente improbabile che possiamo essere specifici nell'aiutarti

Il mio suggerimento generale, in particolare per la PNL, è quello di ottenere lo strumento più adatto per il lavoro anziché limitarsi a una lingua specifica. Limitare te stesso a una lingua specifica va bene per alcune attività in cui gli strumenti generali sono implementati ovunque, ma la PNL non è una di quelle.

L'altro problema in cui si lavora con Twitter è una grande quantità di frasi che saranno cotte a metà o compresse in modi strani e meravigliosi - a cui la maggior parte degli strumenti di PNL non sono addestrati. Per aiutarvi, lo consiste di "circa 10.000 messaggi SMS raccolti dagli studenti". A causa delle restrizioni e dell'utilizzo simili, l'analisi potrebbe essere utile per le tue esplorazioni con Twitter.

Se sei più specifico proverò ad elencare alcuni strumenti che ti aiuteranno.

11

È sempre possibile utilizzare jruby e utilizzare le librerie java.

MODIFICA: la possibilità di fare ruby ​​in modo nativo sulla jvm e di sfruttare facilmente le librerie java è un grande vantaggio per i rubyists. Questa è una buona opzione che dovrebbe essere considerata in una situazione come questa.

Which NLP toolkit to use in JAVA?

+4

Non dovresti solo dire che dovresti usare le librerie java, ma quali librerie java. Possono anche non esistere, per quanto un lettore possa sapere. –

+0

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

9

ho trovato un eccellente articolo in dettaglio alcuni algoritmi di PNL in Ruby here. Questo include stemmer, parser di data e parser di grammatica.

+0

+1 per indicarmi solo Chronic ... – cbmeeks

60

Tre eccellenti e mature pacchetti di PNL sono Stanford Core NLP, Open NLP e LingPipe. Esistono collegamenti Ruby agli strumenti Stanford Core NLP (licenza GPL) e agli strumenti OpenNLP (licenza Apache).

Sul lato più sperimentale, mantengo un Text Retrieval, Extraction and Annotation Toolkit (Treat), rilasciato sotto GPL, che fornisce un'API comune per quasi ogni gemma correlata a NLP esistente per Ruby. Il seguente elenco di caratteristiche di Treat può anche fungere da buon riferimento in termini di gemme di elaborazione del linguaggio naturale stabili compatibili con Ruby 1.9.

  • segmenters di testo e tokenizers (punkt-segmenter, tactful_tokenizer, srx-english, scalpel)
  • parser linguaggio naturale per l'inglese, estrazione di entità francese e tedesco e che prende il nome inglese (stanford-core-nlp).
  • Word inflessione e la coniugazione (linguistics), derivanti (ruby-stemmer, uea-stemmer, lingua, etc.)
  • interfaccia WordNet (rwordnet), tagger POS (rbtagger, engtagger, etc.)
  • lingua (whatlanguage), la data/ora (chronic, kronic, nickel), parola chiave (lda-ruby) estrazione.
  • Recupero testo con indicizzazione e ricerca testo completo (ferret).
  • Nome entità estrazione (stanford-core-nlp).
  • Apprendimento automatico di base con alberi decisionali (decisiontree), MLP (ruby-fann), SVM (rb-libsvm) e classificazione lineare (tomz-liblinear-ruby-swig).
  • Metriche di somiglianza del testo (levenshtein-ffi, fuzzy-string-match, tf-idf-similarity).

Non incluso nel Treat, ma rilevanti per NLP: hotwater (algoritmi distanza stringa), yomu (leganti a Apache Tiki per la lettura .doc, .docx, .pages, .odt, .rtf, .pdf), graph-rank (un'implementazione di GraphRank).

4

provare questo

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

su Stanford-core-PNL gioiello

Questo gioiello offre di alto livello attacchi di Ruby al pacchetto Stanford Nucleo NLP, un set di strumenti di elaborazione del linguaggio naturale per la tokenizzazione , segmentazione della frase, tag di parte del discorso, lemmatizzazione e parsing di inglese, francese e tedesco. Il pacchetto fornisce anche il riconoscimento dell'entità con nome e la risoluzione della coreferenza per l'inglese.

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

5

Considera anche utilizzando le API SaaS come MonkeyLearn. Puoi facilmente formattare i classificatori di testo con l'apprendimento automatico e integrarli tramite un'API. C'è uno Ruby SDK disponibile.

Oltre a creare classificatori personalizzati, è possibile selezionare i moduli pre-creati per l'analisi dei sentimenti, la classificazione degli argomenti, il rilevamento della lingua e altro. Abbiamo anche estrattori come l'estrazione di parole chiave e le entità e continueremo ad aggiungere altri moduli pubblici.

Altre caratteristiche curato:

  • Hai un interfaccia grafica per creare algoritmi/test.
  • Algoritmi funzionano molto velocemente nella nostra piattaforma di cloud computing.
  • È possibile integrare con Ruby o qualsiasi altro linguaggio di programmazione.
Problemi correlati