RT,NLP实验二。音字转换,其中用到的思想比较基本、比较老。
1.首先统计unigram和bigram的频数
2.词作为状态集,音作为观测序列。
3.计算转移矩阵概率和发射矩阵概率,建立HMM模型
4.给定HMM模型和观测序列,采用viterbi算法动态规划解码。
viterbi.py
# -*- coding: cp936 -*-
"""
viterbi.py
author:messiandzcy
date:2014.12.11
"""
import sys
#from numpy import *
#申请矩阵
def matrix(rows,cols):
mat = [[0 for col in range(cols)]for row in range(rows)]
return mat
#加载unigram
def LoadUnigram():
print "Loading Unigram..."
fp = open("unigramSorted.txt","r")
uni={}
iters=1 #控制读入行数
for line in fp:
w,freq = line.split()
if len(w)==2 and int(freq)>=2700:#w in debug: #状态集只包含频繁单字
uni[w]=int(freq)
#iters += 1
#uni[w]=int(freq)
#if iters>=1300:break #控制状态集的大小,有内存溢出问题
fp.close()