前言
利用viterbi算法进行自然语言处理当中的音字转换,即给出一串拼音,输出这串拼音对应的句子。
代码
import osimport pandas as pdimport numpy as npfrom collections import Counterimport jsonyl = pd.read_table(uAbgram.txt, header=None, delim_whitespace=True)sum = float(np.sum(np.array(yl.iloc[:, 1])))w_lis = list(yl.iloc[:, 0])# 读取词频统计、音频统计词典def read_dict():f1 = open(pron.json,
)f2 = open(char.json,
)pron = json.load(f1)char = json.load(f2)return pron, char# 计算发射概率def cal_init_prob(sentence, pron):first = sentence[0]shoot_prob = dict()for c in pron[first]:shoot_prob[c] = (-np.log(float(yl[yl.iloc[:, 0] == c][1