У меня есть папка, содержащая несколько других папок и каждая содержит много текстовых файлов. Мне нужно извлечь 5 слов до и после определенного слова и следующего кода работает нормально.Как нормализовать персидские тексты с Hazm
Проблема в том, что, поскольку я не нормализует текст, он просто возвращает несколько предложений, в то время как их больше. На персидском языке существует модуль под названием hazm для нормализации текстов. Как я могу использовать это в этом коде?
Для примера нормировки: "ك" должен измениться на "ک" или "ؤ" должен измениться на "و". Потому что первые два на самом деле арабский алфавиты, которые были использованы в персидский. Без нормализации код просто возвращает слова, которые записаны со второй формой, и не распознает слова, которые находятся в первых формах Arabic).
import os
from hazm import Normalizer
def getRollingWindow(seq, w):
win = [next(seq) for _ in range(11)]
yield win
for e in seq:
win[:-1] = win[1:]
win[-1] = e
yield win
def extractSentences(rootDir, searchWord):
with open("پاکت", "w", encoding="utf-8") as outfile:
for root, _dirs, fnames in os.walk(rootDir):
for fname in fnames:
print("Looking in", os.path.join(root, fname))
with open(os.path.join(root, fname), encoding = "utf-8") as infile:
#normalizer = Normalizer()
#fname = normalizer.normalize(fname)
for window in getRollingWindow((word for line in infile for word in line(normalizer.normalize(line)).split()), 11):
if window[5] != searchWord: continue
outfile.write(' '.join(window)+ "\n")