Downloads · 30 days
0
ricardozhy/Xunzi-Shiyu-gcn
Xunzi-Shiyu-gcn is a machine learning model from ricardozhy. Use it for the machine learning task on the model card, and read the license before you ship it in a product. The card lists the license as apache-2.0.
本项目是一个使用图卷积网络 (GCN) 和 BERT 对古诗词进行语义分析和推理的工具。
Downloads · 30 days
0
Access
Public
Updated Oct 25, 2025
Repo size
22.9 MB
Likes
0
Public
Click a slice to open those files.
.pt20 MB · 87%
From the Hugging Face model README
本项目是一个使用图卷积网络 (GCN) 和 BERT 对古诗词进行语义分析和推理的工具。
它可以接收诗词,通过 jieba 分词,识别诗中的特定“隐喻词” 。随后,会动态构建一个上下文图,并利用 GCN 模型预测这些词汇节点与预定义“隐喻”节点之间的联系。最终,它通过计算余弦相似度,找出在当前诗句语境下最匹配的含义。
为了使 gcn_predictor.py 脚本正确运行,请按下述结构组织文件。您需要创建 model_assets 文件夹,并将所有模型和数据文件(.pth, .pt, .pkl)放入其中。
/your_project_directory
├── gcn_predictor.py # 主预测脚本
├── requirements.txt # Python 依赖
|
└── /model_assets/ # 默认数据和模型目录
├── gcn_link_predictor_best.pth # 预训练的 GCN 模型权重
├── base_vectors.pt # 基础向量
├── node_to_id.pkl # 节点到 ID 的映射
└── sense_index.pkl # 索引
|
└── /bert_model_path/ # (需要您自行准备)
├── config.json
├── pytorch_model.bin
└── vocab.txt
重要提示:
脚本中的 BERT_MODEL_PATH (例如: /home/share/models/small_bert_models/BERT_CCPoem_v1) 需要您自行准备。请下载相应的 BERT 预训练模型,并将其路径更新到 gcn_predictor.py 脚本底部的 if __name__ == "__main__": 部分。
您可以使用 pip 安装所有必需的 Python 库:
pip install -r requirements.txt
requirements.txt 文件内容如下:
torch
torch_geometric
transformers
jieba
tqdm
gcn_predictor.py 脚本包含一个 if __name__ == '__main__': 块,用于快速测试。
准备文件:
按照“项目结构”部分所示,创建 model_assets 文件夹并放入所有必需的文件。
修改路径:
打开 gcn_predictor.py 文件,滚动到底部的 if __name__ == "__main__": 代码块。
DATA_DIR 变量指向您的 model_assets 文件夹 (默认为 './model_assets/')。BERT_MODEL_PATH 变量,使其指向您本地的 BERT 模型目录。运行脚本: 配置好路径后,直接运行脚本以执行内置的测试:
python gcn_predictor.py
脚本将加载模型,分析 TEST_POEM (默认为: "云霞输浆石供髓,二丽精华晨夜委。"),并以 JSON 格式打印分析结果。
您可以导入 GCNPredictor 类在其他 Python 脚本中使用:
import json
from gcn_predictor import GCNPredictor
# 1. 确保路径正确
# (这些路径是在 gcn_predictor.py 的 __main__ 中定义的)
DATA_DIR = './model_assets'
MODEL_PATH = f'{DATA_DIR}/gcn_link_predictor_best.pth'
BERT_MODEL_PATH = '/path/to/your/bert_model' # 替换为您自己的 BERT 路径
try:
# 2. 初始化预测器
predictor = GCNPredictor(
model_path=MODEL_PATH,
data_dir=DATA_DIR,
bert_path=BERT_MODEL_PATH
)
# 3. 分析诗句
poem_text = "云霞输浆石供髓,二丽精华晨夜委。"
results = predictor.analyze_poem(poem_text) #
# 4. 打印结果
output = {"poem": poem_text, "analysis": results or []}
print(json.dumps(output, indent=4, ensure_ascii=False))
except FileNotFoundError as e:
print(f"路径配置错误: {e}")
except Exception as e:
print(f"发生错误: {e}")
运行 gcn_predictor.py 脚本 将对测试诗句进行分析。:
{
"poem": "云霞输浆石供髓,二丽精华晨夜委。",
"analysis": [
{
"word": "云霞",
"sense": "百花。",
"score": 0.6666867733001709
},
{
"word": "二丽",
"sense": "日、月。",
"score": 0.5008645057678223
}
]
}