使用Python从epub中提取文本

3
我已经编写了以下代码,用于提取电子书中的单词,并将它们添加到语料库以进行文本挖掘。
# loading the german corpus
from ebooklib import epub
import ebooklib
import os
import nltk
input_path = r"C:\Users\jzeh\Desktop\Directory"
german_corpus = []
book = epub.read_epub(os.path.join(input_path,'grimms-maerchen.epub'))
for doc in book.get_items():
    german_corpus += str(doc.content)
    german_corpus = [w.lower() for w in nltk.word_tokenize(german_corpus)]

很遗憾,运行代码会给我一个错误:
TypeError  ---> 12     german_corpus = [w.lower() for w in nltk.word_tokenize(german_corpus)]
TypeError: expected string or bytes-like object

有人能告诉我,我错过了什么吗?

即使你可能已经自己想到了:这种方法不可行,因为你会从epub中提取每种类型的内容。这不仅包括单词,还包括HTML和XML标签,这将破坏你的语料库。此外,首先考虑使用一个词形还原器来规范化你的词汇表。 - padmalcom
1个回答

2

nltk.word_tokenize需要一个字符串作为输入,而你传递给它的是一个列表。如果我理解正确,我认为你想要这样:

...

for doc in book.get_items():
    doc_content = str(doc.content)
    for w in nltk.word_tokenize(doc_content):
        german_corpus.append(w.lower())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接