Domanda

Ho una serie di libri oggetti, classi Prenotare è definito come segue:

Class Book{

String title;
ArrayList<tags> taglist;

}

Dove titolo è il titolo del libro, Esempio: JavaScript per i manichini.

e taglist è un elenco di tag per il nostro esempio: JavaScript, jQuery, "Web Dev", ..

Come ho detto, avere una serie di libri che parlano di cose diverse: esso, biologia, storia, ogni libro ha un titolo e una serie di tag che lo descrivono ..

Devo classificare automaticamente quei libri in set separati per argomento, esempio:

Libri IT:

  • Java per i manichini
  • JavaScript per i manichini
  • Impara il flash in 30 giorni
  • Programmazione C ++

LIBRI DI STORIA :

  • Guerre mondiali
  • America nel 1960
  • La vita di Martin Luther King

Libri di biologia:

  • ....

Ragazzi, conoscete un algoritmo/metodo di classificazione per richiedere quel tipo di problemi?

Una soluzione è quella di utilizzare un'API esterna per definire la categoria del testo, ma il problema qui è che i libri sono in lingue diverse: francese, spagnolo, inglese ..

È stato utile?

Soluzione

Sembra un'attività di classificazione basata su parole chiave ragionevolmente semplice. Dato che stai usando Java, buoni pacchetti da considerare per questo sarebbe Classifier4j, Weka, o Lucene Mahout.

Classifier4j

Classifier4j supporta la classificazione utilizzando Naive Bayes e a spazio vettoriale modello.

Come visto in questo snippet del codice sorgente All'allenamento e al punteggio utilizzando il suo ingenuo classificatore Bayes, il pacchetto è ragionevolmente facile da usare. È anche distribuito sotto il liberale Licenza software Apache.

Weka

Weka è uno strumento molto popolare per il data mining. Un vantaggio di usarlo è che saresti in grado di sperimentare prontamente usando numerosi diversi modelli di apprendimento automatico per classificare i libri in argomenti tra cui Naive Bayes, Alberi decisionali, Supportare le macchine vettoriali, vicino più vicino, regressione logistica, e persino a Studente basato sul set di regole.

Troverai un tutorial sull'uso di Weka per la categorizzazione del testo qui.

Weka è, tuttavia, distribuito sotto il GPL. Non sarai in grado di utilizzarlo per il software a sorgente chiusa che si desidera distribuire. Ma potresti ancora usarlo per sostenere un servizio web.

Lucene Mahout

Mahout è progettato per l'apprendimento automatico su set di dati molto grandi. È costruito sopra Apache Hadoop e supporta la classificazione supervisionata utilizzando Naive Bayes.

Troverai un tutorial che copre come utilizzare Mahout per la classificazione del testo qui.

Come Classifier4j, Mahout è distribuito sotto il liberale Licenza software Apache.

Altri suggerimenti

Non vuoi qualcosa di così semplice come questo?

Map<Tag, ArrayList<Book>> m = {};
for (Book b : books) {
    for (tag t : b.taglist) {
        m.get(t).add(b);
    }
}

Adesso m.get("IT") restituirà tutti i libri, ecc ...

Sicuramente alcuni libri appariranno in più categorie, ma ciò accade anche nella vita reale ...

Quindi stai cercando di creare una mappa di tag che contiene una raccolta di libri?

MODIFICARE:

Sembra che potresti voler dare un'occhiata a Modello di spazio vettoriale applicare la classificazione delle categorie.

O Lucene o Classifier4j Offri un framework per questo.

Potresti voler alzare lo sguardo Algoritmi di abbinamento fuzzy come SoundEx e Levenshtein.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top