Je suis actuellement un débutant en apprentissage automatique. En copiant le code de l'ancêtre avec kaggle, je vais résumer l'erreur survenue lors de l'apprentissage de la méthode et de la solution en guise de rappel.
En résumé, Windows essaiera de convertir en CP932 par défaut. Cependant, s'il ne peut pas être converti en CP932, une exception UnicodeEncodeError se produira, nous avons donc résumé les contre-mesures.
URL de référence https://qiita.com/Yuu94/items/9ffdfcb2c26d6b33792e
https://qiita.com/butada/items/33db39ced989c2ebf644
Windows 10 Home Python 3.7.4.
embedding_dict={}
with open('xxxxx.txt','r') as f:
for line in f:
values=line.split()
word = values[0]
vectors=np.asarray(values[1:],'float32')
embedding_dict[word]=vectors
f.close()
UnicodeDecodeError: 'cp932' codec can't decode byte 0x93 in position 5456: illegal multibyte sequence
Sortit de. Cela signifie que si vous utilisez un environnement Windows, la valeur par défaut est codée avec cp932. Dans ce cas, vous obtiendrez une erreur s'il contient du code qui ne peut pas être converti. Le code spécifique est inconnu cette fois, mais il semble que ce soit parce que le code de la personne étrangère est copié par kaggle.
Par conséquent, ajoutez une description au programme afin qu'il soit codé en UTF-8.
embedding_dict={}
with open('xxxxx.txt','r',encoding="utf-8") as f:
for line in f:
values=line.split()
word = values[0]
vectors=np.asarray(values[1:],'float32')
embedding_dict[word]=vectors
f.close()
Ajoutez simplement encoding = "utf-8", mais c'est la solution.
J'ai appris que l'erreur elle-même est un problème spécifique à Windows et comment elle a été codée.
Recommended Posts