Вопрос

Мне нужно создать суггестор правописания в ASP.NET...Ниже приведены мои требования.

Случай 1:Мой список слов состоит не только из английских слов, но также будет включать некоторые коды, такие как AACD, ESSA, BIMER и т.д...Я могу предоставить такие (Новые) слова из базы данных.

Случай 2:Мне также нужен аналогичный подсказчик правописания для неанглийского языка, даже здесь я могу предоставить список слов из базы данных.

Теперь любые предложения относительно того, как я реализую то же самое, приветствуются.

Кроме того, я нашел следующий код Python с веб-сайта, в котором указано, что он возвращает наиболее вероятное предложение (на английском, конечно).Если кто-нибудь сможет перевести это на C #, это было бы действительно полезно.

 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)

Спасибо - Раджа

Это было полезно?

Решение

Коммерческий продукт, над которым я работаю, использует Проверка орфографии NetSpell, в нем есть инструмент "словарь", который позволяет вам добавлять пользовательские словари и слова.

Другие советы

Другой альтернативой является Нюнспел

NHunspell является свободным открытым исходным кодом заклинание проверка на .Чистая рамок.Доступны примеры кода на C # и Visual Basic для проверки орфографии, расстановки переносов и поиска синонимов через тезаурус.

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 );
    }
}

Бесплатно.Можно увидеть сетевую проверку орфографии, основанную на текстовом поле WPF, которое может использоваться на стороне клиента или сервера здесь.Это может быть передан список слов для игнорирования (ваш пользовательский словарь).

Полное раскрытие...написано вашим покорным слугой с некоторой помощью stack overflow, конечно :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top