word2vec 语义图谱 代码
时间: 2023-07-30 14:08:30 浏览: 97
word2vec的源码
您可以使用Python中的Gensim库来实现Word2Vec模型的训练和构建语义图谱。以下是一个简单的示例代码:
```python
from gensim.models import Word2Vec
from gensim.models import KeyedVectors
import networkx as nx
import matplotlib.pyplot as plt
# 读取语料文件
sentences = []
with open('corpus.txt', 'r') as file:
for line in file:
sentences.append(line.strip().split())
# 训练Word2Vec模型
model = Word2Vec(sentences, size=100, window=5, min_count=5, workers=4)
# 获取词向量
word_vectors = model.wv
# 构建语义图谱
graph = nx.Graph()
for word in word_vectors.vocab:
graph.add_node(word)
for word1 in word_vectors.vocab:
for word2 in word_vectors.vocab:
if word1 != word2:
similarity = word_vectors.similarity(word1, word2)
if similarity > 0.5: # 设定相似性阈值
graph.add_edge(word1, word2, weight=similarity)
# 可视化语义图谱
pos = nx.spring_layout(graph)
plt.figure(figsize=(12, 12))
nx.draw_networkx_nodes(graph, pos, node_color='lightblue', node_size=500)
nx.draw_networkx_edges(graph, pos, edge_color='gray')
nx.draw_networkx_labels(graph, pos, font_size=10, font_family='sans-serif')
plt.axis('off')
plt.show()
# 保存词向量模型
model.wv.save_word2vec_format('word2vec_model.bin')
```
在上述代码中,我们首先从语料文件中读取句子,然后使用Word2Vec模型训练这些句子,得到词向量。接下来,我们根据词向量构建语义图谱,通过设定相似性阈值来确定边的连接。最后,我们使用networkx和matplotlib库对语义图谱进行可视化展示,并保存训练好的词向量模型。
请注意,这只是一个简单的示例代码,您可以根据自己的需求进行修改和扩展。另外,您需要准备一个包含足够语料的文本文件(例如"corpus.txt"),以便训练Word2Vec模型。
阅读全文