2010-10-20 14 views
17

Solo per utilizzarlo come esempio, gli utenti di StackOverflow hanno già associato tag a domande per un sacco di domande.Esiste qualche libreria di apprendimento automatico .NET che potrebbe, ad esempio, suggerire tag per una domanda?

Esiste una libreria di apprendimento automatico .NET che potrebbe utilizzare questi dati storici per "imparare" come associare i tag alle domande appena create e suggerirli all'utente?

+1

Ciò presuppone che la domanda conterrà i tag pertinenti incorporati nel testo. Per la tua domanda l'algoritmo potrebbe venire con ".Net" e "learn", ma senza C#. –

+3

@Noel: Ma la domanda "correttamente" è stata taggata ora? Vedo cosa intendi, ma per essere onesti il ​​contenuto della domanda riguarda solo .NET e l'apprendimento automatico: potrebbe essere scritto in F #, VB o in C++ gestito (se fosse mantenuto solo su .NET) –

+0

@Noel Abrahams: dov'è quella supposizione? Chi ha detto che i tag sarebbero stati estratti dal testo? –

risposta

1

Questo è simile al filtro antispam, ma con più bucket.

Una tecnica ampiamente utilizzata per il filtraggio dello spam è Bayesian filters. A Google search ti daranno molte opzioni, incluso il primo hit su CodeProject.

+0

@Paul: quando una domanda non ha una risposta, non devi fare +1 per "articolo interessante nei link" in quanto rimuove la domanda dall'elenco delle domande senza risposta. Non ho ancora controllato per vedere se risponde alla domanda. –

+0

@Ciwee, non mi importa che dare un +1 a un commento rimuova la domanda dall'elenco delle domande senza risposta. Penso che tu stia confondendo questo con l'accettazione di una risposta – Neowizard

+0

@Neowizard: il pulsante senza risposta in alto mostra domande a cui non è stata data risposta E non hanno un upvote, come puoi vedere nella descrizione nell'angolo in alto a destra della pagina . –

1

Il tema dell'apprendimento automatico è un campo molto complesso e, se si desidera veramente creare un'applicazione di questo tipo, è necessario eseguire alcune ricerche indipendentemente dalla modalità di utilizzo.

In ogni caso, suggerirei di usare SVM (supporto macchine vettoriali). L'ho usato in Python per questo scopo esatto, ed è incredibile. Dovrai comunque trovare un'implementazione in C#. L'idea è di mappare le caratteristiche del testo (come "le parole che terminano con .Net") alle dimensioni, quindi usare quelle caratteristiche per creare regioni nello spazio creato per il tagging (qualsiasi cosa nel sotto-spazio X sarà etichettata come Y).

Questo è un argomento molto complesso, e la mia spiegazione non può che renderlo meno chiaro, quindi lo lascerò a te se lo desideri, da leggere e utilizzare.

Ecco qualcosa per iniziare da Wikipedia - Support Vector machine (SVM)

Edit: Sembra che LibSVM (la libreria ho lavorato con in python) è disponibile per C# anche dalla sua HomePage. Buona fortuna

10

Ho creato una libreria di apprendimento automatico che potrebbe aiutare: http://machine.codeplex.com. La premessa di base è che puoi usare semplici elenchi di oggetti POCO e creare modelli da essi annotando le classi. Spero che questo ti aiuti!

--- Aggiornamento Da allora ho spostato il progetto qui: http://numl.net.

2

Esiste una libreria .NET per il popolare motore di calcolo statistico, R Project. La biblioteca si chiama R.NET.

WEKA, lo strumento di data mining per Java, menziona several possibilities per utilizzare la libreria con .NET. Tuttavia, non è porting o un wrapper ma collega la comunicazione tra .NET e Java.

Problemi correlati