2009-04-28 15 views
10

की समानता के लिए स्ट्रिंग्स डीएनए को कैसे निर्धारित करें, मुझे उम्मीद है कि मैं जो कुछ भी ढूंढ रहा हूं उसे पाने के लिए मैं सही तरीके से यह कह रहा हूं।किसी अन्य

मुझे टेक्स्ट के दो टुकड़ों की तुलना करने की आवश्यकता है। यदि दो तार एक जैसे हैं तो मैं स्कोर प्राप्त करना चाहता हूं जो तारों के बहुत अलग हैं, तो मुझे बहुत अलग हैं जो मुझे बहुत अलग हैं।

यदि मैं एक ईमेल का एमडी 5 हैश लेता हूं और एक चरित्र बदलता हूं तो हैश नाटकीय रूप से बदलता है, मैं कुछ ज्यादा नहीं बदलना चाहता हूं। मुझे तुलना करने की आवश्यकता है कि स्ट्रिंग को संग्रहीत किए बिना सामग्री के दो टुकड़े समान रूप से कैसे हैं।

अद्यतन: अब मैं लोगों द्वारा प्रदान किए गए विभिन्न लिंक से कुछ विचारों को संयोजित करने के लिए देख रहा हूं। आदर्श रूप में मुझे अपना स्कोर बनाने के लिए एक इनपुट इनपुट पसंद आया है, इसलिए मैं हमेशा अपने इनपुट की तुलना करने के लिए एक संदर्भ स्ट्रिंग का उपयोग कर रहा हूं। मैं एसीआई पात्रों को लेने और इन्हें जोड़ना भी देख रहा हूं। अभी भी प्रदान किए गए सभी लिंक पढ़ रहे हैं।

+0

"स्कोर" से आपका क्या मतलब है? आप एक रैंकिंग का मतलब है कि तार एक-दूसरे के करीब कितने करीब हैं? लेकिन आपका तीसरा अनुच्छेद अधिक लगता है जैसे आप हैश-जैसे मान की तलाश में हैं जो छोटे बदलावों के लिए मजबूत है ("मजबूत हैश" ऐसे औजारों का शब्द है, जो अक्सर ऑडियो और छवियों के लिए तारों से अधिक उपयोग किए जाते हैं।) – SPWorley

उत्तर

1

मुझे टेक्स्ट के दो टुकड़ों की तुलना करने की आवश्यकता है। यदि दो तार एक जैसे हैं तो मैं स्कोर प्राप्त करना चाहता हूं जो तारों के बहुत अलग हैं, तो मुझे बहुत अलग हैं जो मुझे बहुत अलग हैं।

यह वास्तव में "समान" या "अलग" से आपका क्या मतलब है इस पर निर्भर करता है। उदाहरण के लिए, यदि कोई आपकी स्ट्रिंग में "यूएसए" के साथ "संयुक्त राज्य अमेरिका" को प्रतिस्थापित करता है, तो वह अधिकतर स्ट्रिंग है (क्योंकि संयुक्त राज्य अमेरिका केवल कुछ समय के लिए संक्षेप है), या यह बहुत अलग है (क्योंकि बहुत से वर्ण बदल गए हैं)?

आपको अनिवार्य रूप से एक ऐसा कार्य तैयार करने की आवश्यकता है जो "समानता" की गणना कैसे करें या इसकी पूर्व-मौजूदा परिभाषा का उपयोग कैसे करें। उदाहरण के लिए, उपरोक्त Levenshtein distance मूल स्ट्रिंग पर जाने के लिए किए गए परिवर्तनों की संख्या के आधार पर कुल अंतर को मापता है।

+0

धन्यवाद जॉन मेरे उद्देश्य संयुक्त राज्य अमेरिका और संयुक्त राज्य अमेरिका अलग-अलग होंगे। –

1

चूंकि लेवेनशेटिन दूरी को मूल्य बनाने के लिए इनपुट स्ट्रिंग दोनों की आवश्यकता होती है, तो आपको सभी तारों को स्टोर करना होगा।

हालांकि, आप मार्करों के रूप में स्ट्रिंग्स की एक छोटी संख्या का उपयोग कर सकते हैं और केवल इन्हें स्ट्रिंग के रूप में स्टोर कर सकते हैं।

फिर आप इन मार्कर स्ट्रिंग्स में से प्रत्येक को एक नई स्ट्रिंग से लेवेनशेटिन दूरी की गणना करेंगे और इन मानों को स्टोर करेंगे। फिर आप अनुमान लगा सकते हैं कि दो तार जो सभी मार्करों के लिए समान लेवेनशेटिन दूरी रखते हैं, वे एक-दूसरे के समान होते हैं। यह संभवतः इन मार्करों को "इंजीनियर" के लिए समझदार होगा कि उनके परस्पर लेवेनशेटिन दूरी जितनी संभव हो सके उतनी बड़ी है। मुझे नहीं पता कि इस दिशा में कुछ शोध हुआ है या नहीं।

1

कई लोगों ने दृष्टिकोण की तरह दूरी/मीट्रिक को देखने का सुझाव दिया है, और मुझे लगता है कि प्रश्न का शब्द इस तरह से आगे बढ़ता है। (वैसे, एमडी 5 की तरह हैश एक मेट्रिक की विपरीत चीज करने की कोशिश कर रहा है, इसलिए यह शायद ही आश्चर्य की बात है कि यह आपके लिए काम नहीं करेगा।ऐसे ही विचार हैं जो छोटे डेल्टा के तहत बहुत कुछ नहीं बदलते हैं, लेकिन मुझे संदेह है कि वे जो करना चाहते हैं उसके लिए पर्याप्त जानकारी एन्कोड नहीं करते हैं)

विशेष रूप से टिप्पणियों में आपका अपडेट दिया गया है, मुझे लगता है कि इस प्रकार का दृष्टिकोण बहुत उपयोगी नहीं है।

जो आप खोज रहे हैं वह क्लस्टरिंग समस्या का अधिक है, जहां आप प्रत्येक ईमेल से हस्ताक्षर (यानी फीचर वेक्टर) उत्पन्न करना चाहते हैं और बाद में इसे नए इनपुट में तुलना करें। तो अनिवार्य रूप से आपके पास मशीन सीखने की समस्या है। यह तय करना कि "करीबी" का अर्थ चुनौती का थोड़ा सा हो सकता है। शुरू करने के लिए, मान लीजिए कि वास्तव में वह ईमेल है जिसे आप देख रहे हैं, आप कई स्पैम-फ़िल्टर द्वारा किए गए फीचर पीढ़ी के प्रकार को देखने के लिए अच्छा कर सकते हैं, इससे आपको एक जगह (संभवतः कम से कम शुरू करने के लिए यूक्लिडियन) एक हस्ताक्षर (फीचर वेक्टर) के आधार पर दूरी मापें।

आपकी समस्या के बारे में और जानने के बिना और अधिक विशिष्ट होना मुश्किल है।

6

अपनी टिप्पणियां पढ़ना, ऐसा लगता है कि आप वास्तव में पूरे दस्तावेज़ों की तुलना करने की कोशिश कर रहे हैं, जिनमें से प्रत्येक में कई शब्द हैं।

यह treating documents as N-dimensional points in space द्वारा सूचना पुनर्प्राप्ति प्रणालियों में सफलतापूर्वक किया जाता है। भाषा में प्रत्येक शब्द एक धुरी है। धुरी के साथ दूरी दस्तावेज़ में शब्द प्रकट होने की संख्या से निर्धारित होती है। इसी प्रकार के दस्तावेज अंतरिक्ष में एक दूसरे के पास "निकट" होते हैं।

इस तरह, पूरे दस्तावेज़ को संग्रहीत करने की आवश्यकता नहीं है, केवल इसका शब्द मायने रखता है। और आमतौर पर भाषा में सबसे आम शब्दों की गणना नहीं की जाती है।

+0

धन्यवाद एरिक्सन बहुत रोचक पढ़ना –

संबंधित मुद्दे