逆向最大匹配
词典word.txt
南京
南京市
长江
长江大桥
大桥
南京市长
市长
北京
北京市长
烤鸭
南京烤鸭
逆向最大
class IMM(object):
def __init__(self,dic_path):
#集合
self.dictionary = set()
self.maximum = 0
#读取词典
with open(dic_path,'r',encoding='utf8') as f:
for line in f:
line = line.strip()
if line:
self.dictionary.add(line)
self.maximum = len(self.dictionary)def cut(self,text):
#用于存放切分出来的词
result = []
index = len(text)
#记录没有在词典中的词,可以用于发现新词
no_word = ''
while index > 0:
word = None
#从前往后匹配,以此实现最大匹配
for first in range(index):
if text[first:index] in self.dictionary:
word = text[first:index]
#如果之前存放了字典里面没有出现过的词
if no_word != '':
result.append(no_word[::-1])
no_word = ''
result.append(text[first:index])
index = first
break
if word == None:
index = index -1
no_word += text[index]
return result[::-1]if __name__ == '__main__':
text = '北京市长喜欢南京烤鸭和南京市长江大桥'
tokenizer = IMM('word.txt')
print(tokenizer.cut(text))
运行结果:
文章图片
正向最大匹配:
【自然语言处理--分词正向最大匹配,逆向最大匹配和双向最大匹配】
推荐阅读
- 人工智能|hugginface-introduction 案例介绍
- 中文分词预处理之N最短路径法小结(转)
- 深度学习|2019年CS224N课程笔记-Lecture 17:Multitask Learning
- 深度学习|2018年度总结和2019年度计划
- BERT微调做中文文本分类
- 【学习笔记】自然语言处理实践(新闻文本分类)- 基于深度学习的文本分类Bert
- 【学习笔记】自然语言处理实践(新闻文本分类)- 基于深度学习的文本分类Word2Vec
- 自然语言处理|答案选择|语义匹配任务目前表现最好的几个模型
- 深度学习|NLP重铸篇之BERT如何微调文本分类
- NLP实践-Task1