我很难弄清楚。编码新手。我试着读一个.txt文件,标记它,并对其中的单词进行pos标记。在
到目前为止,我得到的是:
import nltk
from nltk import word_tokenize
import re
file = open('1865-Lincoln.txt', 'r').readlines()
text = word_tokenize(file)
string = str(text)
nltk.pos_tag(string)
我的问题是,它总是给我TypeError: expected string or bytes-like object
错误。在
word_tokenize需要字符串,但是文件.readlines()会给你一个清单。 只需将列表转换为字符串即可解决问题。在
我建议您执行以下操作:
对于包含以下内容的文本文件:
结果是:
它对我很有用,我使用的是python3.6,如果有必要的话。希望这有帮助!在
编辑1: 所以你的问题是你把一个字符串列表传递给
pos_tag()
,而doc说因此,您需要逐行传递它,即逐串传递。这就是为什么您得到一个
TypeError: expected string or bytes-like object
错误。在最有可能的
1865-Lincoln.txt
是指林肯总统的就职演说。它在NLTK中可以从https://github.com/nltk/nltk_data/blob/gh-pages/packages/corpora/inaugural.zip获得文档的原始源来自Inaugural Address Corpus
如果我们检查NLTK is reading the file using LazyCorpusReader,我们会发现文件是拉丁语1编码的。在
如果将默认编码设置为
utf8
,则很可能是TypeError: expected string or bytes-like object
出现的地方你应该用一个显式编码打开文件并正确地解码字符串,即
^{pr2}$但从技术上讲,您可以在NLTK中将
inagural
语料库作为语料库对象直接访问,即相关问题 更多 >
编程相关推荐