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

如何可视化两组Trigram列表,识别两个列表中完全相同的三词词组组合

两个Trigram列表重合识别与可视化方案

1. 数据预处理

首先需要将字符串格式的Trigram三元组转为可用于绘图的数值特征,同时先统计出两组的重合部分:

  • 合并两个列表的所有Trigram,给每个唯一三元组分配唯一标识
  • 分别给两组数据打标签,同时标记出重合的三元组
  • 将Trigram三个位置的单词分别编码为三个维度的数值,适配pairplot的多维度对比逻辑

对应实现代码:

# 替换为你实际的两个Trigram列表
l1 = [('hello', 'its', 'me'), ('I', 'need', 'help'), ...]
l2 = [('I', 'need', 'help'), ('What', 'is', 'this'), ...]

import pandas as pd
# 统计所有唯一Trigram和重合Trigram
all_trigrams = list(set(l1 + l2))
overlap_tgs = set(l1) & set(l2)

# 给三个位置的单词分别做数值映射
w1_map = {w:i for i,w in enumerate(set([tg[0] for tg in all_trigrams]))}
w2_map = {w:i for i,w in enumerate(set([tg[1] for tg in all_trigrams]))}
w3_map = {w:i for i,w in enumerate(set([tg[2] for tg in all_trigrams]))}

# 构造绘图用数据集
data = []
for tg in l1:
    data.append({
        "w1": w1_map[tg[0]], "w2": w2_map[tg[1]], "w3": w3_map[tg[2]],
        "组别": "组1", "是否重合": "是" if tg in overlap_tgs else "否"
    })
for tg in l2:
    data.append({
        "w1": w1_map[tg[0]], "w2": w2_map[tg[1]], "w3": w3_map[tg[3]],
        "组别": "组2", "是否重合": "是" if tg in overlap_tgs else "否"
    })
df = pd.DataFrame(data)

2. pairplot可视化实现

直接用seaborn的pairplot展示三个维度的分布差异,重合点会同时出现两个组的标记:

import seaborn as sns
import matplotlib.pyplot as plt

sns.pairplot(df, vars=["w1", "w2", "w3"],
             hue="组别", palette={"组1":"#2E86AB", "组2":"#F24C4C"},
             markers=["o", "s"], plot_kws={"alpha":0.8, "s":80})
plt.suptitle("两组Trigram分布对比", y=1.02)
plt.show()

3. 结果解读

  • 三个维度w1/w2/w3分别对应Trigram第一个、第二个、第三个单词的数值编码
  • 如果某一组坐标同时出现两个组的标记,就代表这是两个列表完全一致的重合Trigram
  • 可直接打印重合词组和相似率:
print("完全重合的Trigram:", overlap_tgs)
print("两组相似率:{:.2f}%".format(len(overlap_tgs)/20*100))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:15:00