调用NLTK book库计算文本lexical diversity返回None求助
问题分析与修复方案
你的代码返回None主要有以下几个问题,逐一解决即可:
1. 输入类型不匹配
用户通过input()输入的是字符串(比如"text1"),但函数里的books列表存储的是NLTK的Text对象,字符串和对象无法匹配,导致if text_input in books永远为False,函数直接返回None。
2. 缩进语法错误
原代码中return richness的缩进位置错误,Python对缩进有严格要求,它应该和if语句保持同一缩进层级,否则会触发语法错误。
3. 文本丰富度计算逻辑颠倒
Lexical Diversity(文本丰富度)的标准计算方式是不同词汇数量 / 总词汇数量,你写反成了len(text_input)/len(set(text_input)),得到的是词汇重复度而非丰富度。
修复后的完整代码
from nltk.book import * def lexical_diversity_of_nltk_text(text_name): # 建立文本名称与对应Text对象的映射 book_map = { "text1": text1, "text2": text2, "text3": text3, "text4": text4, "text5": text5, "text6": text6, "text7": text7, "text8": text8, "text9": text9 } # 校验输入并计算结果 if text_name in book_map: text = book_map[text_name] richness = len(set(text)) / len(text) return richness # 输入无效时返回提示 return "输入无效,请输入text1-text9中的一个" text_input = input('Please enter the number of text as in example - "text1": ') print(lexical_diversity_of_nltk_text(text_input))
内容的提问来源于stack exchange,提问作者Dana Tussupbekova
相关产品推荐
相关产品推荐

