2010-10-20 9 views
17

Wystarczy użyć tego jako przykładu, użytkownicy StackOverflow już powiązane znaczniki do pytań na wiele pytań.Czy istnieje biblioteka uczenia maszynowego .NET, która może na przykład sugerować tagi dla pytania?

Czy istnieje biblioteka uczenia maszynowego .NET, która może wykorzystać te historyczne dane, aby "nauczyć się" kojarzenia tagów z nowymi pytaniami i proponować je użytkownikowi?

+1

To zakłada, że ​​pytanie będzie zawierało odpowiednie znaczniki osadzone w tekście. Na twoje pytanie algorytm może wymyślić ".Net" i "uczyć się", ale nie ma C#. –

+3

@Noel: Ale czy teraz pytanie "poprawnie" zostało oznaczone? Rozumiem, co masz na myśli, ale szczerze mówiąc, treść pytania dotyczy tylko .NET i uczenia maszynowego - może być napisana w języku F #, VB lub zarządzanym C++ (jeśli była przechowywana tylko dla .NET) –

+0

@Noel Abrahams: gdzie jest to założenie? Kto powiedział, że tagi zostaną wyjęte z tekstu? –

Odpowiedz

1

Wygląda to podobnie do filtrowania spamu, ale z większą liczbą segmentów.

Powszechnie stosowaną techniką filtrowania spamu jest Bayesian filters. A Google search dadzą ci wiele opcji, w tym pierwsze trafienie na CodeProject.

+0

@Paul: Gdy pytanie nie ma odpowiedzi, nie powinieneś dawać +1 za "interesujący artykuł w linkach", ponieważ usuwa on pytanie z listy pytań bez odpowiedzi. Nie sprawdziłem jeszcze tego, by sprawdzić, czy odpowiada na pytanie. –

+0

@Ciwee, nie sądzę, że podanie +1 do komentarza spowodowałoby usunięcie pytania z listy pytań bez odpowiedzi. Myślę, że to mylące, że akceptujesz odpowiedź: – Neowizard

+0

@Neowizard: Przycisk bez odpowiedzi na górze pokazuje pytania, na które nie ma odpowiedzi ORAZ nie mają miejsca, jak widać w opisie w prawym górnym rogu strony . –

1

Temat uczenia maszynowego to bardzo złożone pole, a jeśli naprawdę chcesz stworzyć taką aplikację, będziesz potrzebował badań, niezależnie od używanej biblioteki.

W każdym razie proponuję użyć SVM (maszyn wektorowych wspierających). Używałem go w pythonie w tym celu, i to jest niesamowite. Musisz jednak znaleźć implementację C#. Chodzi o to, aby odwzorować cechy tekstu (np. "Słowa kończące się na .Net") na wymiary, a następnie użyć tych funkcji, aby utworzyć regiony w utworzonej przestrzeni do oznaczania (cokolwiek w podprzestrzeni X zostanie oznaczone jako Y).

To naprawdę skomplikowany temat, a moje wyjaśnienie może tylko sprawić, że będzie on mniej czytelny, więc pozostawię to, jeśli zechcesz, przeczytasz i wykorzystasz.

Oto coś, byś mógł zacząć od Wikipedia - Support Vector machine (SVM)

Edit: Wydaje się, że LibSVM (biblioteka Pracowałem z Pythona) jest również dostępny dla C# od jego HomePage. Powodzenia

10

Zrobiłem bibliotekę uczenia maszynowego, która może pomóc: http://machine.codeplex.com. Jego podstawowym założeniem jest to, że możesz używać prostych list obiektów POCO i tworzyć z nich modele poprzez opisywanie klas. Mam nadzieję że to pomoże!

--- Aktualizacja Mam już przeniesiony projekt tutaj: http://numl.net.

2

Istnieje biblioteka .NET dla popularnego silnika statystycznego, R Project. Biblioteka nazywa się R.NET.

WEKA, narzędzie do eksploracji danych dla Javy, wymienia several possibilities, aby korzystać z biblioteki z .NET. Jednak nie jest to portowane ani otoki, ale stanowi pomost pomiędzy komunikacją między platformami .NET i Java.

Powiązane problemy