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

使用NLTK编写程序,判断输入单词在Brown语料库中名词动词频率高低

NLTK Brown语料库词性频率统计实现方案

完整可运行代码如下:

import nltk
# 首次运行需下载对应依赖,下载完成后可注释以下两行
nltk.download('brown')
nltk.download('averaged_perceptron_tagger')

from nltk.corpus import brown

# 接收用户输入,统一转小写消除大小写差异
target_word = input("Enter a word: ").lower()

noun_count = 0
verb_count = 0

# 遍历Brown语料库所有带词性标注的词汇
for word, tag in brown.tagged_words():
    if word.lower() == target_word:
        # 名词类标签统一以NN为前缀,动词类标签统一以VB为前缀
        if tag.startswith('NN'):
            noun_count += 1
        elif tag.startswith('VB'):
            verb_count += 1

# 输出统计结果
print(f"单词 '{target_word}' 作为名词出现次数:{noun_count}")
print(f"单词 '{target_word}' 作为动词出现次数:{verb_count}")

# 比较使用频率
if noun_count > verb_count:
    print(f"该单词作为*名词*的使用频率更高")
elif verb_count > noun_count:
    print(f"该单词作为*动词*的使用频率更高")
else:
    print("该单词作为名词和动词的使用频率相同")

代码说明

  • 词性匹配规则:Brown语料库的词性标注体系中,所有名词细分类型(普通名词、专有名词、名词复数等)的标签都以NN为前缀,所有动词细分类型(原型、过去式、现在分词、过去分词等)的标签都以VB为前缀,匹配前缀即可覆盖对应词性的所有场景
  • 大小写处理:代码默认将输入词汇和语料库词汇都转为小写后匹配,避免大小写差异导致的统计遗漏。如果需要严格区分大小写,删除代码中所有.lower()即可
  • 效率优化方案:如果觉得全量遍历语料库速度较慢,可以使用NLTK自带的条件频率分布类实现更高效的查询,将统计逻辑替换为以下代码即可:
# 优化版统计逻辑,提前构建统计索引,查询速度更快
cfd = nltk.ConditionalFreqDist((word.lower(), tag[:2]) for word, tag in brown.tagged_words())
noun_count = cfd[target_word].get('NN', 0)
verb_count = cfd[target_word].get('VB', 0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:15:01