Я работаю над комментарием к «Этике отцов» и хочу, чтобы читатели могли читать источники, которые я цитирую, на древнееврейском языке. Я получаю большую часть своих источников с sefaria.org, и, к сожалению, многие источники имеют Nekudos (знаки гласных), а большинство из них - нет. Для последовательности и профессионализма я хочу, чтобы все исходники не содержали Nekudos.
Например , эта строка: מֹשֶׁה קִבֵּל תּוֹרָה מִסִּינַי. אוֹמֵר אֲנִי, לְפִי שֶׁמַּסֶּכֶת זוֹ должно быть משה קבל תורה מסיני. אומר אני שמסכת זו. Я ожидаю, что мне нужно будет делать это сотни раз, поэтому мне нужно что-то быстрое. Кто-то однажды сделал мне документ с макросами, чтобы сделать это, но он не работает в Word 2016. У кого-нибудь еще есть эффективный способ сделать это? Большое спасибо.
Быстрый поиск в Google hebrew remove nikkud
дал ответ.
На Github есть JavaScript с кодом предварительного просмотра в реальном времени . Если это небольшой текст, вы можете использовать JavaScript либо онлайн, либо загрузить и использовать его на своем компьютере (сохранить как .js
).
Все еврейские штрих-коды находятся между 1425 и 1479, а никкуд — между 0591 и 05C7.
Реализация Python (проверено):
import unicodedata
# nikkud-test.txt is the file you save your text in.
f= open('nikkud-test.txt','r', encoding='utf-8')
content = f.read()
normalized=unicodedata.normalize('NFKD', content)
no_nikkud=''.join([c for c in normalized if not unicodedata.combining(c)])
no_nikkud
f.close()
f = open('no-nikkud-test.txt','w',encoding='utf-8')
fw = f.write(no_nikkud)
f.close()
Это работает очень быстро.
ОБНОВЛЕНО: Как использовать этот скрипт?
nikkud-test.txt
в любом каталогеcmd
оболочку/командную строку/терминал.cd
затем каталогpython
или откройте iPython
консоль.no-nikkud-test.txt
появится в том же каталогеОБНОВЛЕНИЕ без терминала (протестировано с Python 3.5 IDLE и iPython)
niqqud.txt
в папке «Документы». (Windows / Mac)Скопируйте и вставьте функцию ниже:
def hasar_niqqud(source="niqqud.txt"):
"""This function removes niqqud vowel diacretics from Hebrew.
@param source: The source filename with .txt extension."""
import os, unicodedata
path = os.path.expanduser('~/Documents/'+str(source))
f= open(path,'r', encoding='utf-8')
content = f.read()
normalized=unicodedata.normalize('NFKD', content)
no_niqqud=''.join([c for c in normalized if not unicodedata.combining(c)])
f.close()
path = os.path.expanduser('~/Documents/'+str(source)[:-4]+"-removed.txt")
f = open(path,'w',encoding='utf-8')
f.write(no_niqqud)
f.close()
Затем запустите функцию с этим кодом:
hasar_niqqud()
Вот и все! Вы можете найти вывод в папке «Документы».niqqud-removed.txt
cmd
оболочку?Я искал то же самое. Покопался и нашел способы сделать это вне Word, но очень хотелось сделать это не выходя из Word. Прочитал еще немного и обнаружил, что ключ заключается в запуске поиска и замены, поиске гласных символов в блоке Unicode на иврите. Я хотел сохранить maqqef и sof pasuq, поэтому мне пришлось использовать три отдельных диапазона (если вам не нужны эти символы, вы можете упростить это до одного поиска по всему диапазону 1425-1479). Результаты ниже. Если вы выделите текст и запустите макрос, он будет применяться только к выделенному. Если у вас нет выбора, он будет работать до конца документа.
Sub HebrewDevocalizer()
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "[" & ChrW(1425) & "-" & ChrW(1469) & "]"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchKashida = False
.MatchDiacritics = False
.MatchAlefHamza = False
.MatchControl = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "[" & ChrW(1471) & "-" & ChrW(1474) & "]"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchKashida = False
.MatchDiacritics = False
.MatchAlefHamza = False
.MatchControl = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "[" & ChrW(1476) & "-" & ChrW(1479) & "]"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchKashida = False
.MatchDiacritics = False
.MatchAlefHamza = False
.MatchControl = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Если ваш список находится в Excel, вы можете использовать этот макрос (по предложению Джонатана Поттера). Выберите диапазон ячеек, затем выполните макрос в VBEditor.
Sub HebrewDevocalizer()
Dim i As Integer
For i = 1425 To 1469
Selection.Replace What:=ChrW(i), Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Next i
For i = 1471 To 1474
Selection.Replace What:=ChrW(i), Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:=False
Next i
For i = 1476 To 1479
Selection.Replace What:=ChrW(i), Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:=False
Next i
End Sub
Я искал приложение, которое предоставляло бы никуд (гласные) для слов, которые я использовал для создания глоссария. Однако, как только у меня появились слова в такой форме, я больше не мог их сортировать (как мы можем судить по этим вопросам).
Однако то же приложение, https://nakdan.dicta.org.il/ , также позволяет пользователю выбрать версию на «современном иврите», и если вы нажмете לחץ כאן (нажмите здесь), появится небольшое диалоговое окно. Нажмите на черный ящик, который в основном приведет вас к другой версии, чтобы добавить гласные, затем он фактически стирает все гласные, которые у вас были там.
Возможно, вам придется немного поиграть с ним, чтобы освоить его и / или делать это по частям.
Затем вы можете просто скопировать и вставить в свою электронную таблицу во временный столбец, чтобы использовать его для сортировки. После окончательной сортировки удалите этот столбец.
Попробуйте это для обходного пути!
С уважением, Мадлен
Элиягу
бесполезное занятие
ЖукФолк
Томас восстановил Монику Майрон
ЖукФолк