You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于源域、目标域列词共现的隐喻识别代码如何实现

基于源域/目标域词汇共现的隐喻检测工具实现

实现逻辑

  • 提前维护两个独立的词汇集合:源域词汇集、目标域词汇集,支持自定义新增或从表格批量导入
  • 对输入的任意文本做分词和大小写统一处理,消除格式差异带来的匹配误差
  • 判定规则:若文本中同时命中至少1个源域词汇 + 至少1个目标域词汇,即判定存在隐喻

代码实现(Python)

import re
from typing import Tuple, List

class MetaphorDetector:
    def __init__(self, source_domain_words: List[str], target_domain_words: List[str]):
        # 初始化时统一转小写,消除大小写匹配问题
        self.source_set = set(word.lower() for word in source_domain_words)
        self.target_set = set(word.lower() for word in target_domain_words)
    
    def detect(self, text: str) -> Tuple[bool, List[str], List[str]]:
        # 把输入文本拆分为单词,去除标点符号
        text_words = re.findall(r'\b\w+\b', text.lower())
        # 匹配命中的源域、目标域词汇
        hit_source = [word for word in text_words if word in self.source_set]
        hit_target = [word for word in text_words if word in self.target_set]
        # 按规则判定结果
        has_metaphor = len(hit_source) >= 1 and len(hit_target) >= 1
        return has_metaphor, hit_source, hit_target

# 测试示例
if __name__ == "__main__":
    # 示例源域、目标域词汇,可根据实际需求替换为你自己的词汇表
    source_words = ["broke", "cut", "burn", "melt", "freeze"]
    target_words = ["heart", "dream", "love", "hope", "ambition"]
    
    detector = MetaphorDetector(source_words, target_words)
    test_sentence = "she broke his heart"
    result, hit_s, hit_t = detector.detect(test_sentence)
    
    print(f"输入文本:{test_sentence}")
    print(f"是否存在隐喻:{result}")
    print(f"命中源域词汇:{hit_s}")
    print(f"命中目标域词汇:{hit_t}")

运行效果说明

运行上述测试代码后输出结果如下:

输入文本:she broke his heart
是否存在隐喻:True
命中源域词汇:['broke']
命中目标域词汇:['heart']

完全符合需求中的判定规则。如果需要适配中文检测场景,只需把代码中的分词逻辑替换为jieba等中文分词工具即可。

内容的提问来源于stack exchange,提问作者Azza Abugharsa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 18:15:03