यह एक और सवाल में आया लेकिन मुझे लगा कि यह एक अलग सवाल के रूप में पूछना सर्वोत्तम है। वाक्यों की एक बड़ी सूची दें (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 एमबी के रूप में मेरे 48GB रैम कम से कम 5 मिनट में समाप्त हो रहा है पर अनुपात से बाहर सब कुछ चल रही है। मुझे किसी भी तरह यह महसूस हो रहा है कि यह एक आम समस्या है लेकिन इसे कुशलतापूर्वक हल करने के तरीके पर कोई संदर्भ नहीं मिल रहा है। इस दृष्टिकोण के बारे में कोई सुझाव?
बस स्पष्ट करने के लिए: वाक्य में दो शब्दों के बीच की दूरी 'स्थिति' है? – misha
@ मिशा: हां। यह सही है। – Legend
दो "वाक्य 1" होने के कारण भ्रमित है। क्या यह दूसरे "1" से मेल खाता था और पहले नहीं? – shookster