मैंने काम पर दस्तावेज़ संशोधन की तुलना करने के लिए एक डीआईएफएफ कार्यान्वयन बनाया है। यह An O (ND) डिफरेंशियल अल्गोरिद्म और इसके वेरिएशन पर आधारित है ।
एक चीज जो महत्वपूर्ण हो गई है वह है परिवर्तनों की सूची लेना और उन्हें मानव पठनीय पाठ में व्याख्या करना। जबकि वर्तमान एल्गोरिथ्म बहुत कुशल है, यह इतना अधिक है कि इस पर विस्तार करना मुश्किल है।
लघु प्रश्न
मैं ए * और एक हेयुरिस्टिक का उपयोग करने की कोशिश के बारे में सोच रहा था जो "मुड़ता" के लिए दंड जोड़ता है। विचार करने के लिए किया जा रहा है बाहर चिकनी अनावश्यक "ऐड,, जोड़ें, हटाएं जोड़ने, हटाने, हटाने" यह पार्स करना अधिक आसान कुछ एक मानव पढ़ सकते में है ताकि। मूल रूप से, मेरी सबसे छोटी पथ समस्या को सरल पथ समस्या में बदल दें।
और निश्चित रूप से आउटपुट न बनाएं जो हमेशा " सब कुछ हटाएं , सब कुछ जोड़ें "
क्या यह आवाज़ उचित है?
क्या डीआईएफएफ कार्यान्वयन में हेयुरिस्टिक का उपयोग करने के लिए कोई पूर्वता है? हेयुरिस्टिक क्या है?
समस्या:
यदि एक लंबा वाक्य हटा दिया जाता है और दूसरा लंबा वाक्य हटा दिया जाता है, लेकिन वे कम से कम एक शब्द साझा करते हैं, तो "साथ" कहें। अकेले सामान्य शब्द को छोड़कर (इसे जोड़ना और हटाना दोनों नहीं) सबसे छोटा रास्ता बनाएगा। हालाँकि, यह वास्तव में परिवर्तन के प्रिंट को पढ़ने की कोशिश करने वाले मानव के परिवर्तन के संदर्भ को बाधित करता है।
वर्तमान DIFF के साथ उदाहरण:
- पुराना पाठ: स्वच्छ: पॉवरवॉश और दुकान की हवा के साथ सूखी हवा।
- नया पाठ: स्वच्छ: एसीटोन और एक लिंट मुक्त कपड़े से पोंछें।
- नोट सूची बदलें:
- "पावरवॉश और ब्लो ड्राई" को "एसीटोन से पोंछ" में बदलें
- "दुकान हवा" को "एसीटोन और एक लिंट फ्री कपड़े" में बदलें
नोट: "बदलें" का उपयोग "डिलीट 'शॉप एयर' के बजाय 'एसीटोन' जोड़ें"
जैसा कि आप देख सकते हैं, दूसरा नोट सभी संदर्भ खो देता है और पाठ के पूर्ण पुराने और नए पाठ सेटों को देखने के बिना आप यह नहीं समझ सकते कि इसका क्या मतलब है।
विराम चिह्न के बारे में ध्यान दें:
मैंने अलग-अलग "शब्दों" के रूप में विराम चिह्न को हटा दिया है ताकि मुझे मिल जाए
- जोड़ें "("
के बजाय
- "रिपेयर" को "रिपेयर" में बदलें
क्योंकि यह अप्रिय था। हालांकि, इसका मतलब है कि अगर दोनों ग्रंथों में एक अल्पविराम भी है (जैसा कि पिछले उदाहरण में "के साथ" शब्द के विपरीत) एक ही बात होती है।
संभावित समाधान:
मुझे लगता है कि मैं एल्गोरिथ्म खोजने के बजाय एक अलग पथ का उपयोग कर सकता हूं जो मुझे अलग-अलग बदलाव "पथों" में वजन जोड़ने के लिए लचीलापन दे सकता है जो किसी व्यक्ति को अधिक समझ में आ सकता है। हो सकता है, मैं भी विराम चिह्न की यात्रा कर सकता था जिसमें विराम चिह्न का वजन बहुत कम हो (यकीन नहीं कि यह अन्य चीजों को कैसे प्रभावित करेगा)।
फिर मुझे निम्न सूची के लिए पिछला उदाहरण मिल सकता है:
- नोट सूची बदलें:
- "पावरवॉश और ब्लो ड्राई विद शॉप एयर" को "वेट विथ एसीटोन एंड लिंट फ्री क्लॉथ" में बदलें
देख! बहुत साफ!
मुझे पता है कि मैं एक प्रदर्शन हिट ले जाऊंगा, और मुझे अपने कार्यक्रम का एक बड़ा ओवरहाल करना पड़ सकता है, लेकिन मुझे जो अंतिम परिणाम चाहिए वह होना अधिक महत्वपूर्ण है।
जमीनी स्तर:
फिर, एक डीआईएफएफ कार्यान्वयन में हेयुरिस्टिक का उपयोग करने के लिए कोई पूर्वता है, और यह क्या है?
अन्य विचार? एक उचित समय निवेश? अन्य विचार? अन्य एल्गोरिदम?
अग्रिम में धन्यवाद!
संपादित करें:
मैंने अपने प्रश्न को स्पष्ट करने / ठोस करने की कोशिश की और अपने प्रश्न को सामान्य करने के लिए अपने एल्गोरिथ्म में एक हेयूरिस्टिक जोड़ने के बजाय सामान्य रूप से ए * का उपयोग करने की कोशिश की। मूल रूप से इस उदाहरण में एक ही बात है, लेकिन मुझे अभी भी अधिक सटीक लगता है। यह पोस्ट आनंदमय था।