1
0
mirror of https://github.com/fumiama/jieba.git synced 2026-06-05 00:32:51 +08:00

removed sorts to slightly improve performance

This commit is contained in:
Wang Bin
2015-04-03 16:48:45 +08:00
parent d22cc9b6b6
commit bbe302a351
2 changed files with 15 additions and 7 deletions

View File

@@ -75,16 +75,17 @@ func viterbi(obs []rune) []string {
mem_path[t] = make(map[string]string) // TODO: value needed or not?
V[t] = make(map[string]float64)
for _, y := range obs_states {
pss := make(probStates, 0)
for _, y0 := range prev_states {
ps := probState{
var max, ps probState
for i, y0 := range prev_states {
ps = probState{
prob: V[t-1][y0] + probTrans[y0].Get(y) + probEmit[y].get(obs[t]),
state: y0}
pss = append(pss, ps)
if i == 0 || ps.prob > max.prob || (ps.prob == max.prob && ps.state > max.state) {
max = ps
}
}
sort.Sort(sort.Reverse(pss))
V[t][y] = pss[0].prob
mem_path[t][y] = pss[0].state
V[t][y] = max.prob
mem_path[t][y] = max.state
}
}
last := make(probStates, 0)

View File

@@ -40,3 +40,10 @@ func TestViterbi(t *testing.T) {
}
}
}
func BenchmarkViterbi(b *testing.B) {
ss := "李小福是创新办主任也是云计算方面的专家;"
for i := 0; i < b.N; i++ {
viterbi([]rune(ss))
}
}