這出現在另一個問題,但我認爲最好問這是一個單獨的問題。給句子(100個幾千順序)的大名單:索引文檔中單詞的最有效方法?
[
"This is sentence 1 as an example",
"This is sentence 1 as another example",
"This is sentence 2",
"This is sentence 3 as another example ",
"This is sentence 4"
]
什麼是編寫以下功能的最佳方式?
def GetSentences(word1, word2, position):
return ""
,其中給出了兩個詞,word1
,word2
和位置position
,函數應該返回滿足該限制所有語句列表。例如:
GetSentences("sentence", "another", 3)
應該返回句子1
和3
作爲句子的指數。我目前的做法是使用字典是這樣的:
Index = defaultdict(lambda: defaultdict(lambda: defaultdict(lambda: [])))
for sentenceIndex, sentence in enumerate(sentences):
words = sentence.split()
for index, word in enumerate(words):
for i, word2 in enumerate(words[index:):
Index[word][word2][i+1].append(sentenceIndex)
但這種快速打擊一切不成比例的對數據集大小爲130 MB作爲我的48GB的RAM在不到5分鐘耗盡。我以某種方式感覺這是一個常見問題,但無法找到任何有關如何有效解決此問題的參考。有關如何解決這個問題的任何建議?
只是爲了澄清:'position'是句子中兩個單詞之間的距離嗎? – misha
@misha:是的。這是正確的。 – Legend
有兩個「句子1」令人困惑。它是否匹配第二個「1」而不是第一個? – shookster