2010-05-06 11 views
12

Sto cercando di attuare un approccio ingannevole bayseian per trovare l'argomento di un determinato documento o flusso di parole. C'è un approccio Naive Bayesiano che potrei essere in grado di cercare?Naive Bayesian per il rilevamento degli argomenti utilizzando l'approccio "Bag of Words"

Inoltre, sto cercando di migliorare il mio dizionario man mano che procedo. Inizialmente, ho un mucchio di parole che mappano a un argomento (hardcoded). A seconda dell'occorrenza delle parole diverse da quelle già mappate. E a seconda delle occorrenze di queste parole, voglio aggiungerle alle mappature, migliorando e imparando a conoscere le nuove parole che si riferiscono all'argomento. E anche cambiando le probabilità delle parole.

Come dovrei andare a fare questo? Il mio approccio è giusto?

Quale linguaggio di programmazione sarebbe più adatto all'implementazione?

risposta

26

implementazioni esistenti di Naive Bayes

Si sarebbe probabilmente meglio solo utilizzando uno dei pacchetti esistenti che supportano la classificazione dei documenti utilizzando Naive Bayes, ad esempio:

Python - Per fare questo usando basato su Python Natural Language Toolkit (NLTK), vedere la sezione Document Classification nel numero NLTK book disponibile gratuitamente.

Rubino - Se Ruby è più vostra cosa, è possibile utilizzare la gemma Classifier. Ecco il codice di esempio che rileva whether Family Guy quotes are funny or not-funny.

Perl - Perl ha il modulo Algorithm::NaiveBayes, con tanto di frammento di utilizzo di esempio nel pacchetto synopsis.

C# - C# programmatori possono utilizzare nBayes. La home page del progetto contiene un codice di esempio per un semplice classificatore spam/non spam.

Java - gente Java hanno Classifier4J. È possibile visualizzare uno snippet di codice di allenamento e calcolo del punteggio here.

bootstrap classificazione da Parole

Sembra che si vuole iniziare con una serie di parole chiave che sono noti per spunto per determinati argomenti e quindi utilizzare tali parole chiave per bootstrap a classifier.

Questa è un'idea abbastanza intelligente. Date un'occhiata al documento Text Classication by Bootstrapping with Keywords, EM and Shrinkage di McCallum e Nigam (1999). Seguendo questo approccio, sono stati in grado di migliorare l'accuratezza della classificazione dal 45% ottenuto utilizzando le parole chiave codificate solo al 66% utilizzando un classificatore Naive Bayes bootstrap. Per i loro dati, il secondo è vicino ai livelli umani di accordo, in quanto le persone si sono accordate reciprocamente sulle etichette dei documenti il ​​72% delle volte.

+1

Gli sviluppatori C# possono anche utilizzare [Accord Framework.NET] (http://accord-framework.net/).Documentazione di Naive Bayes [qui] (http://accord-framework.net/docs/html/N_Accord_MachineLearning_Bayes.htm) –