我是 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起始字节
我想知道我加载文档的方式或标记化过程中是否存在错误。
非常感谢!
请您参考如下方法:
看起来您想做的是标记文件夹中的纯文本文档。如果这是您想要的,您可以通过向 PlainTextCorpusReader 询问标记来执行此操作,而不是尝试将句子标记器传递给 PlainTextCorpusReader。所以不是
DNCtokens = sent_tokenize(DNClist)
请考虑
DNCtokens = DNClist.sents()
获取句子或 DNCtokens = DNClist.paras()
获取段落。
source code for the reader表明它拥有一个单词分词器和一个句子分词器,并将调用它们来进行您想要的分词。