@Override
	public HmmTagger.TagList getTagList(Sentence src) throws IOException {
		HmmTagger.TagList map = getTags(src);
		// 添加第一个元素的所有标签值
		HmmTagger.TagState state = map.lists[0][0];
		for (int i = 0; i < map.lists[1].length; i++) {
			state.paths.put(map.lists[1][i].state, new HmmTagger.Path(0, -1));
		}

		HmmTagger.TagState next;
		Cell word, pre = src.get(0);
		for (int i = 1; i < map.lists.length - 1; i++) {
			word = src.get(i);
			for (int j = 0; j < map.lists[i].length; j++) {
				state = map.lists[i][j];
				for (int k = 0; k < map.lists[i + 1].length; k++) {
					next = map.lists[i + 1][k];
					state.paths.put(
							next.state,
							new HmmTagger.Path(distance_with_tag(pre,
									state.state, word, next.state), -1));
				}
			}
			pre = word;
		}
		state = map.lists[map.lists.length - 1][0];
		state.paths.put(ergate.core.Tag.SE, new HmmTagger.Path(0, -1));
		return map;
	}