修正方法:「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!

それを修正するには?

他の一部のpythonベースの静的ブログアプリでは、中国語の投稿を正常に公開できます。このアプリなど:http : //github.com/vrypan/bucket3。私のサイトhttp://bc3.brite.biz/では、中国語の投稿を正常に公開できます。


回答:


569

tl; dr /クイックフィックス

  • willy nillyをデコード/エンコードしない
  • 文字列がUTF-8でエンコードされていると想定しないでください
  • コード内でできるだけ早く文字列をUnicode文字列に変換してみてください
  • ロケールを修正してください:Python 3.6でUnicodeDecodeErrorを解決するには?
  • クイックreloadハックを使用したくありません。

Python 2.xのUnicode Zen-ロングバージョン

ソースを確認しないと、根本的な原因を知るのは難しいので、一般的に説明する必要があります。

UnicodeDecodeError: 'ascii' codec can't decode byte一般strに、元の文字列のエンコーディングを指定せずに、非ASCIIを含むPython 2.x をUnicode文字列に変換しようとすると発生します。

簡単に言うと、Unicode文字列はエンコーディングをまったく含まない完全に別のタイプのPython文字列です。それらはUnicode ポイントコードのみを保持するため、スペクトル全体のあらゆるUnicodeポイントを保持できます。文字列には、UTF-8、UTF-16、ISO-8895-1、GBK、Big5などのエンコードされたテキストが含まれます。文字列はUnicodeにデコードされUnicodeは文字列にエンコードされます。ファイルとテキストデータは常にエンコードされた文字列で転送されます。

Markdownモジュールの作成者はおそらく、unicode()(例外がスローされる場合)コードの残りの部分に対する品質ゲートとして使用します。ASCIIを変換するか、既存のUnicode文字列を新しいUnicode文字列に再ラップします。Markdownの作成者は受信文字列のエンコードを認識できないため、Markdownに渡す前に文字列をUnicode文字列にデコードする必要があります。

Unicode文字列はu、文字列の接頭辞を使用してコードで宣言できます。例えば

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

Unicode文字列は、ファイル、データベース、ネットワークモジュールから取得される場合もあります。これが発生した場合、エンコーディングについて心配する必要はありません。

ガチャ

から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は通常のASCIIです。UTF-8では、é2バイトを使用してエンコードされます。「Cp1252」では、éは0xE9です(これはたまたまUnicodeポイント値です(偶然ではありません))。正しいものdecode()が呼び出され、Python Unicodeへの変換が成功します。 Python Unicode文字列に変換される文字列の図

この図でdecode()は、はとともに呼び出されますascii(これはunicode()エンコードを指定せずに呼び出すのと同じです)。ASCIIにはより大きいバイトを含めることができないため0x7F、これはUnicodeDecodeError例外をスローします。

誤ったエンコーディングでPython Unicode文字列に変換される文字列の図

Unicodeサンドイッチ

コード内にUnicodeサンドイッチを形成することをお勧めします。この場合、すべての受信データをUnicode文字列にデコードし、Unicodeを処理してからstr、途中でsにエンコードします。これにより、コードの途中で文字列のエンコードを心配する必要がなくなります。

入力/デコード

ソースコード

非ASCIIをソースコードに焼き付ける必要がある場合は、文字列の前にを付けてUnicode文字列を作成します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その後、Markdownに渡すのに適しています。行UnicodeDecodeErrorからの場合は、read()おそらく間違ったエンコーディング値を使用しています。

CSVファイル

Python 2.7 CSVモジュールは非ASCII文字をサポートしていませんsupport。ただし、ヘルプは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でデータを返すことができますが、通常は少しの構成が必要です。SQLクエリには常にUnicode文字列を使用します。

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

Webページは、ほぼすべてのエンコーディングでエンコードできます。Content-typeヘッダが含まれている必要がありcharsetエンコーディングでヒントにフィールドを。次に、コンテンツをこの値に対して手動でデコードできます。または、Python-RequestsはでUnicodeを返しますresponse.text

手動で

文字列を手動でデコードする必要がある場合はmy_string.decode(encoding)、単にを実行できます。ここencodingで、は適切なエンコーディングです。Python 2.xでサポートされているコーデックは次のとおりです:標準エンコーディング。繰り返しにUnicodeDecodeErrorなりますが、取得すると、おそらく間違ったエンコーディングを取得しています。

サンドイッチのお肉

通常のstrsと同じようにUnicodeを操作します。

出力

stdout /印刷

printstdoutストリームを介して書き込みます。Pythonは、Unicodeがコンソールのエンコーディングにエンコードされるように、標準出力でエンコーダを構成しようとします。たとえば、Linuxシェルlocaleがのen_GB.UTF-8場合、出力はにエンコードされUTF-8ます。Windowsでは、8ビットのコードページに制限されます。

破損したロケールなど、コンソールの構成が正しくないと、予期しない印刷エラーが発生する可能性があります。PYTHONIOENCODING環境変数は、標準出力のエンコーディングを強制できます。

ファイル

入力と同じように、io.openUnicodeをエンコードされたバイト文字列に透過的に変換するために使用できます。

データベース

読み取りと同じ構成で、Unicodeを直接書き込むことができます。

Python 3

Python 3は、Python 2.xほどUnicodeに対応していませんが、このトピックの混乱はわずかです。たとえば、通常strはUnicode文字列になり、古いものstrは今bytesです。

デフォルトのエンコーディングはUTF-8であるため.decode()、エンコーディングを指定しないバイト文字列の場合、Python 3はUTF-8エンコーディングを使用します。これはおそらく人々のUnicode問題の50%を修正します。

さらに、open()デフォルトではテキストモードで動作するため、デコードされたstrもの(Unicodeのもの)を返します。エンコーディングはロケールから派生します。ロケールは、Un * xシステムではUTF-8、Windowsボックスでは8ビットコードページ(windows-1251など)になる傾向があります。

なぜ使用すべきではないのか sys.setdefaultencoding('utf8')

reload問題を隠すだけで、Python 3.xへの移行を妨げる厄介なハックです(使用する理由があります)。問題を理解し、根本的な原因を修正して、Unicode Zenを楽しんでください。pyスクリプトでsys.setdefaultencoding( "utf-8")を使用してはならない理由を参照してください詳細については


2
Python 2の回答を探している人にとって、より便利なTLDR:io.openファイルの読み取り/書き込みに使用しfrom __future__ import unicode_literals、を使用し、Unicodeを使用するように他のデータ入力/出力(データベースなど)を構成します。
idbrii

どうすれば修正できますか?笑これはスクリプトを書くことによる問題ではなく、スクリプトをインストールすることによるものです
Matthew

@マシューは設定を試してみてくださいPYTHONIOENCODING=utf-8。それでも解決しない場合は、スクリプトの作成者に連絡してコードを修正する必要があります。
Alastair McCormack

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コンソールを終了して再起動しても、エンコードは同じです
マセマー

37
ありがとう!しかし、なぜそれをインポートした後にsysをリロードする必要があるのですか?
ドミターズ2015年

6
@ DmitryNarkevich、Illusive setdefaultencoding関数のため。どうやらそもそも、適切なリリースの一部ではなかったはずなので、Pythonの起動時に削除されます。
predi

3
これは根本的な原因を修正していないことを意味します。暗黙の変換にパッチを適用しました
Alastair McCormack

5
@miraculixx Python 3のデフォルトのエンコーディングは、デフォルトとしてUnicode文字列を使用するUTF-8であるstrため、期限が過ぎていません。Python 2.xでは、Unicodeは移行の状態にあったため、バイトをUnicodeに変換するときにエンコードを想定するのは危険でした。したがって、Py2のデフォルトのASCIIエンコーディングは慎重に選択したものであり、デフォルトのエンコーディングを変更するには、リロードを慎重に行う必要があるのはなぜですかsys。Py2のエンコーディングエラーを排除する正しい方法は、変換が必要な場合(文字列がUTF-8でエンコードされていると仮定するだけでなく)、(バイト)文字列をUnicodeに明確にデコードおよびエンコードすることです。
Alastair McCormack

130

これは古典的な「Unicodeの問題」です。これを説明することは、何が起こっているのかを完全に説明するためのStackOverflowの回答の範囲を超えていると思います。

ここでよく説明されています

簡単にまとめると、バイト文字列として解釈されるものをUnicode文字にデコードする必要のあるものに渡しましたが、デフォルトのコーデック(ascii)が失敗しています。

私が指摘したプレゼンテーションでは、これを回避するためのアドバイスを提供しています。コードを「Unicodeサンドイッチ」にします。Python 2では、ヘルプの使用from __future__ import unicode_literals

更新:コードを修正する方法:

OK-変数「ソース」にいくつかのバイトがあります。彼らがどのようにしてそこに入ったのかはあなたの質問から明らかではありません-多分あなたはそれらをウェブフォームから読みましたか?いずれにせよ、それらはASCIIでエンコードされていませんが、PythonはそれらがUnicodeであると想定してUnicodeに変換しようとしています。エンコードとは何かを明示的に伝える必要があります。これは、エンコーディングが何であるかを知る必要があることを意味します!それは必ずしも容易ではなく、この文字列がどこから来たかに完全に依存します。たとえばUTF-8など、いくつかの一般的なエンコーディングを試すことができます。unicode()にエンコードを2番目のパラメーターとして指定します。

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

1
それはまだ頭痛の種です。mrGreenAsJade、私に具体的な解決策を与えることができますか?
漁師

1
「このブログのユーザーとして、どうすればこの問題を回避できるでしょうか?」または、「この問題が発生しないようにコードを修正するにはどうすればよいですか」という質問ですか?
GreenAsJade 2014年

2
mr greenasjade:「source = unicode(source、 'utf-8')」はどこに置くべきですか?
漁師

7
奇妙な... 1年以上ポジティブなフィードバックをした後、突然2つの反対票を投じた...えっ?
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')

ty、これはvar = u "" "vary large string" ""でUnicodeDecodeErrorをスローするpythonの問題で機能しました
user2426679

AttributeError:モジュール'SYS' 'はsetdefaultencoding'は属性がありません
CHAINE

そしてreload(sys)その特定の理由のために使用されています。
Marcin Orlowski、2018年

1
私のために働いた!ありがとう!
Maciej

22

次のエラーメッセージを解決するために検索していました。

unicodedecodeerror: 'ascii'コーデックは、位置5454のバイト0xe2をデコードできません:序数が範囲(128)にありません

「エンコーディング」を指定して最終的に修正しました:

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

それもあなたに役立つことを願っています。


これは、.csvファイルの読み取り/書き込み時のエラーを解決しました。他の回答にリストされている他のものは必要ありませんでした
user5359531

なぜ他の回答がそれほど多くの詳細を提供するのか理解できません...しかし、この単純な解決策を忘れてください。+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文字は削除しません。非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

私は常にユニコードに変換するのが最善だと思いますが、実際にはすべての引数をチェックして、何らかの形式の文字列処理を含むすべての関数とメソッドに変換する必要があるため、これを実現するのは困難です。

そこで、どちらの入力からでもユニコードまたはバイト文字列を保証するために、次のアプローチを考え出しました。つまり、次のラムダを含めて使用します。

# 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をデコードすることはできません-すでにデコードされています!
Alastair McCormack

@AlastairMcCormack投稿の改善を歓迎します。ただし、自分の意見や洞察を共有していない他のすべての人よりも、自分の卓越性を主張したい場合は、率直に言って興味はありません。ありがとうございました。
miraculixx 2016

3
@miraculixx申し訳ありませんが、急に出くわすつもりはありませんでした。コードで文字列を使用するたびにデコードとエンコードを心配する必要はありません。
Alastair McCormack

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

Encodeは、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は、ピクルされたファイルをロードするのにまったく互換性がありません。したがって、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:

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

4

これは私のために働きました:

    file = open('docs/my_messy_doc.pdf', 'rb')

3

手短に言えば、Python 2で適切なUnicode処理を保証するには、

  • 使用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

同じエラーが発生しましたが、非ASCII文字(値が128より大きいバイト)を含むURLで、私の解決策は次のとおりです。

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

注:utf-8、utf8は単なるエイリアスです。「utf8」または「utf-8」のみを使用しても同じように機能するはずです

私の場合は、Pythonの2.7で、私のために働いた、私はこの割り当ては、の「何か」に変更するとしstr内部表現-すなわち、それはで裏打ちされたバイト列の右のデコードを強制urlし、最終的に文字列を置くUTF-8 strですべての魔法を適切な場所に。PythonのUnicodeは私にとって黒魔術です。お役に立てば幸い


1
なぜ一方がダッシュなのか
IgorGanapolsky

1
Pythonは名前をエンコードするための別名を受け入れ、私は今試みたが、同じことを行ってきた...単に私が異なっそれらを書いたことに気づいていない、追加のノート
ファビアーノTarlao

2

文字列 "PastelerÃaMallorca"でも同じ問題が発生し、次のように解決しました。

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'):
    isinstance(c、basestring)の場合:
        c.encode(encoding、 'replace')を返す
    elif isinstance(c、Iterable):
        c_ = []
        cのvの場合:
            c_.append(encode_for_logging(v、encoding))
        c_を返す
    そうしないと:
        encode_for_logging(unicode(c))を返します
`


1

このエラーは、文字列にいくつかの非ASCII文字があり、適切にデコードせずにその文字列に対して操作を実行しているときに発生します。これは私の問題の解決に役立ちました。列ID、テキストを含む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

そして、グローブファイルの読み込みには時間がかかるので、グローブファイルをnumpyファイルにすることをお勧めします。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


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.