2011-01-25 15 views

risposta

23

Come dimostrato dalla documentazione, l'implementazione di Naive Bayes in ogni libreria è semplice da utilizzare , quindi perché non eseguire i dati con entrambi e confrontare i risultati?

Sia Orange che NLTK sono entrambe librerie mature e stabili (più di 10 anni di sviluppo per ciascuna libreria) originati in grandi università; condividono alcune funzionalità comuni principalmente gli algoritmi di Machine Learning . Oltre a ciò, sono molto diversi per portata, scopo e implementazione.

Orange è indipendente dal dominio - non diretto verso una particolare disciplina accademica o dominio commerciale, invece si pubblicizza come data mining completo e piattaforma ML. Il focus è sugli strumenti e non sull'applicazione di tali strumenti in una particolare disciplina.

Le sue caratteristiche includono IO, l'algoritmo di analisi dei dati e una tela di visualizzazione dei dati.

NLTK, d'altra parte, ha iniziato come e rimane un progetto accademico in un dipartimento di linguistica computazionale di una grande università. L'attività che hai citato (classificazione del contenuto del documento) e il tuo algoritmo di scelta (Naive Bayesian) sono praticamente al centro delle funzionalità di NLTK. NLTK infatti ha ha algoritmi ML/Data Mining ma è solo perché hanno una particolare utilità nella linguistica computazionale.

NLTK naturalmente include alcuni algoritmi ML ma solo perché hanno utilità nella linguistica computazionale, insieme con parser documento, tokenizers, parte-di-speech analizzatori, ecc .-- tutte che comprendono NLTK.

Forse l'implementazione di Naive Bayes in Orange è altrettanto buona, sceglierei comunque l'implementazione di NLTK perché è chiaramente ottimizzata per l'attività specifica che hai menzionato.

Esistono numerose esercitazioni su NLTK e in particolare per Naive Bayes per la classificazione dei contenuti . Un post sul blog da Jim Plus e un altro su streamhacker.com, ad esempio presenta eccellenti esercitazioni per l'utilizzo di Naive Bayes di NLTK; il secondo include una discussione riga-per-riga del codice richiesto per accedere a questo modulo. Gli autori di entrambi questi post riportano buoni risultati utilizzando NLTK (92% nel primo, 73% nel secondo).

+3

Sempre stupito dalla profondità delle risposte, arrivo qui, grazie. – philgo20

+0

Sono un esordiente totale in questo campo. Quello che vogliamo fare è classificare il contenuto in categorie in base alle funzionalità presenti nel testo, anche se il nome della categoria non è una delle caratteristiche. (Vuoi classificare l'arancione come evento di frutta se la parola "frutto" non è nel testo.) Dovremmo cercare un tipo specifico di classificazione o Naive Bayes è quello che stiamo cercando? – philgo20

+0

Dovrei forse aggiungere che il risultato dovrebbe essere più categorie. Ciò vanifica lo scopo di Naive Bayes? Il metodo Fisher è più appropriato in questo caso? – philgo20

3

Non so Arancione, ma +1 per NLTK:

ho successivamente utilizzato gli strumenti di classificazione in NLTK per classificare il testo e metadati relativi. Bayesian è l'impostazione predefinita, ma esistono altre alternative come Entropia massima. Essendo anche un kit di strumenti, puoi personalizzare come meglio credi, ad es. creando le tue caratteristiche (che è quello che ho fatto per i metadati).

NLTK ha anche un paio di buoni libri, uno dei quali è disponibile sotto Creative Commons (così come O'Reilly).

1

NLTK è un toolkit che supporta un modello a quattro stato di elaborazione del linguaggio naturale:

  1. creazione di token: il raggruppamento personaggi come parole. Questo spazia dalle robe regex alle contrazioni come "can not"
  2. Tagging. Questo sta applicando i tag di parte del discorso ai token (ad esempio "NN" per il nome, "VBG" per il verbo gerund). Questo è tipicamente fatto allenando un modello (ad esempio Hidden Markov) su un corpus di addestramento (cioè una grande lista di frasi scritte a mano).
  3. Chunking/Parsing. Questo sta prendendo ogni frase taggata e estraendo le caratteristiche in un albero (ad es. Questo può essere in accordo con una grammatica scritta a mano o con una formazione su un corpus.
  4. Estrazione informazioni. Questo sta attraversando l'albero ed estraendo i dati. Questo è dove il tuo specifico frutto arancione = sarebbe stato fatto.

NLTK supporta WordNet, un enorme dizionario semantico che classifica le parole. Quindi ci sono 5 definizioni di nomi per arancione (frutta, albero, pigmento, colore, fiume in Sud Africa). Ognuno di questi ha uno o più 'percorsi hypernym' che sono gerarchie di classificazioni. Per esempio. il primo senso di 'arancione' ha due percorsi:

  • arancione/Citrus/edible_fruit/frutta/reproductive_structure/plant_organ/plant_part/natural_object/intero/oggetto/physical_entity/entità

e

  • arancione/citrus/edible_fruit/produrre/cibo/solido/materia/physical_entity/entità

a seconda delle appli Nel dominio cationico è possibile identificare l'arancione come un frutto, un alimento o una cosa vegetale. Quindi puoi usare la struttura ad albero chunked per determinare di più (chi ha fatto cosa al frutto, ecc.)