Як виправити: "UnicodeDecodeError: кодек" ascii "не може розшифрувати байт"


459
as3:~/ngokevin-site# nano content/blog/20140114_test-chinese.mkd
as3:~/ngokevin-site# wok
Traceback (most recent call last):
File "/usr/local/bin/wok", line 4, in
Engine()
File "/usr/local/lib/python2.7/site-packages/wok/engine.py", line 104, in init
self.load_pages()
File "/usr/local/lib/python2.7/site-packages/wok/engine.py", line 238, in load_pages
p = Page.from_file(os.path.join(root, f), self.options, self, renderer)
File "/usr/local/lib/python2.7/site-packages/wok/page.py", line 111, in from_file
page.meta['content'] = page.renderer.render(page.original)
File "/usr/local/lib/python2.7/site-packages/wok/renderers.py", line 46, in render
return markdown(plain, Markdown.plugins)
File "/usr/local/lib/python2.7/site-packages/markdown/init.py", line 419, in markdown
return md.convert(text)
File "/usr/local/lib/python2.7/site-packages/markdown/init.py", line 281, in convert
source = unicode(source)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 1: ordinal not in range(128). -- Note: Markdown only accepts unicode input!

Як це виправити?

У деяких інших статичних блогових додатках на основі пітона китайська публікація може бути успішно опублікована. Наприклад, ця програма: http://github.com/vrypan/bucket3 . На моєму веб-сайті http://bc3.brite.biz/ китайська публікація може бути успішно опублікована.


Відповіді:


569

tl; dr / швидке виправлення

  • Не розшифровуйте / кодуйте мимоволі невільно
  • Не припускайте, що ваші рядки закодовані UTF-8
  • Спробуйте якнайшвидше перетворити рядки в рядки Unicode у свій код
  • Виправити локаль: Як вирішити UnicodeDecodeError в Python 3.6?
  • Не спокушайтеся використовувати швидкі reloadхаки

Unicode Zen в Python 2.x - довга версія

Не бачачи джерела, важко дізнатися першопричину, тому мені доведеться говорити загалом.

UnicodeDecodeError: 'ascii' codec can't decode byteзазвичай відбувається, коли ви намагаєтеся перетворити Python 2.x, strякий містить non-ASCII, до рядка Unicode, не вказуючи кодування вихідної рядки.

Якщо коротко, рядки Unicode - це абсолютно окремий тип рядка Python, який не містить кодування. Вони містять лише коди точок Unicode і тому можуть містити будь-яку точку Unicode з усього спектру. Рядки містять закодований текст, наприклад, UTF-8, UTF-16, ISO-8895-1, GBK, Big5 тощо. Рядки декодуються до Unicode, а Unicodes - закодовані до рядків . Файли та текстові дані завжди передаються у кодованих рядках.

Автори модуля Markdown, ймовірно, використовують unicode()(де виняток викинуто) як ворота якості до решти коду - він перетворить ASCII або повторно оберне існуючі рядки Unicode в нову рядок Unicode. Автори Markdown не можуть знати кодування вхідних рядків, тому розраховуватимуть на вас, щоб розшифрувати рядки до рядків Unicode перед тим, як перейти до Markdown.

Рядки Unicode можна оголосити у вашому коді за допомогою uпрефікса до рядків. Напр

>>> my_u = u'my ünicôdé strįng'
>>> type(my_u)
<type 'unicode'>

Рядки Unicode можуть також надходити з файлів, баз даних та мережевих модулів. Коли це станеться, вам не потрібно турбуватися про кодування.

Gotchas

Перетворення з strUnicode може відбуватися навіть тоді, коли ви не телефонуєте явно unicode().

Наступні сценарії спричиняють UnicodeDecodeErrorвинятки:

# Explicit conversion without encoding
unicode('€')

# New style format string into Unicode string
# Python will try to convert value string to Unicode first
u"The currency is: {}".format('€')

# Old style format string into Unicode string
# Python will try to convert value string to Unicode first
u'The currency is: %s' % '€'

# Append string to Unicode
# Python will try to convert string to Unicode first
u'The currency is: ' + '€'         

Приклади

На наступній схемі ви бачите, як слово caféбуло закодовано або в кодуванні "UTF-8", або "Cp1252", залежно від типу терміналу. В обох прикладах cafє просто регулярні асії. У UTF-8 éкодується за допомогою двох байтів. У "Cp1252" е 0xE9 (що також буває значенням точки Unicode (це не випадковість)). Викликається правильне decode(), і перетворення в Python Unicode є успішним: Діаграма рядка, що перетворюється в рядок Python Unicode

У цій діаграмі decode()викликається з ascii(що те саме, що дзвонити unicode()без заданого кодування). Оскільки ASCII не може містити байтів більше 0x7F, це призведе до UnicodeDecodeErrorвиключення:

Діаграма рядка, що перетворюється на рядок Python Unicode з неправильним кодуванням

Сендвіч Unicode

Добра практика створити у своєму коді сендвіч Unicode, де ви декодуєте всі вхідні дані до рядків Unicode, працюєте з Unicode, а потім кодуєте до strs на виході. Це позбавить вас від занепокоєння щодо кодування рядків посередині коду.

Введення / декодування

Вихідний код

Якщо вам потрібно вписати не-ASCII у свій вихідний код, просто створіть рядки Unicode, префіксуючи рядок з a u. Напр

u'Zürich'

Щоб дозволити Python розшифрувати ваш вихідний код, вам потрібно буде додати заголовок кодування, який відповідає фактичному кодуванню вашого файлу. Наприклад, якщо ваш файл був закодований як "UTF-8", ви використовуєте:

# encoding: utf-8

Це необхідно лише в тому випадку, якщо у вихідному коді немає ASCII .

Файли

Зазвичай дані, що не належать до ASCII, отримуються з файлу. ioМодуль забезпечує TextWrapper , який декодує файл на льоту, використовуючи заданий encoding. Ви повинні використовувати правильне кодування для файлу - його не можна легко здогадатися. Наприклад, для файлу UTF-8:

import io
with io.open("my_utf8_file.txt", "r", encoding="utf-8") as my_file:
     my_unicode_string = my_file.read() 

my_unicode_stringТоді було б придатним для переходу в Маркдаун. Якщо UnicodeDecodeErrorз read()рядка, ви, ймовірно, використали неправильне значення кодування.

Файли CSV

Модуль CSV Python 2.7 не підтримує символи, що не належать до ASCII 😩. Однак довідка є на веб-сторінці https://pypi.python.org/pypi/backports.csv .

Використовуйте його як вище, але передайте йому відкритий файл:

from backports import csv
import io
with io.open("my_utf8_file.txt", "r", encoding="utf-8") as my_file:
    for row in csv.reader(my_file):
        yield row

Бази даних

Більшість драйверів баз даних Python можуть повертати дані в Unicode, але зазвичай потрібна невелика конфігурація. Завжди використовуйте рядки Unicode для запитів SQL.

MySQL

У рядок з'єднання додайте:

charset='utf8',
use_unicode=True

Напр

>>> db = MySQLdb.connect(host="localhost", user='root', passwd='passwd', db='sandbox', use_unicode=True, charset="utf8")
PostgreSQL

Додати:

psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
psycopg2.extensions.register_type(psycopg2.extensions.UNICODEARRAY)

HTTP

Веб-сторінки можуть бути кодовані практично в будь-якому кодуванні. Content-typeЗаголовок повинен містити charsetполе натяк на кодуванні. Потім вміст може бути декодовано вручну проти цього значення. Крім того, Python-Requests повертає Unicodes у response.text.

Вручну

Якщо ви повинні декодувати рядки вручну, ви можете просто зробити my_string.decode(encoding), де encodingвідповідне кодування. Тут підтримуються кодеки, що підтримуються Python 2.x: Стандартні кодування . Знову ж таки, якщо ви отримаєте, UnicodeDecodeErrorто, ймовірно, ви отримали неправильне кодування.

М’ясо бутерброда

Працюйте з Unicodes так, як звичайно.

Вихідні дані

stdout / друк

printпише через потік stdout. Python намагається налаштувати кодер на stdout, щоб Unicodes були закодовані до кодування консолі. Наприклад, якщо оболонка Linux localeє en_GB.UTF-8, вихід буде кодований UTF-8. У Windows ви будете обмежені 8-бітовою кодовою сторінкою.

Неправильно налаштована консоль, наприклад, пошкоджена локаль, може призвести до несподіваних помилок друку. PYTHONIOENCODINGзмінна середовище може змусити кодування для stdout.

Файли

Так само, як введення, io.openможна використовувати для прозорого перетворення Unicode в кодовані рядки байтів.

База даних

Та сама конфігурація для читання дозволить Unicodes писати безпосередньо.

Пітон 3

Python 3 - це не більше можливостей Unicode, ніж Python 2.x, однак він трохи менш плутаний у цій темі. Наприклад, регулярний str- це рядок Unicode, а старий str- зараз bytes.

Кодування за замовчуванням - UTF-8, тому якщо ви .decode()використовуєте рядок байтів без кодування, Python 3 використовує кодування UTF-8. Це, ймовірно, усуває 50% проблем Unicode людей.

Крім того, open()працює в текстовому режимі за замовчуванням, тому повертає розшифровані str(Unicode). Кодування походить з вашої локальної області, яка, як правило, є UTF-8 в системах Un * x або 8-бітовою кодовою сторінкою, наприклад, Windows-1251, у вікнах Windows.

Чому ви не повинні використовувати sys.setdefaultencoding('utf8')

Це неприємний злом (є причина, яку ви повинні використовувати reload), що лише маскує проблеми і перешкоджатиме міграції на Python 3.x. Зрозумійте проблему, виправте першопричину та насолоджуйтесь Unicode zen. Див. Чому ми не повинні використовувати sys.setdefaultencoding ("utf-8") у py-скрипті? для отримання детальної інформації


2
Для тих, хто шукає відповіді Python 2, більш корисний TLDR: використовувати io.openдля читання / запису файлів, використання from __future__ import unicode_literals, налаштування інших входів / виходів даних (наприклад, баз даних) для використання unicode.
idbrii

Sooo, як це виправити? хай це не проблема написання сценарію - це встановлення одного
Меттью

@Matthew спробуйте встановити PYTHONIOENCODING=utf-8. Якщо це не виправить це, вам потрібно буде зв’язатися з автором сценарію, щоб виправити їх код.
Аластер Маккормак

498

Нарешті я зрозумів:

as3:/usr/local/lib/python2.7/site-packages# cat sitecustomize.py
# encoding=utf8  
import sys  

reload(sys)  
sys.setdefaultencoding('utf8')

Дай мені перевірити:

as3:~/ngokevin-site# python
Python 2.7.6 (default, Dec  6 2013, 14:49:02)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> reload(sys)
<module 'sys' (built-in)>
>>> sys.getdefaultencoding()
'utf8'
>>>

Сказане вище показує, що за замовчуванням кодування python є utf8. Тоді помилки більше немає.


7
Я намагаюся це зробити, але це не могло змінити кодування назавжди. Як тільки вийдете з консолі python і почніть знову, кодування все одно те саме
macemers

37
Дякую! Але навіщо нам потрібно перезавантажувати sys після імпорту?
Дмитерс

6
@DmitryNarkevich, через ілюзивну функцію setdefaultencoding . Він видаляється при запуску Python, оскільки, мабуть, він ніколи не повинен був бути частиною належного випуску.
predi

3
Це означає, що ви не усунули першопричину. Ви щойно переламували будь-яку мається на увазі конверсію
Аластер Маккормак

5
Кодування за замовчуванням @miraculixx Python 3 - це UTF-8 із рядками Unicode як типовим str, тому його там не прострочено. У Python 2.x Unicode знаходився в стані переходу, тому було б небезпечно припускати кодування під час перетворення байтів у Unicode. Тому кодування за замовчуванням Py2 для ASCII було навмисним вибором, і чому зміна кодування за замовчуванням вимагає навмисного злому перезавантаження sys. Правильний спосіб вигнати помилки кодування в Py2 - це однозначне декодування та кодування (байт) рядків Unicode, коли необхідні перетворення - не просто припускати, що рядки кодуються UTF-8.
Аластер Маккормак

130

Це класичне "питання Unicode". Я вважаю, що пояснення цього виходить за межі відповіді StackOverflow, щоб повністю пояснити, що відбувається.

Це добре пояснюється тут .

У дуже короткому резюме ви передали те, що інтерпретується як рядок байтів, до чогось потрібно розшифрувати його в символи Unicode, але кодек за замовчуванням (ascii) не працює.

Презентація, на яку я вказав, дає поради щодо уникнення цього. Зробіть свій код "унікод-сендвіч". У Python 2 використання from __future__ import unicode_literalsдовідки.

Оновлення: як можна виправити код:

Гаразд - у вашому змінному "джерелі" у вас є кілька байт. З вашого запитання незрозуміло, як вони потрапили туди - можливо, ви їх прочитали з веб-форми? У будь-якому випадку, вони не кодуються ascii, але python намагається перетворити їх на unicode, припускаючи, що вони є. Вам потрібно чітко сказати, що таке кодування. Це означає, що вам потрібно знати, що таке кодування! Це не завжди просто, і це повністю залежить від того, звідки походить цей рядок. Можна експериментувати з деякими загальними кодуваннями - наприклад, UTF-8. Ви повідомляєте unicode () кодування як другий параметр:

source = unicode(source, 'utf-8')

1
це все ще болить голова.mr GreenAsJade, можете мені дати конкретне рішення?
рибалка

1
Ви запитуєте "як я можу як користувач цього блогу уникнути цієї проблеми?". Або ваше питання "як я можу виправити код, щоб ця проблема не сталася"?
GreenAsJade

2
Містер greenasjade: куди мені слід поставити "source = unicode (джерело, 'utf-8')"?
рибалка

7
Дивно ... після позитивних відгуків протягом року, раптом два негативні голоси ... Так?
GreenAsJade

11
використання currentFile = open(filename, 'rt', encoding='latin1') або currentFile = open(filename, 'rt', encoding='utf-8')- дивіться тут: stackoverflow.com/a/23917799/2047442
irudyak

42

У деяких випадках, коли ви перевіряєте кодування за замовчуванням ( print sys.getdefaultencoding()), він повертає, що ви використовуєте ASCII. Якщо ви перейдете на UTF-8, він не працює, залежно від вмісту змінної. Я знайшов інший спосіб:

import sys
reload(sys)  
sys.setdefaultencoding('Cp1252')

Ти, це спрацювало для моєї проблеми з Python киданням UnicodeDecodeError на var = u "" "варіювати велику строку" ""
user2426679

AttributeError: у модуля 'sys' немає атрибута 'setdefaultencoding'
Chaine

і reload(sys)використовується саме з цієї причини.
Марцін Орловський

1
Працювали для мене! ДЯКУЮ !
Мацей

22

Я шукав, щоб вирішити таке повідомлення про помилку:

unicodedecodeerror: 'ascii' кодек не може декодувати байт 0xe2 у положенні 5454: порядковий не знаходиться в діапазоні (128)

Нарешті я це виправив, вказавши "кодування":

f = open('../glove/glove.6B.100d.txt', encoding="utf-8")

Бажаю, щоб і вам це допомогло.


це вирішило для мене помилку під час читання / запису файлів .csv, не
знадобився жоден

Я не розумію, чому інші відповіді дають стільки деталей ... але забудьте про це просте рішення. +10!
stan0

18
"UnicodeDecodeError: 'ascii' codec can't decode byte"

Причина цієї помилки: input_string повинен бути unicode, але вказано str

"TypeError: Decoding Unicode is not supported"

Причина цієї помилки: спроба перетворити unicode input_string в unicode


Тому спочатку перевірте, чи є ваш input_string strта, якщо потрібно, перетворіть у unicode:

if isinstance(input_string, str):
   input_string = unicode(input_string, 'utf-8')

По-друге, вищезгадане просто змінює тип, але не видаляє символи, що не входять до списку. Якщо ви хочете видалити символи, які не належать ascii:

if isinstance(input_string, str):
   input_string = input_string.decode('ascii', 'ignore').encode('ascii') #note: this removes the character and encodes back to string.

elif isinstance(input_string, unicode):
   input_string = input_string.encode('ascii', 'ignore')

9

Я вважаю найкращим завжди конвертувати в unicode - але цього важко досягти, оскільки на практиці вам доведеться перевіряти та перетворювати кожен аргумент на кожну функцію та метод, який ви коли-небудь записуєте, що включає певну форму обробки рядків.

Тому я придумав наступний підхід до гарантії унікодів або рядків байтів, з будь-якого введення. Коротше кажучи, включайте та використовуйте такі лямбда:

# guarantee unicode string
_u = lambda t: t.decode('UTF-8', 'replace') if isinstance(t, str) else t
_uu = lambda *tt: tuple(_u(t) for t in tt) 
# guarantee byte string in UTF8 encoding
_u8 = lambda t: t.encode('UTF-8', 'replace') if isinstance(t, unicode) else t
_uu8 = lambda *tt: tuple(_u8(t) for t in tt)

Приклади:

text='Some string with codes > 127, like Zürich'
utext=u'Some string with codes > 127, like Zürich'
print "==> with _u, _uu"
print _u(text), type(_u(text))
print _u(utext), type(_u(utext))
print _uu(text, utext), type(_uu(text, utext))
print "==> with u8, uu8"
print _u8(text), type(_u8(text))
print _u8(utext), type(_u8(utext))
print _uu8(text, utext), type(_uu8(text, utext))
# with % formatting, always use _u() and _uu()
print "Some unknown input %s" % _u(text)
print "Multiple inputs %s, %s" % _uu(text, text)
# but with string.format be sure to always work with unicode strings
print u"Also works with formats: {}".format(_u(text))
print u"Also works with formats: {},{}".format(*_uu(text, text))
# ... or use _u8 and _uu8, because string.format expects byte strings
print "Also works with formats: {}".format(_u8(text))
print "Also works with formats: {},{}".format(*_uu8(text, text))

Ось ще кілька міркувань щодо цього .


Привіт, у Python 3 функція _u не працює з цим значенням 'Ita £'.
Мартін

1
Гаразд, з чого почати свої "міркування"? print unicode(u'Zürich', encoding="UTF-8")а потім скаржиться "Але дивно, що ви не можете кодувати unicode ext в UTF8". unicode()не кодує; він розшифровується, і ви не можете розшифрувати Unicode - він уже розшифровується!
Аластер Маккормак

@AlastairMcCormack Вас вітають, щоб покращити публікацію. Якщо ви віддаєте перевагу поширювати свою передбачувану перевагу над усіма, хто не поділяє вашу думку та прозріння, я, відверто кажучи, не зацікавлений. Дякую.
miraculixx

3
@miraculixx Вибачте, я не хотів натрапити на те, як ривок. Турбуватися про декодування та кодування щоразу, коли ви використовуєте рядок у своєму коді, просто зайве.
Аластер Маккормак

7

Щоб вирішити це на рівні операційної системи в установці Ubuntu, перевірте наступне:

$ locale charmap

Якщо ви отримаєте

locale: Cannot set LC_CTYPE to default locale: No such file or directory

замість

UTF-8

потім встановіть LC_CTYPEі LC_ALLтак:

$ export LC_ALL="en_US.UTF-8"
$ export LC_CTYPE="en_US.UTF-8"

6

Кодування перетворює об'єкт unicode в об'єкт string. Я думаю, ви намагаєтеся кодувати струнний об'єкт. спочатку перетворіть свій результат в об’єкт unicode, а потім закодуйте цей об’єкт unicode в 'utf-8'. наприклад

    result = yourFunction()
    result.decode().encode('utf-8')

4

У мене була така ж проблема, але вона не працювала для Python 3. Я дотримувався цієї проблеми, і вона вирішила мою проблему:

enc = sys.getdefaultencoding()
file = open(menu, "r", encoding = enc)

Ви повинні встановити кодування під час читання / запису файлу.


4

Я отримав таку ж помилку, і це вирішило мою помилку. Дякую! python 2 та python 3, що відрізняються обробкою unicode, робить мариновані файли досить несумісними для завантаження. Тому використовуйте аргумент кодування python pickle. Посилання нижче допомогло мені вирішити подібну проблему, коли я намагався відкрити зібрані дані з мого python 3.7, тоді як мій файл спочатку був збережений у версії python 2.x. https://blog.modest-destiny.com/posts/python-2-and-3-compatible-pickle-save-and-load/ Я копіюю функцію load_pickle у своєму сценарії і називаю load_pickle (pickle_file) під час завантаження мого вхідні дані, як це:

input_data = load_pickle("my_dataset.pkl")

Функція load_pickle тут:

def load_pickle(pickle_file):
    try:
        with open(pickle_file, 'rb') as f:
            pickle_data = pickle.load(f)
    except UnicodeDecodeError as e:
        with open(pickle_file, 'rb') as f:
            pickle_data = pickle.load(f, encoding='latin1')
    except Exception as e:
        print('Unable to load data ', pickle_file, ':', e)
        raise
    return pickle_data

1
краще включити load_pickleу свою відповідь визначення функції.
sanyash


3

Коротше кажучи, для забезпечення правильної обробки унікоду в Python 2:

  • використання io.open для читання / запису файлів
  • використання from __future__ import unicode_literals
  • налаштувати інші входи / виходи даних (наприклад, бази даних, мережа) для використання Unicode
  • якщо ви не можете налаштувати виходи на utf-8, конвертуйте свої вихідні дані для них print(text.encode('ascii', 'replace').decode())

Для пояснень див. Докладну відповідь @Alastair McCormack .


• використовувати io.open(path, 'r', encoding='utf-8')для читання файлів, кодованих utf-8.
Боб Штейн

3

У мене була така ж помилка: моє рішення: URL-адреси, що містять символи, що не мають значення ascii (байти зі значеннями> 128):

url = url.decode('utf8').encode('utf-8')

Примітка: utf-8, utf8 - просто псевдоніми. Використання лише 'utf8' або 'utf-8' має працювати так само

У моєму випадку, працюючий для мене, в Python 2.7, я вважаю, що це завдання змінило "щось" у strвнутрішньому представленні, тобто воно змушує правильне декодування послідовної байтової послідовності urlі, нарешті, ставить рядок у utf-8 str з вся магія в потрібному місці. Unicode в Python - це чорна магія для мене. Надія корисна


1
Чому тире в одне, а не в інше
ІгорГанапольський

1
Python приймає псевдоніми для кодування імен, я пробував зараз, і виконував те саме ... просто я не помітив, що я їх писав по-іншому, додав примітку
Fabiano Tarlao

2

У мене виникла така ж проблема із рядком "Pastelerà Майорка", і я вирішив:

unicode("Pastelería Mallorca", 'latin-1')

1

У проекті Django (1.9.10) / Python 2.7.5 я часто буваю UnicodeDecodeError винятки; головним чином, коли я намагаюся подавати рядки Unicode в журнал. Я зробив функцію помічника для довільних об'єктів в основному форматування 8-бітних рядків ascii і замінивши будь-які символи, які не в таблиці, на "?". Я думаю, що це не найкраще рішення, але оскільки кодування за замовчуванням - це ascii (і я не хочу його змінювати), це зробить:

def encode_for_logging (c, encoding = 'ascii'):
    якщо є речовина (c, basestring):
        повернути c.encode (кодування, 'замінити')
    elif - речовина (c, ітерабельна):
        c_ = []
        для v в c:
            c_.append (encode_for_logging (v, кодування))
        повернути c_
    ще:
        повернути encode_for_logging (unicode (c))
`


1

Ця помилка виникає, коли в нашому рядку є деякі символи, що не належать ASCII, і ми виконуємо будь-які операції над цією рядком без належного декодування. Це допомогло мені вирішити свою проблему. Я читаю файл CSV із символами стовпців, тексту та символами декодування, як показано нижче:

train_df = pd.read_csv("Example.csv")
train_data = train_df.values
for i in train_data:
    print("ID :" + i[0])
    text = i[1].decode("utf-8",errors="ignore").strip().lower()
    print("Text: " + text)

0

Ось моє рішення, просто додайте кодування. with open(file, encoding='utf8') as f

А тому, що читання файлу рукавичок займе багато часу, я рекомендую файл рукавички до нумерованого файлу. Коли в netx час ви читаєте вбудовувані ваги, це заощадить ваш час.

import numpy as np
from tqdm import tqdm


def load_glove(file):
    """Loads GloVe vectors in numpy array.
    Args:
        file (str): a path to a glove file.
    Return:
        dict: a dict of numpy arrays.
    """
    embeddings_index = {}
    with open(file, encoding='utf8') as f:
        for i, line in tqdm(enumerate(f)):
            values = line.split()
            word = ''.join(values[:-300])
            coefs = np.asarray(values[-300:], dtype='float32')
            embeddings_index[word] = coefs

    return embeddings_index

# EMBEDDING_PATH = '../embedding_weights/glove.840B.300d.txt'
EMBEDDING_PATH = 'glove.840B.300d.txt'
embeddings = load_glove(EMBEDDING_PATH)

np.save('glove_embeddings.npy', embeddings) 

Посилання на історію: https://gist.github.com/BrambleXu/634a844cdd3cd04bb2e3ba3c83aef227


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.