загрузка модели word2vec в AWS дает ошибку - PullRequest
0 голосов
/ 06 февраля 2019

- python3

Я создал модель word2vec с использованием библиотек gensim и сохранил ее на локальном диске.Я хочу загрузить этот файл в мое ведро s3.Я успешно создал модель word2vec с помощью gensim, но при загрузке ее в мое ведро я получаю сообщение об ошибке.

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte

некоторые ссылки предлагают кодировку, чтобы избежать такой ошибки.Это применимо к созданной векторной модели word2vec?Если да, то какой тип кодирования мне нужно сделать?Если нет, то есть ли другой способ, которым я мог бы загрузить файл.Вот мой код для загрузки файла в мое ведро s3

import boto 
from boto.s3.key import Key
from os.path import expanduser

def upload_file(aws_access_key_id, aws_secret_access_key, bucket_name, bucket_folders, path_to_file, file_name, job_id):
    try: 
        conn = boto.connect_s3(aws_access_key_id, aws_secret_access_key)
    except Exception as error: 
        #LOGGER.info( "Cannot upload %s job vector to aws due to connection error in aws")
        #LOGGER.exception(error)
        print("connection error")

    if conn:
        bucket = conn.get_bucket(bucket_name)
        check_file_in_bucket = bucket_folders + file_name
        if bucket.lookup(check_file_in_bucket): 
            # deleting the existing file on server
            (bucket.lookup(check_file_in_bucket)).delete()
        k = Key(bucket)
        k.key = check_file_in_bucket

        upload_file = path_to_file + file_name
        try:

            if os.path.isfile(upload_file):
                print("file present")
                upload_file = open(upload_file, 'r+')
                try:
                    size = os.fstat(upload_file.fileno()).st_size
                except:
                    # Not all file objects implement fileno(),
                    # so we fall back on this
                    file.seek(0, os.SEEK_END)
                    size = file.tell()
                sent = k.set_contents_from_file(upload_file, rewind=True)
                # Rewind for later use
                upload_file.seek(0)
                if sent == size:
                    #LOGGER.info("jobvector model for %s has been sucessfully uploaded", job_id)
                    print(" It worked")
                else:
                    #LOGGER.info("job vector model for %s has not sucessfully uploaded", job_id)
                    print("Try again")
        except Exception as error: 
            #LOGGER.info("Cannot upload %s job vector model as file not found in local disk")
            #LOGGER.exception(error)
            print("file not found in local disk")
    return 0

if __name__ == '__main__':
    MODEL_FOLDER = expanduser("~") + '/modelsdata/job_vectors/'
    BUCKET_FOLDER = 'w2v_model/jobvectors/'
    BUCKET_NAME = 'test-voip'
    aws_access_key_id = CONFIG["aws-s3"]["key_id"]
    aws_secret_access_key = CONFIG["aws-s3"]["key_access"]
    upload_file(aws_access_key_id,aws_secret_access_key,\
        BUCKET_NAME, BUCKET_FOLDER, MODEL_FOLDER, '237091_model', 6789)

Я попытался загрузить файл 'wav' в мое ведро s3, и это было успешно с приведенным выше кодом. У меня проблема с

...