加载 word2vec 时出现 UnicodeDecodeError 错误

2024-03-16

详细描述

我开始使用词嵌入,并发现了大量有关它的信息。到目前为止,我知道我可以训练自己的词向量或使用以前训练过的词向量,例如 Google 或 Wikipedia 的词向量,这些向量可用于英语,但对我来说没有用,因为我正在处理以下语言中的文本巴西葡萄牙语。因此,我继续寻找葡萄牙语中预先训练的词向量,最终发现Hirosan 的预训练词嵌入列表 http://ahogrammer.com/2017/01/20/the-list-of-pretrained-word-embeddings/这把我带到了Kyubyong的词向量 https://github.com/Kyubyong/wordvectors从中我了解到 Rami Al-Rfou 的Polyglot https://sites.google.com/site/rmyeid/projects/polyglot。下载完两者后,我一直试图简单地加载词向量,但没有成功。

简短的介绍

我无法加载预先训练的词向量;我在尝试词向量 https://github.com/Kyubyong/wordvectors and Polyglot https://sites.google.com/site/rmyeid/projects/polyglot.

下载

  • Kyubyong 的预训练 word2vector 格式葡萄牙语单词向量 https://drive.google.com/open?id=0B0ZXk88koS2KRDcwcV9IVWFTeUE;
  • Polyglot 的葡萄牙语预训练词向量 https://doc-0g-54-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/c1ch6rdnp89glqmi8g81ev2somslu7cs/1527537600000/10341224892851088318/*/0B5lWReQPSvmGNEh0VTdmSHlHZ1k?e=download;

加载尝试

奎平的词向量 https://github.com/Kyubyong/wordvectors第一次尝试:按照建议使用 GensimHirosan http://ahogrammer.com/2017/01/20/the-list-of-pretrained-word-embeddings/;

from gensim.models import KeyedVectors
kyu_path = '.../pre-trained_word_vectors/kyubyong_pt/pt.bin'
word_vectors = KeyedVectors.load_word2vec_format(kyu_path, binary=True)

并返回错误:

[...]
File "/Users/luisflavio/anaconda3/lib/python3.6/site-packages/gensim/utils.py", line 359, in any2unicode
return unicode(text, encoding, errors=errors)

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

下载的 zip 还包含其他文件,但它们都返回类似的错误。

Polyglot https://sites.google.com/site/rmyeid/projects/polyglot第一次尝试:以下艾尔福斯的指示 http://nbviewer.jupyter.org/gist/aboSamoor/6046170;

import pickle
import numpy
pol_path = '.../pre-trained_word_vectors/polyglot/polyglot-pt.pkl'
words, embeddings = pickle.load(open(pol_path, 'rb'))

并返回错误:

File "/Users/luisflavio/Desktop/Python/w2v_loading_tries.py", line 14, in <module>
    words, embeddings = pickle.load(open(polyglot_path, "rb"))

UnicodeDecodeError: 'ascii' codec can't decode byte 0xd4 in position 1: ordinal not in range(128)

第二次尝试:使用Polyglot 的词嵌入加载函数 https://polyglot.readthedocs.io/en/latest/Embeddings.html;

首先,我们必须通过 pip 安装多语言:

pip install polyglot

现在我们可以导入它:

from polyglot.mapping import Embedding
pol_path = '.../pre-trained_word_vectors/polyglot/polyglot-pt.pkl'
embeddings = Embedding.load(polyglot_path)

并返回错误:

File "/Users/luisflavio/anaconda3/lib/python3.6/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)

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

额外的信息

我在 MacOS High Sierra 上使用 python 3。

解决方案

奎平的词向量 https://github.com/Kyubyong/wordvectors正如所指出的阿尼什·乔希 https://stackoverflow.com/a/50579950?noredirect=1,加载Kyubyong模型的正确方法是调用Word2Vec的原生加载函数。

from gensim.models import Word2Vec
kyu_path = '.../pre-trained_word_vectors/kyubyong_pt/pt.bin'
model = Word2Vec.load(kyu_path)

尽管我非常感谢 Aneesh Joshi 的解决方案,但多语言似乎是使用葡萄牙语的更好模型。关于那个有什么想法吗?


对于 Kyu Yong 的预训练 word2vec .bin 文件: 它可能已使用 gensim 保存功能保存。

“加载模型load(). Not load_word2vec_format(这是为了 C 工具兼容性)。”

i.e., model = Word2Vec.load(fname)

让我知道这是否有效。

参考 :Gensim 邮件列表 https://groups.google.com/forum/#!msg/gensim/gZ0BRnETMnw/m4WnXSyZFdcJ

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

加载 word2vec 时出现 UnicodeDecodeError 错误 的相关文章

随机推荐

  • 如何设置自定义编辑文本中的最小文本大小?

    我正在使用这个自定义 EditText 它会自动调整 EditText 内的文本大小 它工作得很好 但是 文本在换行之前变得太小了 如何设置最小文本大小 这样只有当文本大小达到 12sp 时才换行 public class FontFitT
  • Guava CacheBuilder:暗示实体删除的附加条件

    I want 尝试使用静态类是外部条件 方法
  • 使用 gradle 构建 android 应用程序时 Lint 失败

    我用 android studio 创建了一个应用程序 但每次我尝试使用命令gradle build构建应用程序时 它显示 lint failed 当我检查 gradle build 的调试信息时 它说 21 10 26 215 DEBUG
  • Lua:字符串中的换行符

    我一直在开发一个格式化程序 它将接受一个长字符串并将其格式化为一系列在特定字符限制内的单词处断开的行 例如 他吃面包每 8 个字符断开一次 将返回类似以下内容的内容 He eats the bread 这是因为 He eats 包含 7 个
  • 如何使用 VBA 在众多文本 .log 文件之一中查找特定字符串?

    这是我迄今为止查找文件夹中所有日志文件的代码 但我需要能够在每个文件中找到特定的字符串 如果在一个文件中找到它 则停止查找并退出循环并报告它所在的文件名 打开文件和搜索文件的方法似乎有很多 我不知道哪种方法最好 而且我通常不使用 VBA 但
  • 正向lookbehind后跟逗号分隔列表

    我正在寻找是否有一种方法可以在积极的向后查找之后为每个逗号分隔的列表获取匹配组 例如 summertime swimming running tanning 正则表达式 到目前为止 lt summertime s Returns swimm
  • libVLCSharp 无法创建 MediaList

    我正在玩 libVLCSharp 发现了一个有线行为 实际上 我创建媒体并使用 MediaPlayer 播放它没有任何问题 但是 当我尝试从 MediaList 创建媒体时 它会中断并显示以下消息 无法在本机端执行实例化 确保你 在您的系统
  • WIF 中的主动和被动联合

    我试图了解 WIF 中主动联合和被动联合之间的区别 如果依赖方 RP 是 WCF 服务而不是 ASP NET 应用程序 则似乎可以使用主动联合 如果 RP 是 ASP NET 应用程序 则可以使用被动联合 这准确吗 因此 在 ASP NET
  • Django 中不同应用程序的不同数据库[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我的 Django 站点中有多个应用
  • 组织 Javascript 库和 CSS 文件夹结构的最佳实践[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 如何在 Web 应用程序中组织 js 和 css 文件夹 我当前的项目结构是这样的 root assets js lib css img ind
  • Apache Commons JCI 重新加载类加载器

    有人有使用 Apache Commons JCI API 的 ReloadingClassLoader 的经验吗 唯一的使用示例可以在以下页面中找到 http commons apache org jci usage html http c
  • 如何在 UIWebview 中保存本地加载的 HTML 文件

    我正在使用 UIWebView 编写一个富文本编辑器 为此 我使用了一个模板文件作为启动器 然后 当用户完成编辑但尚未发布时 我想将当前内容保存到备份 html 文件中 以防应用程序损坏 我怎么做 给你 伙计 NSFileHandle fi
  • 有没有办法阻止 HTML access key="" 被激活?

    I tried preventDefault 但我还没有成功 我缺少什么吗 如果可能的话 我会尝试全局禁用它 例如在window 似乎没有办法阻止事件触发 唯一的选择似乎是在您不希望它们工作时暂时删除 accesskey 属性 就是这样jQ
  • csproj 文件中 元素的用途是什么

    当我编辑 Web 应用程序项目时 Visual Studio 2017 15 3 1 添加
  • Angular 4 setTimeout() 具有可变延迟和等待

    我有一个事件列表timestamp 我想要的是根据timestamp 添加延迟 delay timestamp t 1 timstamp t 我知道这不太适合setTimeout 但是有一个解决方法 如果超时是恒定的 但在我的情况下不是 是
  • 创建 Openstreetmap 提取的 mbtiles 文件的最简单方法?

    我正在创建一个使用在线和离线地图的 iPhone 旅行应用程序 对于离线地图 我希望允许用户下载他们感兴趣的区域 例如伦敦 的 mbtiles 文件 该地图应包含已在 OpenStreetmap 中找到的道路等信息 我知道以下网站http
  • pandas groupby 根据条件替换

    我有一个数据集结构如下 index country city Data 0 AU Sydney 23 1 AU Sydney 45 2 AU Unknown 2 3 CA Toronto 56 4 CA Toronto 2 5 CA Ott
  • Flutter:升级Play商店版本号

    我已经使用 flutter 在 Play 商店上发布了一个应用程序 现在我想上传该应用程序的新版本 我正在尝试更改版本代码 flutter 构建 apk build name 1 0 2 build number 3 或像这样更改 loca
  • 如何在 Java 中检查文件权限(独立于操作系统)

    我有以下代码片段 public class ExampleClass public static void main String args throws FileNotFoundException String filePath args
  • 加载 word2vec 时出现 UnicodeDecodeError 错误

    详细描述 我开始使用词嵌入 并发现了大量有关它的信息 到目前为止 我知道我可以训练自己的词向量或使用以前训练过的词向量 例如 Google 或 Wikipedia 的词向量 这些向量可用于英语 但对我来说没有用 因为我正在处理以下语言中的文