【自然语言处理|自然语言处理(中文分句)——————中文逆向最大匹配,文章中含有验证源码】首先准备一个txt文件,这是一个库。
按行循环读取txt(库)中的字符串存入数组
输入一句话,逆向进行数据字典比对,从后往前数n个字,n为数组中单个最大字符串
一样则保留,在比较其他的
class IMM(object):
def __init__(self,dic_path):
#给个这样子的集合
self.dictionary=set()
#字典里面最大常数for example :m=5
self.maximum=0
#读取字典
with open(dic_path,"r",encoding="utf8") as f:
for line in f:
#去除空格
line=line.strip()
if not line:
continue
self.dictionary.add(line)
if len(line)>self.maximum:
self.maximum=len(line)
def cut(self,text):
result=[]
index=len(text)
while index>0:
word=None
for size in range(self.maximum,0,-1):
if index-size<0:
continue
piece=text[(index-size):index]
if piece in self.dictionary:
word=piece
result.append(word)
index-=size
break
if word is None:
index-=1
returnresult[::-1]if __name__=="__main__":
text="南京市长江大桥"
tokenizer=IMM("data/imm_dic.txt")
print(tokenizer.cut(text))
文章图片
imm_dic.txt
南京市
南京市长
长江大桥
人民解放军
大桥
代码来源于B站,侵权请联系删除
推荐阅读
- 数据分析基础|python数据分析基础之Numpy库详解(二)
- python|python数据分析基础003 -numpy的使用(详解)
- Python|【Opencv实战】这是我见过的最强大“美颜滤镜”,代码美颜傻瓜式一键操作~(附源码)
- 图像处理|【OpenCv】图像分割——聚类算法
- 区块链|教程丨三分钟教你制作专属NFT智能合约
- github|github太慢了(两种方式解决这个痛!.)
- 编程语言|宁愿“大小周”、每天只写 200 行代码、月薪 8k-17k 人群再涨!揭晓中国开发者真实现状...
- 算法|复现经典(《统计学习方法》第21章 PageRank算法)
- 神经网络|(翻译)60分钟入门深度学习工具-PyTorch