最大匹配算法作为分词的最初级分词算法,作为学习,简单实现一下。
流程图:
def tokenize(line, dic, max_length = 5):
line = line.strip()
if line == '':
return []
if max_length >= len(line):
return [line]
token_list = []
matched = False
while line != '':
for i in range(max_length,1,-1):
word = line[:i]
if word in dic:
token_list.append(word)
line = line[i:]
matched = True
break
if not matched:
word = line[0]
token_list.append(word)
line = line[1:]
return ' '.join(token_list)
if __name__ == '__main__':
dic = {'姚明':1,'姚':1,'明':1,'喜欢':1,'打篮球':1,'打':1,'篮球':1}
line = '姚明喜欢打篮球'
res = tokenize(line,dic)
print(res)
输出为:
姚明 喜欢 打篮球
作为学习,先简单实现一下,后期不断丰实。
todo:
1. 停用词
2. 中文和其他字符混合
3. 有日期、时间、url等tag的特殊情况,需要用正则去匹配处理
在找工作的黄金时期,虽然应该疯狂的去面试提升自己,但是感觉抽时间去实现一些基础算法,巩固硬实力也是非常重要的。
看了不一定是会了,但是自己动手写一遍,并运行通过了才是会了。