2009-11-10 15 views
-2

J'ai besoin de construire un correcteur d'orthographe dans ASP.NET ... Ce qui suit sont mes exigences.Orthographe Suggestor dans ASP.NET

Cas 1: Ma liste de mots ne sont pas seulement des mots englist mais comprendra aussi des codes comme AACD, ESSA, BIMER etc ... Je peux fournir ces mots (nouveaux) de la base de données.

Cas 2: J'ai également besoin d'un orthographe similaire pour la langue non-anglaise, même ici, je peux fournir une liste de mots d'une base de données.

Maintenant, Toutes les suggestions quant à la façon dont je implémente la même chose sont les bienvenues.

En outre, j'ai trouvé le code Python suivant, à partir d'un site Web, qui indique qu'il renvoie la suggestion la plus probable (en anglais bien sûr). Si quelqu'un peut le traduire en C#, ce serait vraiment utile.

 import re, collections 
    def words(text): return re.findall('[a-z]+', text.lower()) 
    def train(features): 
     model = collections.defaultdict(lambda: 1) 
     for f in features: 
      model[f] += 1 
     return model 
    NWORDS = train(words(file('big.txt').read())) 
    alphabet = 'abcdefghijklmnopqrstuvwxyz' 
    def edits1(word): 
     s = [(word[:i], word[i:]) for i in range(len(word) + 1)] 
     deletes = [a + b[1:] for a, b in s if b] 
     transposes = [a + b[1] + b[0] + b[2:] for a, b in s if len(b)>1] 
     replaces = [a + c + b[1:] for a, b in s for c in alphabet if b] 
     inserts = [a + c + b  for a, b in s for c in alphabet] 
    return set(deletes + transposes + replaces + inserts) 
    def known_edits2(word):  
     return set(e2 for e1 in edits1(word) for e2 in edits1(e1) if e2 in NWORDS) 

    def known(words): return set(w for w in words if w in NWORDS) 
    def correct(word):  
     candidates = known([word]) or known(edits1(word)) or known_edits2(word) or [word] 
     return max(candidates, key=NWORDS.get) 

Merci - Raja

+0

Nous avons besoin d'appeler la méthode correcte (» speling "), qui renvoie String" Orthographe "comme suggestion la plus probable. –

+0

Salut, Quelqu'un là-bas m'a rejeté, Pourriez-vous s'il vous plaît laissez-moi savoir pourquoi? –

+2

Je suppose que les downvotes sont parce que vous n'avez fait aucun effort pour traduire le code vous-même. SO est là pour vous aider avec les problèmes de programmation, pas pour faire l'intégralité du travail pour vous. Dans tous les cas, si vous voulez le correcteur d'orthographe de Norvig en C#, voyez sa page d'origine. Il y a des liens vers le bas pour les gens qui ont traduit son code original: http://norvig.com/spell-correct.html –

Répondre

2

Le produit commercial que je travaille sur les utilisations NETSpell Spell Checker, il dispose d'un outil de dictionnaire qui vous permet d'ajouter des dictionnaires personnalisés et des mots.

4

Une autre alternative est NHunspel

NHunspell est une open source sort vérificateur pour le .NET Framework. C# et Le code exemple Visual Basic est disponible pour la vérification orthographique, la césure et la recherche sysnonyme via thesaurus.

using (Hunspell hunspell = new Hunspell("en_us.aff", "en_us.dic")) 
{ 
    bool correct = hunspell.Spell("Recommendation"); 
    var suggestions = hunspell.Suggest("Recommendatio"); 
    foreach (string suggestion in suggestions) 
    { 
     Console.WriteLine("Suggestion is: " + suggestion); 
    } 
} 
+1

NHunspell + le [dictionnaire d'orthographe anglais américain de Firefox] (https://addons.mozilla.org/en-US/firefox/addon/united-states-english-spellche/) était parfait pour mes besoins. –

0

sort .NET gratuit vérificateur basé autour d'une zone de texte WPF qui peut être utilisé côté client ou serveur peut être vu here. Cela peut être transmis une liste de mots à ignorer (votre dictionnaire personnalisé)

de divulgation complète ... écrit par votre serviteur avec l'aide de débordement de pile bien sûr :)