Доступ к файлу bz2 в S3 из блокнота Sagemaker

Я могу читать и записывать CSV-файлы из корзины S3 и в нее из записной книжки Sagemaker, но при попытке прочитать файл bz2, используя метод пути, используемый в CSV-файлах, я получаю сообщение об ошибке отсутствия файла или каталога.

IOErrorTraceback (most recent call last)
<ipython-input-19-d14d47a702e1> in <module>()
      2 # Create corpus
      3 #%time wiki = WikiCorpus("resources/articles1.xml.bz2", tokenizer_func=spacy_tokenize)
----> 4 wiki = WikiCorpus("s3://sagemakerq/enwiki.xml.bz2", tokenizer_func=spacy_tokenize)

/home/ec2-user/anaconda3/envs/amazonei_mxnet_p27/lib/python2.7/site-packages/gensim/corpora/wikicorpus.pyc in __init__(self, fname, processes, lemmatize, dictionary, filter_namespaces, tokenizer_func, article_min_tokens, token_min_len, token_max_len, lower, filter_articles)
    634 
    635         if dictionary is None:
--> 636             self.dictionary = Dictionary(self.get_texts())
    637         else:
    638             self.dictionary = dictionary

/home/ec2-user/anaconda3/envs/amazonei_mxnet_p27/lib/python2.7/site-packages/gensim/corpora/dictionary.pyc in __init__(self, documents, prune_at)
     82 
     83         if documents is not None:
---> 84             self.add_documents(documents, prune_at=prune_at)
     85 
     86     def __getitem__(self, tokenid):

/home/ec2-user/anaconda3/envs/amazonei_mxnet_p27/lib/python2.7/site-packages/gensim/corpora/dictionary.pyc in add_documents(self, documents, prune_at)
    195 
    196         """
--> 197         for docno, document in enumerate(documents):
    198             # log progress & run a regular check for pruning, once every 10k docs
    199             if docno % 10000 == 0:

/home/ec2-user/anaconda3/envs/amazonei_mxnet_p27/lib/python2.7/site-packages/gensim/corpora/wikicorpus.pyc in get_texts(self)
    676             ((text, self.lemmatize, title, pageid, tokenization_params)
    677              for title, text, pageid
--> 678              in extract_pages(bz2.BZ2File(self.fname), self.filter_namespaces, self.filter_articles))
    679         pool = multiprocessing.Pool(self.processes, init_to_ignore_interrupt)
    680 

IOError: [Errno 2] No such file or directory: 's3://sagemakerq/enwiki.xml.bz2'

person Jay Qadan    schedule 20.04.2019    source источник


Ответы (1)


Похоже, вы используете пакет Python gensim для создания корпуса из дампа базы данных на основе вики из S3. Пакет не поддерживает чтение непосредственно с S3. Вместо этого вы можете скачать файл и работать с ним.

import boto3
from gensim.corpora.wikicorpus import WikiCorpus

s3 = boto3.client('s3')
s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME')
wiki = WikiCorpus('FILE_NAME')
person raj    schedule 20.04.2019