求多短文本中最长高频非子短语共现子串查找算法
多文本最长高频重复子串提取算法
核心逻辑
优先保留长度更长、覆盖文本数量更多的重复子串,同时剔除所有属于已保留子串的短片段。
具体实现步骤
1. 生成降序候选子串池
- 先计算所有输入文本的最短长度,以此作为初始最长子串长度,逐步递减到设定的最短有效长度(比如中文至少3个字符,避免单字无意义片段)。
- 对每条文本,生成当前长度下的所有连续子串,去重后加入候选池。
2. 筛选高覆盖度候选
- 遍历每个候选子串,统计包含该子串的文本数量(只要文本中出现一次即算覆盖)。
- 过滤掉覆盖数未达阈值的子串(比如至少覆盖2条文本,可按需调整)。
3. 去重并保留最优子串
- 将筛选后的子串按「长度从长到短→覆盖数从多到少」排序。
- 逐个校验子串:如果当前子串不是已保留结果中任意子串的子串,就将其加入结果列表;反之则直接跳过(因为已保留的更长子串优先级更高)。
4. 输出结果
- 按格式输出最终保留的子串,标注其长度和覆盖的文本数量。
内容的提问来源于stack exchange,提问作者Epiphastro
相关产品推荐
相关产品推荐

