gpt4 book ai didi

python - 单词聚类列表列表

转载 作者:行者123 更新时间:2023-11-30 09:17:08 24 4
gpt4 key购买 nike

例如,假设我有一个单词列表列表

[['apple','banana'],
['apple','orange'],
['banana','orange'],
['rice','potatoes','orange'],
['potatoes','rice']]

集合要大得多。我想对通常存在在一起的单词进行聚类,这些单词将具有相同的聚类。因此,在本例中,簇将是 ['apple', 'banana', 'orange']['rice','potatoes']
归档此类聚类的最佳方法是什么?

最佳答案

我认为将问题视为图表更为自然。

例如,您可以假设 apple 是节点 0,banana 是节点 1,并且第一个列表指示 0 到 1 之间存在一条边。

所以首先将标签转换为数字:

from sklearn.preprocessing import LabelEncoder
le=LabelEncoder()
le.fit(['apple','banana','orange','rice','potatoes'])

现在:

l=[['apple','banana'],
['apple','orange'],
['banana','orange'],
['rice','potatoes'], #I deleted orange as edge is between 2 points, you can transform the triple to 3 pairs or think of different solution
['potatoes','rice']]

将标签转换为数字:

edges=[le.transform(x) for x in l]

>>edges

[array([0, 1], dtype=int64),
array([0, 2], dtype=int64),
array([1, 2], dtype=int64),
array([4, 3], dtype=int64),
array([3, 4], dtype=int64)]

现在,开始构建图表并添加边:

import networkx as nx #graphs package
G=nx.Graph() #create the graph and add edges
for e in edges:
G.add_edge(e[0],e[1])

现在您可以使用connected_component_subgraphs函数来分析连接的顶点。

components = nx.connected_component_subgraphs(G) #analyze connected subgraphs
comp_dict = {idx: comp.nodes() for idx, comp in enumerate(components)}
print(comp_dict)

输出:

{0: [0, 1, 2], 1: [3, 4]}

print([le.inverse_transform(v) for v in comp_dict.values()])

输出:

[array(['苹果', '香蕉', '橙子']), array(['土 bean ', '大米'])]

这就是您的 2 个集群。

关于python - 单词聚类列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52764682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com