我正在将特征向量作为位图来实现文档中的文档。我已经拥有整个语料库(作为列表/集)的词汇表以及每个文档中的术语列表。Python:高效实现特征向量
例如,如果语料库词汇表为['a', 'b', 'c', 'd']
且文档d1中的词语为['a', 'b', 'd', 'd']
,则d1的特征向量应为[1, 1, 0, 2]
。
要生成特征向量,我需要遍历语料库词汇表并检查每个词是否在文档词条列表中,然后将该词位置于文档特征向量的正确位置。
什么是最有效的实现方式?这里有一些事情我已经考虑:
- 使用
set
将使检查翻译会员非常有效的,但set
■找没有顺序,和特征向量位需要在排序语料库词汇的顺序。 - 对语料库词汇使用
dict
(映射每个词汇项到任意值,如1
)将允许迭代sorted(dict.keys())
以便我可以跟踪索引。但是,我会有空间开销dict.values()
。 - 使用
sorted(list)
将无法检查成员资格。
StackOverflow会提示什么?
为什么排序列表查找效率低下?你需要比二进制搜索提供的O(log(n))更好吗? – Cameron 2011-04-12 23:36:29
数万个术语,数千个文档。我想尽量减少它,并且哈希允许近乎'O(1)'。 – yavoh 2011-04-12 23:37:37
@yavoh:好,公平点。你可以改变你的数据结构的初始文档条款是集而不是列表?你确定你确实需要这种特征向量吗?你能利用并行化吗? – Cameron 2011-04-12 23:40:47