前言
利用viterbi算法进行自然语言处理当中的音字转换,即给出一串拼音,输出这串拼音对应的句子。
代码
import os
import pandas as pd
import numpy as np
from collections import Counter
import json
yl = 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', 'r')
f2 = open('char.json', 'r')
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