基于Python间隔的稀疏容器

时间:2012-09-19 19:04:02

标签: python data-structures numpy nlp nltk

我正在尝试在结构化数据和NLTK之间创建一个接口。 NLP图书馆通常使用词袋,因此我需要将结构化数据转换成文字袋。

我需要将一个单词的偏移量与它的元数据相关联。因此,我最好的办法是让某种容器将范围保存为键(允许嵌套范围),并且可以检索所有元数据(如果是单词offset是嵌套范围的一部分。)

我可以拾取哪些代码可以有效地执行此操作( - 即,数据的稀疏表示)?因为我的全局语料库至少有几百兆字节,所以效率很高。

注意:

  • 我正在序列化结构化论坛帖子。其中包括带有引号部分的帖子。我想知道一个词属于哪个主题,并且它是一个引用或用户文本。随着我的工作进展,可能会有其他元数据。请注意,属于引号的单词是嵌套元数据的含义,因此单词是引用的一部分,属于用户发布的帖子。

  • 我知道可以在NLTK中标记单词我没有调查过,如果可以按照我想要的方式进行评论,请发表评论。但我仍然在寻找最初的方法。

  • numpy中可能有一些东西可以解决我的问题,现在正在查看

修改

输入数据太复杂,无法删除和发布。我找到了我正在寻找的http://packages.python.org/PyICL/。我需要谈论间隔而不是范围:D我已经广泛使用了boost,但是使依赖使我有点不安(遗憾的是,我在PyICL中遇到编译器错误:()。

现在的问题是:任何人都知道间隔容器库或数据结构,可用于以稀疏方式索引嵌套间隔。或者以不同方式提供与boost.icl类似的语义

1 个答案:

答案 0 :(得分:0)

如果您不想使用PyICLboost.icl而不是依赖专门的库,您可以使用sqlite3来完成这项工作吗?如果你使用in0memory版本它仍然比boost.icl慢几个数量级(从编码其他数据结构与sqlite3的经验),但应该比在顶部使用c ++ std::vector样式方法更有效蟒蛇容器。

您可以在where子句中使用两个整数并使用date_type_low < offset < date_type_high谓词。根据您的表结构,这将返回嵌套/重叠范围。