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

如何修正代码以从《哈姆雷特》语料库筛选正确的-est型形容词最高级词汇

解决方案:筛选《哈姆雷特》中的形容词最高级词汇

原代码仅通过-est后缀筛选词汇,无法区分真正的形容词最高级与其他以-est结尾的名词、动词或普通形容词(如priest、honest)。要精准筛选,需结合词性标注,识别出标记为形容词最高级的词汇(NLTK中对应标签为JJS)。

修正后的代码

from nltk.corpus import shakespeare
from nltk import pos_tag
import nltk

# 若未下载词性标注模型,先执行以下两行(仅首次运行需要)
# nltk.download('averaged_perceptron_tagger')

def get_superlative_adjectives(word_list):
    # 转小写并去重(可选,避免重复词汇)
    lower_words = list(set([word.lower() for word in word_list]))
    # 词性标注
    tagged_words = pos_tag(lower_words)
    # 筛选形容词最高级(标签JJS)
    superlatives = [word for word, tag in tagged_words if tag == 'JJS']
    return sorted(superlatives)

# 获取《哈姆雷特》词汇并调用函数
hamlet_words = shakespeare.words('hamlet.xml')
print(get_superlative_adjectives(hamlet_words))

代码说明

  • 词性标注:pos_tag函数会为每个词汇添加词性标签,JJS专门对应英语形容词的最高级形式(包括规则变化如mightiest和不规则变化如best)。
  • 去重处理:使用set去除重复词汇,最后排序让结果更规整(若需要保留原出现频次可去掉这一步)。
  • 修正变量错误:原代码中调用est(words_list)但未定义words_list,修正为使用实际获取的hamlet_words变量。

预期输出

运行后会得到仅包含形容词最高级的列表:

['best', 'blackest', 'chariest', 'chiefest', 'darkest', 'dearest', 'eldest', 'highest', 'littlest', 'lowest', 'mightiest', 'noblest', 'profoundest', 'strongest', 'unworthiest', 'weakest', 'wisest']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:55:40