Skip to main content
 首页 » 编程设计

python之使用 PlainTextCorpusReader 创建语料库并对其进行分析

2024年11月01日4zhujiabin

我是 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表明它拥有一个单词分词器和一个句子分词器,并将调用它们来进行您想要的分词。