Views
No views yet
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.txtBERT_MODEL_PATH (例如: /home/share/models/small_bert_models/BERT_CCPoem_v1) 需要您自行准备。请下载相应的 BERT 预训练模型,并将其路径更新到 gcn_predictor.py 脚本底部的 if __name__ == "__main__": 部分。pip install -r requirements.txtrequirements.txt 文件内容如下:torch
torch_geometric
transformers
jieba
tqdmgcn_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.pyTEST_POEM (默认为: "云霞输浆石供髓,二丽精华晨夜委。"),并以 JSON 格式打印分析结果。GCNPredictor 类在其他 Python 脚本中使用:1import json
2from gcn_predictor import GCNPredictor
3
4# 1. 确保路径正确
5# (这些路径是在 gcn_predictor.py 的 __main__ 中定义的)
6DATA_DIR = './model_assets'
7MODEL_PATH = f'{DATA_DIR}/gcn_link_predictor_best.pth'
8BERT_MODEL_PATH = '/path/to/your/bert_model' # 替换为您自己的 BERT 路径
9
10try:
11 # 2. 初始化预测器
12 predictor = GCNPredictor(
13 model_path=MODEL_PATH,
14 data_dir=DATA_DIR,
15 bert_path=BERT_MODEL_PATH
16 )
17
18 # 3. 分析诗句
19 poem_text = "云霞输浆石供髓,二丽精华晨夜委。"
20 results = predictor.analyze_poem(poem_text) #
21
22 # 4. 打印结果
23 output = {"poem": poem_text, "analysis": results or []}
24 print(json.dumps(output, indent=4, ensure_ascii=False))
25
26except FileNotFoundError as e:
27 print(f"路径配置错误: {e}")
28except Exception as e:
29 print(f"发生错误: {e}")
30gcn_predictor.py 脚本 将对测试诗句进行分析。:1{
2 "poem": "云霞输浆石供髓,二丽精华晨夜委。",
3 "analysis": [
4 {
5 "word": "云霞",
6 "sense": "百花。",
7 "score": 0.6666867733001709
8 },
9 {
10 "word": "二丽",
11 "sense": "日、月。",
12 "score": 0.5008645057678223
13 }
14 ]
15}