मैं इस समस्या को हल करने के लिए सबसे अच्छा एल्गोरिदम खोज रहा हूं: छोटे वाक्यों की एक सूची (या एक निर्देश, एक सेट) रखने के बाद, इस वाक्य की सभी घटनाओं को एक बड़े पाठ में ढूंढें । सूची में वाक्य (या dict, या set) लगभग 600k हैं, लेकिन औसतन, 3 शब्दों द्वारा गठित किया गया है। टेक्स्ट औसतन 25 शब्द लंबा है। मैंने अभी टेक्स्ट को स्वरूपित किया है (विराम चिह्न को हटा रहा है, सभी लोअरकेस और इस तरह से आगे बढ़ें)।टेक्स्ट में बहुत सारी स्ट्रिंग पाएं - पायथन
to_find_sentences = [
'bla bla',
'have a tea',
'hy i m luca',
'i love android',
'i love ios',
.....
]
text = 'i love android and i think i will have a tea with john'
def find_sentence(to_find_sentences, text):
text = text.split()
res = []
w = len(text)
for i in range(w):
for j in range(i+1,w+1):
tmp = ' '.join(descr[i:j])
if tmp in to_find_sentences:
res.add(tmp)
return res
print find_sentence(to_find_sentence, text)
आउट:
यहाँ (अजगर) क्या मैं बाहर की कोशिश की है है
['i love android', 'have a tea']
मेरे मामले में मैं एक सेट का उपयोग किया है in
आपरेशन तेजी लाने के लिए
यह बहुत व्यापक प्रश्न है लेकिन आप कई छोटे क्वेरी स्ट्रिंग को उपसर्ग पेड़ (या कुछ और, क्वेरी स्ट्रिंग की विशेषताओं के आधार पर) में व्यवस्थित करने का प्रयास कर सकते हैं। इस तरह से कोड असंभव प्रश्नों को छिपाने और आंशिक मिलानों को परीक्षण/परिष्कृत करने में सक्षम हो सकता है। –