赞
踩
最大匹配是指以词典为依据,取词典中最长单词为第一个次取字数量的扫描串,在词典中进行扫描(为提升扫描效率,还可以跟据字数多少设计多个字典,然后根据字数分别从不同字典中进行扫描)。
最大匹配算法有三种:
1、正向最大匹配
2、逆向最大匹配
3、双向匹配
三种算法原理都一样,以正向为例,是从前向后扫描的过程。
如下:
# -*- coding: utf-8 -*- """ @author: Junhui Yu @Date:2020/08/30 """ pku_training_words = 'icwb2-data/gold/pku_training_words.txt' words=["欢迎大家来到文本计算与认知智能实验室"] def get_dic(pku_training_words): with open(pku_training_words,'r',encoding='gbk',) as f: try: file_content = f.read().split() finally: f.close() chars = list(set(file_content)) return chars dic = get_dic(pku_training_words) def positive_max_matching(): max_length = 5 for word in words:#分别对每行进行正向最大匹配处理 max_length = 5 word_list = [] len_hang = len(word) while len_hang>0 : tryWord = word[0:max_length] while tryWord not in dic: if len(tryWord)==1: break tryWord=tryWord[0:len(tryWord)-1] word_list.append(tryWord) word = word[len(tryWord):] len_hang = len(word) return word_list contents=positive_max_matching() seg="" for s in contents: if seg=="": seg+=s else: seg+="/"+s print(seg)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。