主要用于处理“酒店真不错呀真不错呀真不错呀”、“酒店好好好好好好”类似文本,但对于第二类文本会保留两个相同的词,即最后结果为 “酒店好好”,避免将“等等”、“哈哈”等叠词压缩。
代码
def compress(content):
"""机械压缩"""
import numpy as np
com_content = content[0]
com_content_list = [content[0]]
i = 1
while i < len(content):
#print(content[i])
if content[i]!=content[i-1]: # 用于处理“酒店真不错呀真不错呀真不错呀”类似文本
if content[i] in com_content_list:
m = np.where(np.array(com_content_list)==content[i])[0][-1]
n = i
while content[n] == com_content_list[m]:
n += 1
m += 1
if (m==len(com_content_list)) or (n==len(content)):
break
if m==len(com_content_list):
i = n
continue
com_content += content[i]
com_content_list.append(content[i])
#print(com_content_list)
r=i
while content[i]==content[i-1]: # 用于处理“酒店好好好好好好”类似文本
#print(content[i])
i += 1
if i==len(content):
break
if i-r > 0:
continue
else:
i += 1
#print(com_content_list, com_content)
return com_content #, com_content_list
测试结果
print(compress("酒店好好好好好"))
酒店好好
print(compress("酒店不错呀不错呀不错呀"))
酒店不错呀
print(compress("酒店不错呀不错呀不错呀,好好好好好"))
酒店不错呀,好好
print(compress("你等等等等等"))
你等等
print(compress("等等等等等你"))
等等你