python - 快速索引期间矢量化出现整数太大错误

标签 python nlp whoosh

我正在尝试使用 Whoosh 来索引一个大型语料库(大约 2500 万个学术摘要 + 标题)。我用 vector=True 标记了“摘要”字段,因为我需要能够根据相似性 IR 的摘要计算高分关键术语。

但是,在索引期间大约 400 万个条目后,它崩溃并出现以下错误:

Traceback (most recent call last):
  File "...", line 256, in <module>
    ...
  File "/home/nlp/*/anaconda3/envs/riken/lib/python3.6/site-packages/whoosh/writing.py", line 771, in add_document
    perdocwriter.add_vector_items(fieldname, field, vitems)
  File "/home/nlp/*/anaconda3/envs/riken/lib/python3.6/site-packages/whoosh/codec/whoosh3.py", line 244, in add_vector_items
    self.add_column_value(vecfield, VECTOR_COLUMN, offset)
  File "/home/nlp/*/anaconda3/envs/riken/lib/python3.6/site-packages/whoosh/codec/base.py", line 821, in add_column_value
    self._get_column(fieldname).add(self._docnum, value)
  File "/home/nlp/*/anaconda3/envs/riken/lib/python3.6/site-packages/whoosh/columns.py", line 678, in add
    self._dbfile.write(self._pack(v))
struct.error: 'I' format requires 0 <= number <= 4294967295

架构:

schema = Schema(title=TEXT(stored=False, phrase=False, field_boost=2.0, analyzer=my_analyzer, vector=True),
    abstract=TEXT(stored=False, phrase=False, analyzer=my_analyzer, vector=True),
    pmid=ID(stored=True),
    mesh_set=KEYWORD(stored=True, scorable=True),
    stored_title=STORED,
    stored_abstract=STORED)

索引文件夹当前大小约为 45GB。这里到底是什么问题? Whoosh 根本就不是为了承载如此大量的数据而设计的吗?

最佳答案

看起来用作文档索引的字段仅设计为 32 位无符号整数,这给了您大约 4M 文档的限制。

基于this issue在官方 Whoosh 存储库中,简单地更改该字段的大小会导致其他地方出现问题,因此无法轻松解决。

由于 Whoosh 没有得到积极维护,除非您想深入研究源代码,否则您应该探索替代方案。

关于python - 快速索引期间矢量化出现整数太大错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53937669/

相关文章:

python - 导入错误 : cannot import name 'CONTRACTION_MAP' from 'contractions'

python - 解析 penn 语法树以提取其语法规则

python - 如何通过文档编号(doc id)获取索引文档或文档字段值

python - 嗖不要搜索带口音的单词

python - 查找 pandas 中两个数据帧的差异和串联

python - 这个列表理解有什么问题(SyntaxError : invalid syntax)?

python - 如何为新笔记本在 Jupyter 笔记本上切换环境?

python - 使用 if 语句过滤数据?

python - 计算 Pandas 数据框列组合之间距离的有效方法

models - Haystack whoosh models() 不缩小模型