Игнорировать определенные слова при проверке орфографии с Enchant

Я проверяю правописание некоторых файлов с помощью Python Enchant и хочу, чтобы он игнорировал имена собственные. Компромисс между исправлением неправильно написанных имен собственных и неправильным "исправлением" незнакомых кажется слишком большим (хотя любые советы по этому поводу также приветствуются!)

Это мой код, но на данный момент он все еще исправляет слова в списке NNP.

chkr = SpellChecker("en_GB")

f = open('ca001_mci_17071971.txt', 'r', encoding = 'utf-8')
text = f.read()
tagged = pos_tag(word_tokenize(text))
NNP = [(word) for word, tag in tagged if tag == 'NNP']
chkr.set_text(text)
for err in chkr:
    if err is word in NNP:
        err.ignore_always()
else:
    sug = err.suggest()[0]
    err.replace(sug)

corrected = chkr.get_text()
print (NNP)
print (corrected) 

Выход:

['Boojum', 'Boy', 'Charlotte']

Those blessed days of summer are here when you just need to wear shirt,       
trousers, & sandals all day, & the kiddies run naked in & out of the garden. 
Both the Boomer Boy & Charlotte are getting quite tanned. We're having a long
spell of time settled weather.

Можно видеть, что 'Boojum' был исправлен в Boomer, даже если он находится в списке NNP.

Может ли кто-нибудь указать мне правильное направление? Я довольно новичок в Python. Заранее спасибо.

1 ответ

Решение

Я понял это. Пришлось сказать ему, что слова ошибки были укусами, чтобы он мог сравнить их со словами в списке NNP. Новый код:

chkr = SpellChecker("en_GB")

for file in os.listdir(path):       
        f = open(file, 'r', encoding = 'utf-8')
        text = f.read()
        tagged = pos_tag(word_tokenize(text))
        NNP = [word for word, tag in tagged if tag == 'NNP']
        chkr.set_text(text)
        for err in chkr:
            if str(err.word) in NNP:
                err.ignore_always()
            else:
                sug = chkr.suggest()
                if len(sug) is not 0:
                    err.replace(sug[0])

        corrected = chkr.get_text()

Также исправлено, что если у Enchant нет предложений, ошибка останется на месте.

Другие вопросы по тегам