从句子列表生成维恩图

0 投票
2 回答
1681 浏览
提问于 2025-04-15 14:45

我在Excel里有很多句子,每一行都是一个句子,放在一列里。我大概有三列或者更多这样的句子。这些句子里有一些是重复的。请问有没有办法写个脚本,画出一个维恩图,找出所有列中共同的句子。

举个例子:这些是某一列里的句子。其他列也是类似的内容。

癌症的血淋巴细胞

患者的血淋巴细胞

卵巢肿瘤_三级

腹膜肿瘤_四级

激素耐药性前列腺癌

可以用Python写一个脚本吗?

2 个回答

0

你的问题不是很清楚,所以我可能没有完全理解你想要的内容。

维恩图其实就是一些简单的集合操作。Python里面有这个功能,叫做集合。简单来说,就是把你的两个物品组用集合操作来处理,比如用intersection来找出它们的共同项。

至于读取数据,最好的办法可能是把文件保存为CSV格式,然后用字符串的split方法来解析它。

2

这是我对这个问题的理解……

给定一个数据文件 z.csv(你可以把 Excel 中的数据导出为一个 csv 文件)

"Blood lymphocytes from cancer","Blood lymphocytes from sausages","Ovarian tumor_Grade III"
"Blood lymphocytes from patients","Ovarian tumor_Grade III","Peritoneum tumor_Grade IV"
"Ovarian tumor_Grade III","Peritoneum tumor_Grade IV","Hormone resistant PCA"
"Peritoneum tumor_Grade XV","Hormone resistant PCA","Blood lymphocytes from cancer"
"Hormone resistant PCA",,"Blood lymphocytes from patients"

这个程序会找出所有列中共同的句子

import csv

# Open the csv file
rows = csv.reader(open("z.csv"))

# A list of 3 sets of sentences
results = [set(), set(), set()]

# Read the csv file into the 3 sets
for row in rows:
    for i, data in enumerate(row):
        results[i].add(data)

# Work out the sentences common to all rows
intersection = results[0]
for result in results[1:]:
    intersection = intersection.intersection(result)

print "Common to all rows :-"
for data in intersection:
    print data

然后它会打印出这个结果

Common to all rows :-
Hormone resistant PCA
Ovarian tumor_Grade III

我不太确定这是否正是你想要的,但希望能帮你入门!

这个程序可以很容易地扩展到你想要的任意多列,但我不想让它变得太复杂

撰写回答