NLTK英文语料库words模块计数出现重复结果的问题
为什么NLTK words语料库调用count()会出现重复计数?
NLTK的words语料库是合并多个不同英语词典资源构建的,并非单一来源的词典。这就导致部分单词会在不同源词典里被重复收录,最终反映在语料库中。
你遇到的words.words().count("skirt")返回2,就是因为这个词在语料库的不同文件/来源里各出现了一次;而count("Skirt")返回0,是因为整个语料库的条目都是小写形式,没有首字母大写的版本。
至于你切片查看甚至排序后没发现重复,是因为words.words()返回的不是普通Python列表,而是懒加载的语料库视图对象:当你切片时,它只会加载对应范围的内容,而重复的条目可能不在你查看的切片范围内。如果要确认重复,你可以把它转成列表后再检查:
from nltk.corpus import words word_list = list(words.words()) print(word_list.count("skirt")) # 依然返回2 # 查找重复条目的位置 duplicate_indices = [idx for idx, word in enumerate(word_list) if word == "skirt"] print(duplicate_indices) # 会输出两个不同的索引值
这类重复并非NLTK的Bug,而是语料库构建时多源合并的正常结果——不同词典可能因收录标准、地域变体(如美式/英式英语)等原因,重复收录同一个单词。
内容的提问来源于stack exchange,提问作者pebox11
相关产品推荐
相关产品推荐

