2015-09-25 63 views
3

我有一個uniqueWordList有很多單詞(100.000+)。 這些詞的每一個的卦都在集合allTriGrams中。加速n-gram處理

我想要建立一個字典,其中包含所有獨特的卦作爲鍵 以及這些卦可以作爲值匹配的所有單詞。

實施例:

epicDict = {‘ban’:[‘banana’,’banned’],’nan’:[‘banana’]} 

到目前爲止我的代碼:

for value in allTriGrams: 
    for word in uniqueWordList: 
     if value in word: 
      epicDict.setdefault(value,[]).append(word) 

我的問題: 此方法採用大量的時間。有什麼辦法可以加快這個過程嗎?

回答

2

如果uniqueWordList是一套,而不是,那麼你就可以做到這一點,而不是:

if value in uniqueWordList: 
    epicDict.setdefault(value,[]).append(word) 

檢查了這一點: Python Sets vs Lists

+1

謝謝,相當快! – klabanus

0

簡單的解決方案,我希望這是更快:

epicDict = collections.defaultdict(set) 
for word in uniqueWordList: 
    for trigram in [word[x:x+3] for x in range(len(word)-2)]: 
    epicDict[trigram].add(word)