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

为什么在SpaCy中token“less”与“more”的相似度更高?

问题原因与解决方案

为什么"less"和"more"相似度高?

en-web-core-lg的词向量是基于大规模文本的上下文共现模式训练的。"less"和"more"经常出现在相似的对比语境中(比如"less sugar, more water"这类结构),模型会将这种高频共现关联为语义相似性,而非区分它们的极性差异,所以会出现反义词相似度偏高的情况。

解决思路

  • 结合极性过滤:手动维护或调用反义词词典(比如WordNet),获取"less"的反义词列表(more、greater等),计算相似度后排除这些词。示例逻辑:
    from nltk.corpus import wordnet
    
    def get_antonyms(word):
        antonyms = set()
        for syn in wordnet.synsets(word):
            for lemma in syn.lemmas():
                if lemma.antonyms():
                    antonyms.update([ant.name() for ant in lemma.antonyms()])
        return antonyms
    
    less_antonyms = get_antonyms("less")
    # 计算相似度后过滤掉属于less_antonyms的词
    
  • 换用Transformer-based模型:spaCy的en_trf_robertabase_lg这类基于BERT的模型,能更好捕捉语义的细微差异(包括极性),相比传统词向量更能区分"less"和"more"的语义对立。
  • 基于语境的匹配:不用纯词向量相似度,而是用spaCy的Matcher或PhraseMatcher,结合"less"的常见搭配语境来筛选句子,比如匹配"less + 名词"或"less than"这类结构,更精准定位目标句子。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 10:27:06