自然语言处理NLP_中文分词_正向最大匹配算法
2020-07-12 16:48
85 查看
""" 正向最大匹配算法 """ #词典元素存储变量 dict_words = [] #初始化函数,载入词典 def init(): with open("dict.txt","r",encoding="utf-8") as dict_input: for word in dict_input: dict_words.append(word.strip()) #分词函数 def cut_words(words_input,dict_words): #分词结果集 cut_words_list = [] words_input = words_input.strip() #统计输入系列的长度 words_input_length = len(words_input) #统计词典的元素的最大长度 max_length_dict_words = max(len(word) for word in dict_words) while words_input_length > 0: #找出分词的最大长度 max_cut_length = min(words_input_length,max_length_dict_words) #切出最长匹配序列 subString_words_input = words_input[0:max_cut_length] while max_cut_length > 0: if subString_words_input in dict_words: cut_words_list.append(subString_words_input) break elif max_cut_length == 1: cut_words_list.append(subString_words_input) break else: max_cut_length -= 1 subString_words_input = words_input[0:max_cut_length] words_input = words_input[max_cut_length:] words_input_length -= max_cut_length #分词结果 result_cut_words = "/".join(cut_words_list) return result_cut_words #主函数 def main(): init() while True: print("请输入需要切分的序列:") words_input = input() if not words_input: break result = cut_words(words_input,dict_words) print("分词结果:") print(result) #测试函数 if __name__ == "__main__": main()
相关文章推荐
- NLP: 中文分词算法--正向最大匹配 Forward Maximum Matching
- 自然语言处理NLP_中文分词_逆向最大匹配算法
- 正向最大匹配中文分词算法
- 一个简单最大正向匹配(Maximum Matching)MM中文分词算法的实现
- python中文分词教程之前向最大正向匹配算法详解
- 用正向和逆向最大匹配算法进行中文分词
- 正向最大匹配中文分词算法
- 中文分词算法之最大正向匹配算法(Python版)
- python中文分词教程之前向最大正向匹配算法详解
- NLP中文信息处理---正向最大匹配法分词
- (2)中文分词——最大正向匹配算法及MMSEG分词算法
- 一个简单最大正向匹配(Maximum Matching)MM中文分词算法的实现
- NLP中文信息处理---正向最大匹配法分词
- 中文分词算法之最大正向匹配算法(Python版)
- python 中文分词:正向最大匹配
- 【分词】正向最大匹配中文分词算法
- 中文分词——正向最大匹配法
- java中文分词之正向最大匹配法实例代码
- 【分词】正向最大匹配中文分词算法
- C#写中文基于词表的最大逆向匹配分词算法