Обработайте википедию в формате xml в текстовый формат, используя process_wiki.py, - PullRequest
0 голосов
/ 10 мая 2019

У меня проблема с кодом для обработки википедии в формате xml в текстовый формат с использованием process_wiki.py. Код, который я скачал из GG. и я получил ошибки здесь:

Traceback (most recent call last):
File “process_wiki.py”, line 30, in
output.write(b’ ‘.join(text).decode(‘utf-8’) + ‘\n’)
TypeError: sequence item 0: expected a bytes-like object, str found

I have a problem with the code to process the xml format wikipedia to text format using process_wiki.py. The code that I downloaded from GG. 

from __future__ import print_function
 
import logging
import os.path
import six
import sys
 
from gensim.corpora import WikiCorpus
 
if __name__ == '__main__':
    program = os.path.basename(sys.argv[0])
    logger = logging.getLogger(program)
 
    logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')
    logging.root.setLevel(level=logging.INFO)
    logger.info("running %s" % ' '.join(sys.argv))
 
    # check and process input arguments
    if len(sys.argv) != 3:
        print("Using: python process_wiki.py enwiki.xxx.xml.bz2 wiki.en.text")
        sys.exit(1)
    inp, outp = sys.argv[1:3]
    space = " "
    i = 0
 
    output = open(outp, 'w',encoding='utf8')
    wiki = WikiCorpus(inp, lemmatize=False, dictionary={})
    for text in wiki.get_texts():
		text = [x.encode(‘utf-8′) for x in text]
        if six.PY3:
            output.write(b’ ‘.join(text).decode(‘utf-8’) + ‘\n’)
        #   ###another method###
        #    output.write(
        #            space.join(map(lambda x:x.decode("utf-8"), text)) + '\n')
        else:
            output.write(space.join(text) + "\n")
        i = i + 1
        if (i % 10000 == 0):
            logger.info("Saved " + str(i) + " articles")
 
    output.close()
    logger.info("Finished Saved " + str(i) + " articles")

Я пытался исправить ошибки, которые он не может запустить.

...