为就职演说语料库TXT文件做词性标注时遇类型错误求助
解决TypeError: expected string or bytes-like object的问题
嘿,我一眼就瞅到你代码里的问题啦,咱们一步步来把它搞定:
问题根源拆解
readlines()返回的是列表,不是字符串:你用file = open('1865-Lincoln.txt', 'r').readlines()得到的是一个包含每一行文本的列表,但word_tokenize()只能接收字符串类型的输入,直接传列表肯定会触发类型错误。- 错误转换分词结果的类型:
word_tokenize()本身就会返回分词后的单词列表,你却把它转成了带括号、引号的字符串str(text),而nltk.pos_tag()需要的是纯净的单词列表,不是这种格式化后的字符串,这也会导致报错。
修正后的完整代码
import nltk from nltk import word_tokenize # 用with语句安全读取整个文件为字符串(自动关闭文件,避免资源泄漏) with open('1865-Lincoln.txt', 'r') as file: full_text = file.read() # 对完整文本字符串做分词,得到单词列表 tokens = word_tokenize(full_text) # 直接把分词列表传给pos_tag做词性标注 tagged_result = nltk.pos_tag(tokens) # 打印看看标注结果 print(tagged_result)
额外小提醒
如果运行时提示缺少模型,记得先执行这两行下载必要的NLTK资源:
nltk.download('punkt') nltk.download('averaged_perceptron_tagger')
内容的提问来源于stack exchange,提问作者ArchivistG
相关产品推荐
相关产品推荐

