Google hat Vorschlag kommen, wenn Sie einen Tippfehler machen, wie machen sie es?Machine Learning für Tippfehler
Antwort
nur Frequenzzahl von Wörtern, die genug ist, ich glaube nicht, dass Sie für diese komplizierte brauchen somehthing, nicht einmal Maschine Lernen. Keine Notwendigkeit, ein Modell zu lernen. Wenn Sie etwas seltsames, aber kein Tippfehler eingegeben haben, werden Sie bemerken, dass sie versuchen, es auch zu "korrigieren".
Peter Norvig (Forschungsdirektor bei Google) hat eine kleine Einleitung zu spell checking in Python mit statistischen Heuristiken geschrieben.
Es ist ein großartiger Lesevorgang und zeigt, wie statistische Heuristiken auf eine sehr einfache Art und Weise verwendet werden können. Es könnte ziemlich leicht nach C# (mit LINQ) portiert werden (Pythons Listenkompressentierungen sind sehr nahe an Linq-Ausdrücken).
Der Kernteil dieser Schnipsel wird für ein Wort (edit1 Funktion) der C# Äquivalent ist die folgende
public static IEnumerable<string> Edit1(string word){
const string alphabet = "abcdefghijklmnopqrstuvwxyz";
var s = from i in Enumerable.Range (0, word.Length - 1)
select new Pair<string>(word.Substring (0, i), word.RSlice(i));
var deletes = from p in s
select p.First + p.Second.RSlice (1);
var transposes = from p in s
let b1 = p.Second
where b1.Length > 2
select p.First + b1 [1] + b1 [0] + b1.RSlice (2);
var replaces = from p in s
let b = p.Second
where b.Length > 0
from c in alphabet select p.First + c + b.RSlice (1);
var inserts = from p in s
from c in alphabet
select p.First + c + p.Second;
return deletes.Concat (transposes).Concat(replaces)
.Concat(inserts).Distinct();}
dem Paar einen armen Mannes Tupel (offensichtliche Code nicht enthalten) alle einfachen Fehler aufweist, ist und RSlice ist ein schlechter Mann String-nur rechts Spleißen:
public static class Extensions {
public static string RSlice (this string input, int i)
{
if (i > input.Length - 1)
return "";
return input.Substring (i);
}}
Nachdem Sie die Änderungen für ein Wort bekam, man sucht das Wort im Wörterbuch oder die vorhandenen Wörter der Änderungen (das häufigste Wort Auswahl) oder die Wörter für edits1 (edits1 (word)) (Wählen Sie das häufigste Wort). Überraschenderweise kann dies ziemlich schnell und ziemlich genau sein. Ich werde einen Link zu meinem Blog für das ganze Zeug portiert haben.
Edit: oops gerade gesehen, dass ein Link in einer Antwort oben auf einen Zeiger auf das gleiche Norvig des Stück wies ...
Werden Sie wirklich eine C# Version veröffentlichen? heee man wollte ich nur wissen, aber wenn du ein Ass bist hey gut was soll ich sagen – abmv
Ich habe gerade einen rohen Port fertig. Es ist ein bisschen hässlich und Uhren bei ~ 100 Zeilen statt der ~ 20 ursprünglichen (hey C# 4, was ist mit dem Vergessen schöne COM-Interop und Scheiben in Listen?) –
+1 für C# Übersetzung. Sehr nett und nützlich für "den Rest von uns". –
- 1. Azure Machine Learning - CORS
- 2. NLP/Machine Learning Textvergleich
- 3. PHP-Machine-Learning-Bibliothek?
- 4. Python Machine Learning Warnung
- 5. Export Machine Learning Modell
- 6. Machine Learning-Algorithmus für die Datenklassifizierung.
- 7. C/C++ Machine Learning-Bibliotheken für Clustering
- 8. Azure Machine Learning Eingabegröße angeben
- 9. Machine Learning Instanz basierte Lernen
- 10. Azure Machine Learning-Webservice Eingabedatenproblem
- 11. Automatisierung von Azure Machine Learning
- 12. Großvolumiges SVM (Machine Learning) System
- 13. GATE Machine Learning funktioniert nicht
- 14. Machine Learning-Bibliotheken in C#
- 15. Azure Machine Learning Request Reaktionslatenz
- 16. Machine Learning Training & Test Datenaufteilungsmethode
- 17. Machine Learning Algorithmus zur Vorhersage von Innentemperatur
- 18. Machine Learning-Bibliotheken in s + (oder R)?
- 19. Machine Learning Naive Bayes Klassifizierer in Python
- 20. Verwenden der Apache Mahout Machine Learning-Bibliotheken
- 21. Weka Machine Learning: ARFF-Datei: multiple Relationen
- 22. Machine Learning-Algorithmen: Welchen Algorithmus für welches Problem?
- 23. Machine Learning Multiclass-Klassifizierung für Tausende von Klassen
- 24. Wie man eine Einkaufsliste automatisch sortiert? (Naive Machine Learning)
- 25. Machine Learning - Vorhersage mehrerer Variablen, die zu 100% ergeben
- 26. Machine Learning Ansatz zum Hinzufügen von Stille zu übersetzten Untertiteln
- 27. Automatisierter Test für Tippfehler
- 28. Machine Learning Klassifizierung: Zielvariable fast vollständig eine Klasse
- 29. Machine Learning auf Bildern: wie man die Daten vorverarbeitet
- 30. Machine Learning Philosophie: Anwendung von Modell auf verzerrte Daten
gleiche Frage: http://stackoverflow.com/questions/307291/how-does- Die-google-did-you-mean-Algorithmus-Arbeit – seb