我正在进行文本摘要并建立我的词汇表,我已经训练了一个数据集。现在我需要来自Google的Word2Vec的那些词汇单词的向量。 我编写了简单的代码,每个单词都会在包含大约300万字的google-vectors文件中搜索它。 但问题是,这种线性搜索实际上需要数周的时间来计算。我正在使用python这个东西。 如何以更有效的方式搜索这些单词?
found_counter = 0
file1 = open('vocab_training.txt', 'r').read()
for i, line in enumerate(file1):
if i >= 50:
break
file2 = open('google-vectors.txt', 'r' )
for j, line2 in enumerate(file2):
if line.lower() == line2.split():
found_counter += 1
file2.close()
print(found_counter)
答案 0 :(得分:0)
选项:在哈希表中将300万个单词加载到内存中并检查成员身份 - 在Python中,您将保留set
:
with open('google-vectors.txt', 'r') as f:
words = set(l.lower() for l in f)
...
if line.lower in words:
...
其他选择:
dbm
,shelve
和sqlite3
。如果使用例如sqlite3
,请确保索引数据。您甚至可以运行像Redis这样的本地网络键值存储,并且仍然可以获得比重新遍历列表更好的性能。