如何按词性分类句子并修正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
相关产品推荐
相关产品推荐

