2010-02-24 15 views
13

मेरे पास दो उपशीर्षक फ़ाइलें हैं। मैं एक समारोह के बताता है कि क्या वे एक ही पाठ प्रतिनिधित्व करते हैं, या समान पाठटेक्स्ट समानता एल्गोरिदम

कभी-कभी की तरह "हवा बह रही है ... संगीत खेल रहा है" केवल एक फ़ाइल में टिप्पणी कर रहे हैं की जरूरत है। लेकिन सामग्री का 80% प्रतिशत वही होगा। फ़ंक्शन को सत्य लौटा देना चाहिए (फ़ाइलें एक ही पाठ का प्रतिनिधित्व करती हैं)। और कभी-कभी यहां l (एक - एल) की बजाय गलत वर्तनी होती है जैसे: वह 1eft सामान है। बेशक, इसका मतलब है कि फ़ंक्शन को सत्य वापस करना होगा।

मेरे टिप्पणियाँ:
समारोह लौटना चाहिए ग्रंथों की समानता का प्रतिशत - सहमत हैं

"सभी लोग खुश थे" और "सभी लोगों को खुश नहीं थे" - यहाँ है कि एक के रूप में विचार किया जाना था गलत वर्तनी, ताकि एक ही पाठ माना जाएगा। सटीक होने के लिए, फ़ंक्शन रिटर्न का प्रतिशत कम होगा, लेकिन यह कहने के लिए पर्याप्त है कि वाक्यांश समान हैं

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

+2

समारोह लौटना चाहिए ग्रंथों की समानता का प्रतिशत और आप सत्य या गलत के लिए दहलीज तय करते हैं। – YOU

+0

आपको अपने समानता मानदंडों के बारे में बहुत विचारशील होने की आवश्यकता होगी और मुझे लगता है कि यह आप जो करने का प्रयास कर रहे हैं उसका सबसे कठिन हिस्सा हो सकता है।उदाहरण के लिए "सभी लोग खुश थे" और "सभी लोग खुश नहीं थे" समान रूप से समान हैं लेकिन अर्थ के संदर्भ में पूरी तरह विपरीत हैं। समान और असमान पाठ के कुछ उदाहरण सहायक हो सकते हैं। – glenatron

+1

साउंडएक्स (http://en.wikipedia.org/wiki/Soundex) देखें और देखें कि यह वह चीज़ है जिसे आप ढूंढ रहे हैं। –

उत्तर

11

Levenshtein एल्गोरिथ्म: http://en.wikipedia.org/wiki/Levenshtein_distance

कुछ भी शून्य का एक परिणाम के अलावा अन्य मतलब पाठ "समान" नहीं हैं। "इसी तरह" एक उपाय है कि वे कितने दूर/करीब हैं। परिणाम एक पूर्णांक है।

+2

+1: संपूर्ण फ़ाइल की समानता निर्धारित करने के लिए पूर्णांक परिणाम को सामान्यीकृत करने की आवश्यकता होगी। जैसे समानता = लेवेनशेटिन दूरी/संख्या। वर्ण। मैं इस एल्गोरिदम को लागू करने से पहले वर्तनी की गलतियों को सही करने के लिए फ़ाइल को प्रीप्रोसेसिंग करने का भी सुझाव दूंगा। – Adamski

+0

Apache Commons 'StringUtils' में लेवेनशेटिन दूरी का कार्यान्वयन है: http://commons.apache.org/lang/api-2.4/org/apache/commons/lang/StringUtils.html#getLevenshteinDistance(java.lang। स्ट्रिंग, java.lang.String) –

+2

@ फ़ैबियन: यह PHP में एक अंतर्निहित फ़ंक्शन है: http://php.net/manual/en/function.levenshtein.php – soulmerge

2

approximate grep पर एक नज़र डालें। यह आपको पॉइंटर्स दे सकता है, हालांकि आप टेक्स्ट के बड़े हिस्सों पर अबाध रूप से प्रदर्शन करने के लिए लगभग निश्चित हैं जैसे आप बात कर रहे हैं।

संपादित करें: agrep के मूल संस्करण खुला स्रोत नहीं है, तो आप http://en.wikipedia.org/wiki/Agrep

2

से ओएसएस संस्करण के लिए लिंक मिल सकता है आप बहुत अधिक यहाँ उम्मीद कर रहे हैं, ऐसा लगता है आप के लिए एक समारोह लिखने के लिए होता है की तरह आपकी विशिष्ट जरूरतें मैं एक मौजूदा फ़ाइल तुलना एप्लिकेशन (शायद diff में पहले से ही आपकी जरूरत है) के साथ शुरू करने की अनुशंसा करता हूं और आपके इनपुट के लिए अच्छे परिणाम प्रदान करने के लिए इसे बेहतर बनाता है।

+0

लागू करना चाहते हैं या टेक्स्ट को ज्ञात फ़ॉन्ट आकार (और चेहरे) के साथ प्रस्तुत करना चाहते हैं, और फिर पिक्सेल की तुलना करें। इस तरह, समान दिखने वाले आकार वाले प्रतीकों को समान दिखने के लिए बनाया जा सकता है, और इसका पता लगाना आसान है। – Chii

+0

@Chii लेकिन शेष पृष्ठ को स्थानांतरित करने के बड़े प्रतीक पर सबकुछ फेंक देगा। –

+0

मुझे नहीं लगता कि प्रश्न ओसीआर के साथ कुछ भी करने के लिए है, लेकिन केवल सादा पाठ – stillstanding

5

आपके द्वारा वर्णित समस्या के लिए (यानी बड़े तारों को संकलित करना), आप Cosine Similarity का उपयोग कर सकते हैं, जो 0 (303 पूरी तरह से अलग) 1 (समान), term frequency वैक्टर पर आधार के बीच एक संख्या लौटाता है।

आप कई कार्यान्वयन कि यहां बताई गई हैं को देखने के लिए चाहते हो सकता है: Cosine Similarity

1

Levenshtein दूरी के कई विकल्प हैं। उदाहरण के लिए Jaro-Winkler distance

इस तरह के एल्गोरिथ्म के लिए विकल्प, भाषा, शब्द के प्रकार पर निर्भर है मानव द्वारा दर्ज किए गए शब्दों और कर रहे हैं कई और अधिक ...

Here you find a helpful implementation of several algorithms within one library

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