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

如何按词性分类句子并修正Python字典分类错误?

问题分析与修正方案

错误原因

  • 代码未判断句子中是否存在对应词性的标记(如名词[]、动词()、形容词{}),无论有无标记都会执行字典赋值操作
  • 当句子无对应标记时,find()返回-1,截取的子串为空,处理后生成空字符串作为键,导致无关句子混入对应字典

修正方案

核心改动是先校验句子中是否存在有效词性标记,仅当标记存在且合法时,再执行关键词提取与字典赋值。同时优化字典赋值逻辑,避免重复覆盖:

def getWordsSelected(sentence):
    global WordsDictionary
    WordsDictionary = {}

    verbDict = {}
    subsDict = {}
    adjDict = {}
    
    for wordSentenceToSearch in sentence:
        # 提取[]包裹的名词
        start_sub = wordSentenceToSearch.find("[")
        end_sub = wordSentenceToSearch.find("]")
        if start_sub != -1 and end_sub != -1 and end_sub > start_sub:
            keyword = wordSentenceToSearch[start_sub+1:end_sub].strip()
            subsDict.setdefault(keyword, [wordSentenceToSearch, "substantive"])

    for wordSentenceToSearch in sentence:
        # 提取()包裹的动词
        start_verb = wordSentenceToSearch.find("(")
        end_verb = wordSentenceToSearch.find(")")
        if start_verb != -1 and end_verb != -1 and end_verb > start_verb:
            keyword = wordSentenceToSearch[start_verb+1:end_verb].strip()
            verbDict.setdefault(keyword, [wordSentenceToSearch, "Verb"])
        
    for wordSentenceToSearch in sentence:
        # 提取{}包裹的形容词/副词
        start_adj = wordSentenceToSearch.find("{")
        end_adj = wordSentenceToSearch.find("}")
        if start_adj != -1 and end_adj != -1 and end_adj > start_adj:
            keyword = wordSentenceToSearch[start_adj+1:end_adj].strip()
            adjDict.setdefault(keyword, [wordSentenceToSearch, "ADJ"])

    print("名词字典:", subsDict)
    print("动词字典:", verbDict)
    print("形容词字典:", adjDict)

# 测试执行
test_sentences = [
    "Es (duftete) nach Erde und Pilze",
    "die [Wände] waren mit Moos überzogen.",
    "Ihr zerrissenes [Gewand] war wieder wie neu",
    "Er saß da wie verzaubert und schaute sie an und konnte seine Augen nicht {mehr} von ihr abwenden",
    "Da sie durchscheinend waren, sahen sie aus wie aus rosa [Glas], das von innen erleuchtet ist."
]

getWordsSelected(test_sentences)

正确输出结果

名词字典: {'Wände': ['die [Wände] waren mit Moos überzogen.', 'substantive'], 'Gewand': ['Ihr zerrissenes [Gewand] war wieder wie neu', 'substantive'], 'Glas': ['Da sie durchscheinend waren, sahen sie aus wie aus rosa [Glas], das von innen erleuchtet ist.', 'substantive']}
动词字典: {'duftete': ['Es (duftete) nach Erde und Pilze', 'Verb']}
形容词字典: {'mehr': ['Er saß da wie verzaubert und schaute sie an und konnte seine Augen nicht {mehr} von ihr abwenden', 'ADJ']}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 01:13:25