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

使用NLTK实现指定词性(如名词、动词)标注的操作方法

NLTK仅标注特定词性的实现方法

NLTK原生没有直接针对指定词性做标注的接口,常规实现逻辑是先对输入句子做完整的全词性标注,再过滤出你需要的词性结果即可,以下是可直接修改运行的代码:

完整可运行代码

import nltk
# 首次运行需执行下方2行下载依赖数据包,后续运行可注释
# nltk.download('punkt')
# nltk.download('averaged_perceptron_tagger')

# 自定义需要保留的词性标签集合,可按需修改
TARGET_POS = {
    # 名词类标签:普通单数名词、普通复数名词、专有单数名词、专有复数名词
    'NN', 'NNS', 'NNP', 'NNPS',
    # 动词类标签:原形动词、过去式动词、现在分词、过去分词、非第三人称单数动词、第三人称单数动词
    'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ'
}

def tag_specified_pos(input_sentence, target_tags=TARGET_POS):
    # 句子分词
    word_tokens = nltk.word_tokenize(input_sentence)
    # 全词性标注
    full_tag_result = nltk.pos_tag(word_tokens)
    # 过滤仅保留目标词性的结果
    return [item for item in full_tag_result if item[1] in target_tags]

# 测试示例
if __name__ == '__main__':
    test_sentence = "The little cat is chasing a butterfly on the green lawn."
    filtered_tags = tag_specified_pos(test_sentence)
    print(filtered_tags)

代码输出示例

运行上述测试代码会输出:
[('cat', 'NN'), ('is', 'VBZ'), ('chasing', 'VBG'), ('butterfly', 'NN'), ('lawn', 'NN')]

自定义修改说明

  • 若需要增加其他标注词性,只需将对应词性标签添加到TARGET_POS集合中即可,比如要新增形容词就添加'JJ', 'JJR', 'JJS'
  • 若只需要输出匹配词性的词语、不需要附带标签,将函数返回值修改为[item[0] for item in full_tag_result if item[1] in target_tags]即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:36:03