Прочитав How to write a spelling corrector от Peter Norvig, я попытался заставить код работать на персидский язык. Я переписал код вроде этого:Корректор орфографии для неанглийских символов
import re, collections
def normalizer(word):
word = word.replace('ي', 'ی')
word = word.replace('ك', 'ک')
word = word.replace('ٔ', '')
return word
def train(features):
model = collections.defaultdict(lambda: 1)
for f in features:
model[f] += 1
return model
NWORDS = train(normalizer(open("text.txt", encoding="UTF-8").read()))
alphabet = 'ا آ ب پ ت ث ج چ ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ی ء'
В исходном коде Норвига, в NWORDS является словарем, который записывает слова и их число вхождений в тексте. Я попробовал print (NWORDS)
, чтобы узнать, работает ли он с персидскими символами, но результат не имеет значения. Он не учитывает слова, он считает появление отдельных букв.
Кто-нибудь знает, где код поступил не так?
P.S. 'text.txt' на самом деле является длинной конкатенацией персидских текстов, как и ее эквивалент в коде Норвига.
и вы, вероятно, хотите, чтобы убедиться, что вы удаляете знаки препинания – tacaswell
Спасибо большое! Это было очень полезно. – Omid
У вас это получилось? У меня возникли проблемы с преобразованием орфографического чека на датский с буквами ÆØÅ – boje