关键词太多,取前20个形成关系图,该怎么操作
时间: 2024-03-12 12:47:06 浏览: 7
你可以先对关键词按照出现频率进行排序,然后只取前 20 个关键词来构建共现网络。下面是一个示例代码:
```python
import networkx as nx
import matplotlib.pyplot as plt
# 对关键词按照出现频率进行排序
sorted_keywords = sorted(keyword_frequencies.items(), key=lambda x: x[1], reverse=True)
# 取前 20 个关键词
top_keywords = dict(sorted_keywords[:20])
# 构建空的无向图
G = nx.Graph()
# 添加节点和边
for keyword, freq in top_keywords.items():
G.add_node(keyword, frequency=freq)
for other_keyword, other_freq in top_keywords.items():
if keyword != other_keyword:
weight = freq + other_freq
G.add_edge(keyword, other_keyword, weight=weight)
# 绘制共现图
pos = nx.spring_layout(G, k=0.3)
node_size = [d['frequency'] for n, d in G.nodes(data=True)]
edge_width = [d['weight'] / 500 for (u, v, d) in G.edges(data=True)]
labels = {n: n + ' ({})'.format(d['frequency']) for n, d in G.nodes(data=True)}
nx.draw_networkx_nodes(G, pos, node_size=node_size, node_color='skyblue')
nx.draw_networkx_labels(G, pos, labels, font_size=10, font_family='Source Han Sans CN')
nx.draw_networkx_edges(G, pos, width=edge_width, alpha=0.5)
plt.axis('off')
plt.show()
```
这个代码只保留了出现频率前 20 的关键词,并画出了关系图。你可以根据需要修改代码中的参数,例如修改 top_keywords 中的数字,或者修改节点和边的样式等。