【问题标题】:How to create corpus from multiple docx files in Python如何在 Python 中从多个 docx 文件创建语料库
【发布时间】:2017-02-23 04:53:38
【问题描述】:

我有一个包含各种 10 个 docx 文件的文件夹。我正在尝试创建一个语料库,它应该是一个长度为 10 的列表。列表的每个元素都应该引用每个 docx 文档的文本。

我有以下函数可以从 docx 文件中提取文本:

            import os
            from nltk.corpus.reader.plaintext import PlaintextCorpusReader
            import glob 
            from docx import *
            def getText(filename):
                document = Document(filename)

                newparatextlist = []
                for paragraph in document.paragraphs:
                    newparatextlist.append(paragraph.text.strip().encode("utf-8")) 
                return newparatextlist

            path = 'pat_to_folder/*.docx'   
            files=glob.glob(path)  

            corpus_list = []
            for f in files:
                cur_corpus = getText(f)
                corpus_list.append(cur_corpus)

            corpus_list[0] 

但是,如果我的word文档中有如下内容: http://www.actus-usa.com/sampleresume.doc https://www.myinterfase.com/sjfc/resources/resource_view.aspx?resource_id=53

上面的函数创建一个列表列表。我怎样才能简单地从文件中创建一个语料库?

TIA!

【问题讨论】:

  • 没有看到您的文件示例,我们可以肯定。语料库是什么意思,来自 10 个文档的文本列表?
  • 在向 newparatextlist 添加文本时使用 extend 而不是 appent
  • stackoverflow.com/questions/24104908/… 的副本?答案对链接的问题有帮助吗?
  • @putonspectacles,示例文件附在上面的链接中:actus-usa.com/sampleresume.doc。你是对的,我希望从 10 个文档中创建一个文本列表。该列表中的每个元素都应该是每个文档中的文本。使用我上面使用的方法,我得到了一个包含 10 个列表的列表。当我尝试将其展平时,我得到一个列表,其中每个元素都是文件中的一行,而不是文件中的整个文本。
  • @alvas:这怎么可能是重复的?在发布我的问题之前,我阅读了该问题。我不想创建 docx 文件。我已经有 docx 文件,我正在尝试从中创建一个语料库。我要反过来。

标签: python nltk corpus


【解决方案1】:

我尝试了一些不同的方法来解决我的问题。它还包括将各种 docx 文件加载到语料库中……我对您的代码做了一些细微的更改!

    def getText(filename):
        doc = Document(filename)
        fullText = []
        for para in doc.paragraphs:
            fullText.append(para.text.strip("\n"))
        return " ".join(fullText)

    PATH = "path_to_folder/*.docx"
    files = glob.glob(PATH)

    corpus_list = []
    for f in files:
        cur_corpus = getText(f)
        corpus_list.append(cur_corpus)

希望这能解决问题!

【讨论】:

    【解决方案2】:

    从 nltk.corpus.reader.plaintext 导入 PlaintextCorpusReader

    corpus = PlaintextCorpusReader(ROOT_PATH, '*.docx')

    它应该从 ROOT_PATH 中存在的 docx 文件的所有内容创建语料库

    【讨论】:

      猜你喜欢
      • 2019-07-17
      • 1970-01-01
      • 2013-05-14
      • 2016-03-17
      • 2013-02-07
      • 2017-07-10
      • 1970-01-01
      • 2019-10-13
      • 2016-09-22
      相关资源
      最近更新 更多