You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何寻找与列表中所有字符串部分匹配度最高的目标字符串

解决方案

针对你的需求,我们可以通过统计高频token+保留原序列顺序的方式生成目标字符串,以下是具体实现步骤和Python代码:

步骤说明

  1. 拆分所有字符串为单个token(按空格分割),统计每个token在列表中的出现次数;
  2. 筛选出在多数字符串中出现的token(比如3个字符串中至少出现2次);
  3. 从每个原字符串中提取这些高频token,保留它们在原字符串中的顺序,生成候选序列;
  4. 选择长度最长、出现次数最多的候选序列作为最终结果。

代码实现

from collections import Counter

# 输入列表
A = ['assembly eye tow top', 'tow eye bolts', 'tow eye bolts need me']

# 统计所有token的出现频率
all_tokens = []
for string in A:
    all_tokens.extend(string.split())
token_freq = Counter(all_tokens)

# 筛选出至少在2个字符串中出现的token
high_freq_tokens = {token for token, count in token_freq.items() if count >= 2}

# 生成每个字符串对应的高频token序列(保留原顺序)
candidate_seqs = []
for string in A:
    filtered_tokens = [t for t in string.split() if t in high_freq_tokens]
    candidate_seqs.append(' '.join(filtered_tokens))

# 选择最长且出现次数最多的序列
seq_counter = Counter(candidate_seqs)
# 按序列长度降序、出现次数降序排序
sorted_seqs = sorted(seq_counter.items(), key=lambda x: (-len(x[0]), x[1]))

# 最终结果
strA = sorted_seqs[0][0]
print(strA)  # 输出: tow eye bolts

代码解释

  • 统计token频率后,tow、eye(3次)和bolts(2次)被筛选为高频token,其余仅出现1次的token被排除;
  • 从原字符串提取高频token后,得到三个候选序列:eye tow、tow eye bolts、tow eye bolts;
  • 最后选择长度最长的tow eye bolts作为结果,完全符合你的预期。

内容的提问来源于stack exchange,提问作者Parsh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 14:15:36