我正在阅读由 bengali 单词组成的文本文件。但我无法打印像这样的依赖元音...... 这是我的示例代码和输出
import unicodedata
bengali_phoneme_maplist = {
u'অ':'A',u'আ':'AA',u'ই':'I',u'ঈ':'II',u'উ':'U',u'ঊ ':'UU',u'ঋ ':'R',u'ঌ ':'L',u'এ ':'E',
u'ঐ ':'AI',u'ও ':'O',u'ঔ ':'AU',u'ক':'KA',u'খ ':'KHA',u'গ ':'GA',u'ঘ':'GHA',u'ঙ ':'NGA',
u'চ ':'CA',u'ছ':'CHA',u'জ ':'JA',u'ঝ':'JHA',u'ঞ':'NYA',u'ট ':'TTA',u'ঠ':'TTHA',
u'ড ':'DDA',u'ঢ':'DDHA',u'ণ ':'NNA',u'ত ':'TA',u'ত ':'THA',u'দ':'DA',u'ধ':'DHA',
u'ন':'NA',u'প':'PA',u'ফ':'PHA',u'ব':'BA',u'ভ':'BHA',u'ম ':'MA',u'য ':'YA',u'র':'RA',
u'ল ':'LA',u'শ ':'SHA',u'ষ':'SSA',u'স ':'SA',u'হ':'ha',u' া ':'AAV',u' ি':'IV',
u'ী':'IIV',u'ু':'UV',u'ূ':'UUV',u'ৃ':'RRV',u'ৄ ':'RR',u'ৄ':'EV',u' ৈ':'EV',u'়':'NUKTHA',
u'ঽ':'AVAGRAHA'
}
bengali_phoneme_maplist_normalise = {
unicodedata.normalize('NFKD', k): v for k, v in bengali_phoneme_maplist.items()
}
with open('bengali.txt', 'r') as infile:
lines=infile.readlines()
for index, line in enumerate(lines):
print('Phonemes in line{0}.total{1} symbols'.format(index, len(line)))
unknown=[]
words=line.split()
for word in words:
print(word, ':', sep=' ', end='')
for character in word:
c = unicodedata.normalize('NFKD', character).casefold()
try:
print(bengali_phoneme_maplist_normalise[c], sep='', end='')
except KeyError:
print('_', sep='', end='')
if c not in unknown:
unknown.append(c)
print()
if unknown:
print('Unrecognised symbols: {0} (total {1} symbols)'.format(','.join(unknown), len(unknown) ) )
示例输入文件
bengali.txt
:
text_000002 "শিল্পাঞ্চলে ঢোকার মুখে, স্ন্যাক্সবারে খাবার কিনছিলেন, বহুজাতিক তথ্যপ্রযুক্তি সংস্থার কর্মী, শুভময় বন্দ্যোপাধ্যায়
输出示例:
Phonemes in line0.total126 symbols
text_000002 :___________
"শিল্পাঞ্ :_____PA_NYA____
ঢোক :DDHA_KA_RA
মুখ, :_UV___
স্ন্যাক্সব :__NA___KA__BA_RA_
খাব :__BA_RA
কিনছি, :KA_NACHA___NA_
বহুজাত :BAhaUV____KA
তথ্যপ্রযুক্ত :____PA_RA_UVKA___
সংস্থ :______RA
কর্ম, :KARA__IIV_
শুভময় :_UVBHA__
বন্দ্যোপাধ্ :BANA_DA___PA_DHA____
Unrecognised symbols: t,e,x,_,0,2,",শ,ি,ল,্,া,চ,ে,,ো,ম,খ,,,স,য,জ, (total 25 symbols)
(请注意,我对孟加拉语一无所知。:)
您的代码中存在一些问题:
bengali_phoneme_maplist
定义中有许多额外的空格字符。例如,u'ঊ '
应该是 u'ঊ'
。而且在文本编辑器中输入u'া'这样的字符似乎不太容易,所以我建议你在代码中直接使用unicode,如'\u09be':'AAV'
。 (实际上我建议你对所有字符使用 '\uxxxx'
并在注释中写下真正的字符。)u'ত':'TA',u'ত':'THA'
应更改为 u'ত':'TA',u'থ':'THA'
。bengali_phoneme_maplist
中的字符不完整。例如,没有 ো 、 ৌ 、 ্ 和 ং修正这些错误后,您将得到正确的结果。