我已经使用Python的Twitter API在UTF-8中下载了有关阿姆斯特丹的推文。 现在,我正在尝试使用此代码(仅是代码的一部分,但这是导致错误的部分)为LDA制作字典:

dictionary = corpora.Dictionary(line.lower().split() for line in open(input_file))

这总是会给我一个错误,具体取决于我选择输入哪个txt文件:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xf1 in position 2: invalid continuation byte

要么

 UnicodeDecodeError: 'utf8' codec can't decode byte xxxx in position 175-176: unexpected end of data

我希望它的原因是UTF-8中未知的字符(可能是Tweets中使用的某些表情符号),并且在Googling尝试通过以下方式替换代码后:

dictionary = corpora.Dictionary(line.lower().split() for line in open(input_file, errors='ignore'))

错误消息:

dictionary = corpora.Dictionary(line.lower().split() for line in open(input_file, errors='ignore'))
TypeError: 'errors' is an invalid keyword argument for this function

要么

dictionary = corpora.Dictionary(line.lower().split() for line in open(input_file, 'ignore'))

错误消息:

dictionary = corpora.Dictionary(line.lower().split() for line in open(input_file, 'ignore'))
ValueError: mode string must begin with one of 'r', 'w', 'a' or 'U', not 'ignore'

有没有人有办法解决吗? 谢谢

#1楼 票数:0

您的错误处理在错误的位置。 要求忽略解码错误时无法打开文件; 这发生在线下。

您应该做的是以二进制模式( rb修饰符)打开文件并读取行。 它们将成为bytes对象。 然后,您可以解码它们并忽略错误:

with open('/tmp/myfile', 'rb') as f:
    for linebytes in f.readlines():
        linestring = linebytes.decode(encoding='utf-8', errors='ignore')

#2楼 票数:0

您的输入文件显然不是UTF-8。 应该有文档说明这些Twitter文件的实际编码是什么; 打开文件时,相应地设置编码。

with open(input_file,encoding="whatever Twitter uses") as twitterfile:       
    dictionary = corpora.Dictionary(line.lower().split() for line in twitterfile)

这样,Python会将输入解码为没有错误的字符串,这明显优于忽略错误和破坏数据。

#3楼 票数:0 已采纳

如果您知道要读取的数据是utf-8,则可以导入编解码器模块并使用codecs.open()代替open()

读写Unicode数据

试试看:

import codecs
dictionary = corpora.Dictionary(line.lower().split() for line in codecs.open(input_file, mode='r', encoding='utf-8', errors='ignore'))

  ask by mvh translate from so

未解决问题?本站智能推荐:

1回复

我可以从dict类型的字典中形成LDA模型的主体文档吗?

形成Gensim LDA模型时,使用以下命令获取了数据字典 在这1000个最常用的标记中,我手动删除了500个标记,以便其余标记与我要生成的主题直接相关。 我如何才能从这个新的字典类型的字典中进一步形成语料库文档。 我应该使用哪种形式来训练我的LDA模型?
1回复

Python gensim 主题模型中的访问字典

我想看看如何从 gensim lda 主题模型访问字典。 这在您训练 lda 模型、稍后保存和加载时尤为重要。 换句话说,假设 lda_model 是在文档集合上训练的模型。 要获得文档主题矩阵,可以执行以下操作或类似于https://www.kdnuggets.com/2019/09/overvi
1回复

在Gensim中运行LDA时出现索引错误

我阅读了我拥有的文档 下一个, 然后我建立一个语料库: buildDictionary和buildCorpus的定义: 然后我停止单词的东西: 然后我打电话给: 这是错误: 下面的日志记录信息表明它已开始运行,但随后崩溃了。 然后我
1回复

在处理大量单词(> 1 亿)以进行 LDA 分析时处理内存错误

我有 50,000k 文件 - 总共有 1.62 亿字。 我想在这里使用类似于本教程的 Gensim 进行主题建模 因此,LDA 需要将文档标记为单词,然后创建一个词频词典。 因此,我将这些文件读入了 Pandas 数据框(“内容”列包含文本)并执行以下操作以创建文本列表。 附在此处的数据框图像
2回复

尝试使用 LDA 模型在 Gensim 中获取相似性时出现“太多值无法解包”错误

我基本上使用 anaconda 环境 python 3.7,gensim 3.8.0。 我有我的数据作为一个数据框,它在测试和训练集中分开,它们都有这样的结构: X_test 和 Xtrain 数据帧格式: 已经预处理。 这是我用于创建模型的代码 到这里为止,一切正常。 我可以有效地使
2回复

在Python中使用gensim在Tweets上运行LDA时出错

我有以下代码,可在Tweets上进行LDA分析: 当我尝试运行此脚本时,收到以下带有错误消息的日志: 有人对此有解决方案吗?
1回复

如何通过gensim在LDA分析中删除单词

我正在使用gensim进行LDA主题建模工作。 我的数据已被其他人预处理。 他给了我两件事。 ①mmcorpus文件(由gensim.corpora.MmCorpus函数导入)②字典文件(由gensim.corpora.Dictionary.load函数导入)我成功创建了LDA模型,并将超
1回复

使用Gensim软件包进行LDA主题建模时出现IndexError

我总共有54892个文档,其中包含360331个唯一标记。 字典的长度是88。 每当我运行此脚本时,都会出现此错误: 我在互联网上查看,有人提到我可能与计算机具有的RAM有关。 我正在使用具有4 GB RAM的Windows 7 32位。 我应该在脚本中进行哪些更改?