2010-05-24 12 views
5

मेरे पास टेक्स्ट के दो टुकड़े हैं। मैं उनके बीच एक शब्द-आधारित अंतर बनाना चाहता हूं (जैसे whe unix उपयोगिता wdiff करता है) लेकिन आउटपुट में अधिक जानकारी के साथ (मेरा मतलब है, चरित्र का posizion जहां जोड़ा/delited शब्द शुरू होता है)।क्या जावा पुस्तकालय शब्द-आधारित diff करने के लिए हैं?

मुझे जावा में ऐसा करने की ज़रूरत है, इसलिए मतभेदों का एक साधारण आउटपुट (जैसे wdiff) मेरे लिए उपयुक्त नहीं है: मैं मतभेदों का प्रतिनिधित्व करने वाली वस्तुओं में हेरफेर करना चाहता हूं।

+0

देखें http://stackoverflow.com/questions/479654/java-library-for-free-text-diff – mdma

+0

धन्यवाद लेकिन यह नहीं है कि मैं क्या खोज रहा हूं: मैं एक शब्द आधारित diff करना चाहता हूं लेकिन बस नहीं आउटपुट है, लेकिन इन आंकड़ों में हेरफेर करने में सक्षम होना। जोड़ें/हटाएँ - - स्ट्रिंग (शब्द) जोड़ा (या हटाए गए) - (, दूसरे या Btw) जोड़ने की स्थिति/पहले में हटाना फ़ाइल : मेरे मन में इन क्षेत्रों के साथ एक जावा वस्तु है – Mycol

उत्तर

3

Diff,Match,Patch - जावा में उपलब्ध है, और एक डेमो उपलब्ध है - ऐसा लगता है कि यह शब्द अंतर है।

+1

मैंने बहुत कोशिश की और यह मूल रूप से चार-आधारित है। यदि आप एक मानव आउटपुट चाहते हैं तो आपको बहुत अधिक समय निर्धारित करना होगा, गणना वास्तव में धीमी है और हालांकि शब्द आधारित नहीं है (मेरा मतलब है "घर" और "पत्नी" केवल "घर" और "wif" में अलग-अलग हैं) – Mycol

+0

क्या आपने पोस्ट प्रोसेसिंग क्लीनअप पर सेक्शन देखा था? आप एक पोस्ट प्रोसेसर जोड़ सकते हैं जो शब्दों में अंतर को संरेखित करता है। क्या यह अंग्रेजी पाठ के लिए है? जब आप शब्दों के स्तर को बढ़ाते हैं, तो समस्या अधिक जटिल हो जाती है। यहां तक ​​कि शब्दों में सटीक रूप से पाठ को टोकन करना भी कुछ प्रयास है, और फिर आपको मतभेदों को असंबद्ध करने की समस्या है - परिवर्तनों को कई तरीकों से व्याख्या किया जा सकता है - जो कोई समझ में आता है वह आपके आवेदन पर निर्भर हो सकता है। पाठ कट के ब्लॉक से निपटना और एक अलग जगह पर चिपकाया सिद्धांत रूप में एक ऑपरेशन है, लेकिन इसका पता लगाना मुश्किल हो सकता है। – mdma

+0

यदि आप अक्षरों में शब्दों को मानचित्र बना सकते हैं (उदाहरण के लिए 64k अद्वितीय शब्दों से अधिक नहीं हैं।) फिर आप स्वयं टेक्स्ट को पार्स कर सकते हैं, प्रत्येक शब्द को एक वर्ण में मैप कर सकते हैं और उस पर वर्ण अलग-अलग चरित्र चला सकते हैं। बेशक, यदि डिफ एल्गोरिदम का कार्यान्वयन ऐसा होता है कि आप डेटा प्रकारों की तुलना आसानी से प्रतिस्थापित कर सकते हैं, तो आप शब्द ऑब्जेक्ट को अक्षर के बजाय इनपुट के रूप में पास करके शब्द भिन्नता को कार्यान्वित करने में सक्षम हो सकते हैं। मैंने डिफ एपीआई नहीं देखी है, इसलिए मैं निश्चित रूप से नहीं कह सकता। – mdma

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