我对python比较陌生,我对如何使用NLTK的PlainTextCorpusReader方面创建一个语料库感兴趣。我把所有的文件都进口进去了。但是,当我运行代码来标记整个语料库中的文本时,它会返回一个错误。如果这个问题是重复的,我很抱歉,但我想对此有所了解。
这是导入文档的代码。我的电脑上有一堆与2016年DNC相关的文档(为了重现性,请从https://github.com/lin-jennifer/2016NCtranscripts获取部分或全部文本文件)
import os
import nltk
from nltk.corpus import PlaintextCorpusReader
from nltk.corpus import stopwords
corpus_root = '/Users/JenniferLin/Desktop/Data/DNCtexts'
DNClist = PlaintextCorpusReader(corpus_root, '.*')
DNClist.fileids()
#Print the words of one of the texts to make sure everything is loaded
DNClist.words('dnc.giffords.txt')
type(DNClist)
str(DNClist)当我对文本进行标记时,下面是代码和输出
代码:
from nltk.tokenize import sent_tokenize, word_tokenize
DNCtokens = sent_tokenize(DNClist)输出:TypeError: expected string or bytes-like object
即使我做了类似于DNClist.paras()的事情,我也会得到一个读取UnicodeDecodeError: 'utf-8' codec can't decode byte 0x9b in position 7: invalid start byte的错误
我想知道在如何加载文档或标记过程中是否存在错误。
非常感谢!
发布于 2019-08-07 16:33:19
看起来,您要做的是将文件夹中的纯文本文档标记化。如果这是您想要的,您可以通过向PlainTextCorpusReader请求令牌来实现这一点,而不是试图将句子标记器传递给PlainTextCorpusReader。所以而不是
DNCtokens = sent_tokenize(DNClist)
请考虑
DNCtokens = DNClist.sents()得到句子,DNCtokens = DNClist.paras()得到段落。
阅读器的源代码显示它保存了一个单词标记器和一个句子标记器,并将调用它们来执行您想要的标记化。
https://stackoverflow.com/questions/57395685
复制相似问题