我正在將特徵向量作爲位圖來實現文檔中的文檔。我已經擁有整個語料庫(作爲列表/集)的詞彙表以及每個文檔中的術語列表。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