2011-04-03 14 views
6

मुझे प्रतिबंधित शब्दों में मौजूद टेक्स्ट का विश्लेषण करने की आवश्यकता है। मान लीजिए कि काला सूची शब्द है: "फोर्बिड"। शब्द में कई रूप हैं। पाठ में शब्द हो सकता है, उदाहरण के लिए: "मना कर रहा है", "वर्जित", "forbad"। शब्द को प्रारंभिक रूप में लाने के लिए, मैं एक प्रक्रिया लेमैमैटेशन का उपयोग करता हूं। आपके सुझाव?टेक्स्ट का विश्लेषण करें (लेमैमैटिज़ेशन, दूरी संपादित करें)

टाइपो के बारे में क्या?
उदाहरण के लिए: "F0rb1d"। मुझे लगता है कि डैमरौ-लेवेनशेटिन या किसी अन्य का उपयोग करें। आप सुझाव?

और क्या रूप इस प्रकार पाठ लिखा है यदि: "। ForbiddenInformation.Privatecorrespondenceofthecompany"
या "F0rb1dden1nformation.Privatecorresp0ndenceofthec0mpany।" (हाँ, व्हाइटस्पेस के बिना)

इस समस्या को हल करने के लिए कैसे करें?
पसंदीदा रूप से तेज़ एल्गोरिदम, क्योंकि पाठ वास्तविक समय में संसाधित होते हैं।
और शायद प्रदर्शन में सुधार करने के लिए कुछ सुझाव क्या हैं (स्टोर कैसे करें, आदि)?

मेरी अंग्रेजी के लिए खेद है। धन्यवाद।

+0

डुप्लिकेट सटीक नहीं है, लेकिन समान [प्रश्न] (http://stackoverflow.com/questions/246961/algorithm-to-find-similar-text) [माहौल] (http://stackoverflow.com/questions/4067105/पता लगाने-डुप्लीकेट-समान-पाठ के बीच-बड़े डेटासेट)। – khachik

उत्तर

2

जहां तक ​​मुझे एल्गोरिदम पता है, वहां दो संभावित समाधान हैं।

आप गतिशील प्रोग्रामिंग, एलसीएस (सबसे लंबा आम अनुवर्ती) का उपयोग करने का प्रयास कर सकते हैं। यह पैटर्न के रूप में वांछित शब्द के लिए मूल पाठ को खोजेगा, मेरा मानना ​​है कि यह ओ (MN) है:

http://en.wikipedia.org/wiki/Longest_common_subsequence_problem http://www.ics.uci.edu/~eppstein/161/960229.html

हालांकि आसान उपयोग करने के लिए किया जाएगा पाठ खोज एल्गोरिथ्म। सबसे अच्छा मुझे पता है केएमपी और यह ओ (एन) है। चरित्र तुलना के लिए आप उन्हें {i I l (एल) 1}, {ओ ओ 0} जैसे सेट में समूहित कर सकते हैं। फिर भी आप इसे सभी अक्षरों से मेल नहीं खा सकते (forbid -> forbad)।

http://en.wikipedia.org/wiki/Knuth-Morris-Pratt_algorithm

तो अब आप इन दो और तुम्हारा सुझाव के लाभों की तुलना कर सकते हैं।