diff --git "a/__pycache__/\345\217\245\346\263\225\345\210\206\346\236\220.cpython-38.pyc" "b/__pycache__/\345\217\245\346\263\225\345\210\206\346\236\220.cpython-38.pyc" new file mode 100644 index 0000000000000000000000000000000000000000..f4e9ba038bfc1301861d860f51f92d4c12848cbf Binary files /dev/null and "b/__pycache__/\345\217\245\346\263\225\345\210\206\346\236\220.cpython-38.pyc" differ diff --git "a/__pycache__/\346\255\243\345\220\221\346\234\200\345\244\247\345\214\271\351\205\215\347\256\227\346\263\225FMM.cpython-38.pyc" "b/__pycache__/\346\255\243\345\220\221\346\234\200\345\244\247\345\214\271\351\205\215\347\256\227\346\263\225FMM.cpython-38.pyc" new file mode 100644 index 0000000000000000000000000000000000000000..d4e4891f003260faff40873af50bddabcfdb751e Binary files /dev/null and "b/__pycache__/\346\255\243\345\220\221\346\234\200\345\244\247\345\214\271\351\205\215\347\256\227\346\263\225FMM.cpython-38.pyc" differ diff --git "a/__pycache__/\351\200\206\345\220\221\346\234\200\345\244\247\345\214\271\351\205\215\347\256\227\346\263\225BMM.cpython-38.pyc" "b/__pycache__/\351\200\206\345\220\221\346\234\200\345\244\247\345\214\271\351\205\215\347\256\227\346\263\225BMM.cpython-38.pyc" new file mode 100644 index 0000000000000000000000000000000000000000..c8b93c4715832587de500fc9751a61ede3aecb15 Binary files /dev/null and "b/__pycache__/\351\200\206\345\220\221\346\234\200\345\244\247\345\214\271\351\205\215\347\256\227\346\263\225BMM.cpython-38.pyc" differ diff --git a/main.py b/main.py index da4620e6f0cdc66febb93029578b2f92ee13795a..d0bbdad177e2860d39128f0c048689ce2f35e7e4 100644 --- a/main.py +++ b/main.py @@ -1,34 +1,30 @@ #print('欢迎来到 InsCode') -def BMM(user_dict,sentence): - print('***开始切分BMM***') - segment_words=[] - max_len=max([len(item) for item in user_dict]) - start=len(sentence) - k=0 - while start != 0: - k+=1 - #句子切分结束位置 - index = start-max_len - #结束位置大于句子长度 - if index<0: - index=0 - - for i in range(max_len): - print(sentence[index:start]) - if (sentence[index:start] in user_dict) or (len(sentence[index:start])==1):#词在user_dict内或只有一个字 - segment_words.insert(0,sentence[index:start]) - start = index - break - #失败 - index+=1 - print('当前已经切分:', segment_words) - print('---第', k, '轮结束---') - print('***切分完毕***') - print('分词结果:', segment_words) - return segment_words +#示例: +def 示例函数(参数1,参数2): + #函数名称 + #参数示例:参数1=***,参数2=*** + print('\n<<<函数名称>>>') + + #在这里放代码 + 返回值=1 + + return 返回值 + + +from 句法分析 import BMM +from 句法分析 import FMM + +def 这里支持中文吗(): + 名字='支持中文函数名与变量名。' + print(名字) if __name__ == '__main__': + 这里支持中文吗() + + # user_dict=['时间', '就', '是', '⽣命'] sentence='时间就是⽣命' - BMM(user_dict,sentence) \ No newline at end of file + BMM(user_dict,sentence) + FMM(user_dict, sentence) + \ No newline at end of file diff --git "a/\345\217\245\346\263\225\345\210\206\346\236\220.py" "b/\345\217\245\346\263\225\345\210\206\346\236\220.py" new file mode 100644 index 0000000000000000000000000000000000000000..b5d597e9b52b4bfbf0f1b0a972ed03a917af63ff --- /dev/null +++ "b/\345\217\245\346\263\225\345\210\206\346\236\220.py" @@ -0,0 +1,73 @@ +#逆向最大匹配算法BMM +def BMM(user_dict,sentence): + #逆向最大匹配算法BMM + #示例:user_dict=['时间', '就', '是', '⽣命'],sentence='时间就是⽣命' + print('\n<<<逆向最大匹配算法BMM>>>') + + print('***开始切分BMM***') + segment_words=[] + max_len=max([len(item) for item in user_dict]) + start=len(sentence) + k=0 + while start != 0: + print('---第', k+1, '轮开始---') + k+=1 + #句子切分结束位置 + index = start-max_len + #结束位置大于句子长度 + if index<0: + index=0 + + for i in range(max_len): + print(sentence[index:start]) + if (sentence[index:start] in user_dict) or (len(sentence[index:start])==1):#词在user_dict内或只有一个字 + segment_words.insert(0,sentence[index:start]) + start = index + break + #失败 + index+=1 + print('当前已经切分:', segment_words) + print('---第', k, '轮结束---\n') + print('***切分完毕***') + print('分词结果:', segment_words) + return segment_words + +#正向最大匹配算法FMM +def FMM(user_dict,sentence): + #正向最大匹配算法FMM + #示例:user_dict=['时间', '就', '是', '⽣命'],sentence='时间就是⽣命' + print('\n<<<正向最大匹配算法FMM>>>') + + print('***开始切分***') + segment_words=[] + max_len=max([len(item) for item in user_dict]) + start=0 + k=0 + while start != len(sentence): + print('---第', k, '轮开始---') + k+=1 + #句子切分结束位置 + index = start+max_len + #结束位置大于句子长度 + if index>len(sentence): + index=len(sentence) + + for i in range(max_len): + print(sentence[start:index]) + if (sentence[start:index] in user_dict) or (len(sentence[start:index])==1):#词在user_dict内或只有一个字 + segment_words.append(sentence[start:index]) + start = index + + break + #失败 + index-=1 + print('当前已经切分:', segment_words) + print('---第', k, '轮结束---\n') + print('***切分完毕***') + return segment_words + +if __name__ == '__main__': + user_dict=['时间', '就', '是', '⽣命'] + sentence='时间就是⽣命' + BMM(user_dict, sentence) + FMM(user_dict, sentence) \ No newline at end of file