def execute_all(method, template, show_images): """ Start a benchmark for the given method for every avaiable file. """ benchmark = Benchmark(method(), template) benchmark.execute_all(show_images) print "Recall: " + str(benchmark.recall()) print "Precision: " + str(benchmark.precision()) print "F-Measure: " + str(benchmark.fmeasure())
# from benchmark import Benchmark def bmm_seg(sentence, word_bank, max_len=100): seg = [] ind = 0 if len(sentence) < max_len else len(sentence) - max_len while (len(sentence)): while (ind != len(sentence) and sentence[ind:] not in word_bank): ind += 1 if ind == len(sentence): ind = len(sentence) - 1 seg.append(sentence[ind:]) sentence = sentence[:ind] ind = 0 if len(sentence) < max_len else len(sentence) - max_len seg.reverse() return seg if __name__ == '__main__': bmm_model = Benchmark('bmm') sentences, word_bank, max_len = bmm_model.get_data() for sentence, ans in sentences: seg = bmm_seg(sentence, word_bank, max_len) bmm_model.add(seg, ans) bmm_model.precision() bmm_model.recall() bmm_model.F_measure()
# An instance of Backward Maximum Match Algorithm # All right reversd. # Hank Wang @bupt # from benchmark import Benchmark def fmm_seg(sentence,word_bank,max_len=100): seg = [] ind=len(sentence) if len(sentence)<max_len else max_len while (len(sentence)): while (ind and sentence[:ind] not in word_bank): ind-=1 if ind==0: ind=1 seg.append(sentence[:ind]) sentence = sentence[ind:] ind=len(sentence) if len(sentence)<max_len else max_len return seg if __name__ == '__main__': fmm_model = Benchmark('fmm') sentences, word_bank, max_len = fmm_model.get_data() for sentence,ans in sentences: seg = fmm_seg(sentence,word_bank,max_len) fmm_model.add(seg,ans) fmm_model.precision() fmm_model.recall() fmm_model.F_measure()
# import random from benchmark import Benchmark from bmm import bmm_seg from fmm import fmm_seg def bdmm_seg(sentence, word_bank, max_len=100, unit=3): seg1 = fmm_seg(sentence, word_bank, max_len) seg2 = bmm_seg(sentence, word_bank, max_len) if len(seg1) == len(seg2): best_seg = seg1 if random.randint(0, 1) == 0 else seg2 elif len([x for x in seg1 if len(x) == unit]) < len( [x for x in seg2 if len(x) == unit]): best_seg = seg1 else: best_seg = seg2 return best_seg if __name__ == '__main__': bdmm_model = Benchmark('bdmm') sentences, word_bank, max_len = bdmm_model.get_data() for sentence, ans in sentences: seg = bdmm_seg(sentence, word_bank, max_len) bdmm_model.add(seg, ans) bdmm_model.precision() bdmm_model.recall() bdmm_model.F_measure()