实验目的:
利用人民日报语料库或自己构建的语料库(30词以上)作为词典,任选五个句子,并基于正向最大匹配算法和最短路径法分别对这五个句子进行分词,并分别计算分词结果的正确率,召回率和F-测度值。输出句子,基于两种算法的分词结果和其对应的评价指标值
实验内容:
- insert_in_str(s, place)
用于在字符串 s 的指定位置 place 插入字符 /。
- 将字符串 s 转换为一个字符列表 l,然后在 place 索引处插入字符 /
- 将列表 l 转换回字符串并返回。
- FMM(sen, dictionary)
实现了一个基于最大匹配的分词算法(Forward Maximum Matching, FMM)。
- 给定一个句子 sen 和一个词典 dictionary,它尝试从句子开头开始,每次匹配词典中最长的词,然后在匹配的词后插入 / 来分隔。
- 如果在某个位置无法找到匹配的词,它会尝试匹配较短的词,直到找到一个匹配或只剩下一个字符为止。然后,它会继续处理句子的剩余部分。-
- 返回分词后的字符串。
- Shortest_Path(sen, dictionary)
使用动态规划来计算给定句子 sen 的最短分词路径。
- 首先构建一个二维数组 map,其中 map[i][j] 表示从位置 i 到位置 j 的子字符串是否在词典中。
- 使用动态规划来计算从句子开头到每个位置的最短分词路径长度,并记录每个位置的前一个位置(即分词边界)