python最长匹配_最大匹配算法进行分词 前向 后向 python实现

# 先定义个词典

word_dict = ['我们', '经常', '有','有意见','意见','分歧']

# 滑动窗口的大小

max_len = 5

# 用户的输入

user_input = '我们经常有意见分歧'

len(user_input)

结果:

9

前向最大匹配算法的实现

# 前向最大匹配算法

result = []

i = 0

while i < len(user_input):

matched = False

pos = i + max_len if i + max_len < len(user_input) else len(user_input)

while user_input[i:pos] not in word_dict and i < pos:

print(user_input[i:pos])

pos -= 1

if i < pos:

matched = True

result.append(user_input[i:pos])

i = pos if matched == True else i + max_len

print(result)

输出结果:

我们经常有

我们经常

我们经

经常有意见

经常有意

经常有

有意见分歧

有意见分

['我们', '经常', '有意见', '分歧']

后向最大匹配算法的实现

# 后向最大匹配算法

result = []

i = len(user_input)

while i > 0:

matched = False

pos = i - max_len if i - max_len > 0 else 0

while user_input[pos:i] not in word_dict and i > pos:

print(user_input[pos:i])

pos += 1

if i > pos:

matched = True

result.insert(0, user_input[pos:i])

i = pos if matched == True else i - max_len

print(result)

输出结果:

有意见分歧

意见分歧

见分歧

经常有意见

常有意见

我们经常

们经常

['我们', '经常', '有意见', '分歧']

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值