2008-09-17 9 views
57

इसी तरह के प्रश्न हैं, लेकिन सी # पुस्तकालयों के बारे में नहीं जो मैं अपने स्रोत कोड में उपयोग कर सकता हूं।क्या सी # के लिए लिखी कोई फजी खोज या स्ट्रिंग समानता कार्य पुस्तकालय हैं?

आपकी मदद के लिए सभी को धन्यवाद।

मैंने पहले से ही ल्यूसीन देखा है, लेकिन मुझे समान तारों की खोज करने और अनुक्रमण भाग के ऊपरी हिस्से के बिना कुछ और आसान चाहिए।

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

+3

क्यों इस विषय से हटकर है मुझे निकल जाता है। ओपी पूछ रहा है कि पुस्तकालय में कोई फ़ंक्शन है कि SO गहराई से समर्थन करता है। – 010110110101

उत्तर

30

Levenshtein दूरी कार्यान्वयन:

  • Using LINQ (वास्तव में नहीं, टिप्पणियों को देखने के)
  • Not using LINQ

मेरे पास एक .NET 1.1 प्रोजेक्ट है जिसमें मैं बाद वाले का उपयोग करता हूं। यह सरल है, लेकिन मुझे जो चाहिए वह पूरी तरह से काम करता है। जो मुझे याद है उससे थोड़ा सा ट्विकिंग की आवश्यकता होती है, लेकिन कुछ भी नहीं जो स्पष्ट नहीं था।

+0

आप "LINQ का उपयोग" क्यों कहते हैं? इनमें से कोई भी कार्यान्वयन लिंक का उपयोग नहीं करता है ... –

+1

असल में ये कार्यान्वयन समान हैं, सिवाय इसके कि बाद वाले सबस्टिंग का उपयोग करते हैं, जो इंडेक्सर का उपयोग करने से बहुत धीमी है क्योंकि यह हर बार नए स्ट्रिंग इंस्टेंस बनाता है ... –

+0

वास्तव में आप सही हैं। मैं शपथ ले सकता था कि इसमें कुछ LINQ-love था, या कम से कम शीर्षक ने दावा किया कि यह LINQy या कुछ था। –

0

लिनक्स के लिए Beagle Project सी # (मोनो) में लिखा गया है और खोज उपकरण जैसे Google डेस्कटॉप है। इस तरह के स्ट्रिंग मिलान के लिए इसमें कुछ कोड हो सकता है।

यदि मुझे सही याद है, तो यह डेटा खोजने और पुनर्प्राप्त करने के लिए Lucene लाइब्रेरी का उपयोग करता है। शायद यह आपके प्रोजेक्ट के लिए भी उपयोगी हो सकता है।

2

क्या आपने Lucene.net पर एक नज़र डाली है? यह जावा ल्यूसीन सर्च इंजन एपीआई का नेट पोर्ट है। वह पुस्तकालय बहुत सारी खोज कार्यक्षमता प्रदान करता है। मैंने एक वर्ष या उससे पहले इस के साथ खेला, तो मेरे सुझाव को कई अनुभवों के आधार पर न लें। मैंने इसे पुस्तक में विंडोज डेवलपर पावर टूल्स में देखा और इसे एक टेस्ट ड्राइव के लिए लिया। आप यह देखने के लिए अपने API documentation देख सकते हैं कि यह फ़ज़ी खोज जैसे कुछ प्रदान करता है जिसके लिए आप देख रहे हैं।

+0

क्या आप कृपया बता सकते हैं कि ल्यूसीन का उपयोग करके समानता की डिग्री कैसे प्राप्त करें? –

+0

क्षमा करें, मैंने इसे पेशेवर रूप से उपयोग नहीं किया है। जैसा कि मैंने अपनी पोस्ट में उल्लेख किया है, मैंने शायद 2007/2008 के आसपास शायद इसके साथ खेला था। –

+0

शायद पुस्तक [ल्यूसीन इन एक्शन, 2 एडी] (http://goo.gl/0sKkw7) बता सकती है कि समानता की डिग्री कैसे प्राप्त करें। – AechoLiu

1

निम्नलिखित Levenshtein दूरी एल्गोरिथ्म जो दो तार की समानता के लिए एक मूल्य प्रदान करती है (अच्छी तरह से, अंतर वास्तव में), कि पर निर्माण करने के लिए इस्तेमाल किया जा सकता: http://www.merriampark.com/ldcsharp.htm

0

मैंने समान तारों की खोज के लिए "सी # में टर्नरी सर्च ट्री डिक्शनरी" (http://www.codeproject.com/KB/recipes/tst.aspx) का उपयोग किया है।

सादर, पैट्रिसियो

27

आप भी सैम स्ट्रिंग मेट्रिक्स http://sourceforge.net/projects/simmetrics/files/ शीर्षक बहुत प्रभावशाली पुस्तकालय में देख सकते हैं। इसमें कई एल्गोरिदम शामिल हैं।

  • आलोचनात्मक अंतर
  • Levenshtein दूरी
  • Needleman-Wunch दूरी या सेलर्स एल्गोरिथ्म
  • स्मिथ-वाटरमैन दूरी
  • Gotoh दूरी या स्मिथ-वाटरमैन-Gotoh दूरी
  • ब्लॉक दूरी या एल 1 दूरी या सिटी ब्लॉक दूरी
  • मोन्ग एलकन दूरी
  • Jaro दूरी मीट्रिक
  • Jaro विंकलर
  • Soundex दूरी मीट्रिक
  • मिलान गुणांक
  • पासा के गुणांक
  • Jaccard समानता या Jaccard गुणांक या तानिमोटो गुणांक
  • ओवरलैप गुणांक
  • इयूक्लिडियन दूरी या एल 2 दूरी
  • कोसाइन समानता
  • वी ariational दूरी
  • Hellinger दूरी या भट्टाचार्य दूरी
  • सूचना त्रिज्या (जेन्सेन-शैनन विचलन)
  • हरात्मक माध्य
  • तिरछा विचलन
  • भ्रम संभावना
  • ताउ
  • Fellegi और Sunters (एसएफएस) मीट्रिक
  • टीएफआईडीएफ या टीएफ/आईडीएफ
  • फास्टए
  • BlastP
  • अधिकतम मेल खाता
  • q-ग्राम
  • Ukkonen एल्गोरिदम
+14

इस उत्तर में लिंक मुझे 403 त्रुटि दे रहा है। आप [वेबैक मशीन] (http://web.archive.org/web/http://staffwww.dcs.shef.ac.uk/people/[email protected]/stringmetrics का उपयोग कर सकते हैं .html) इसके बजाए। –

+0

मेरा मानना ​​है कि ऊपर वर्णित लाइब्रेरी का .NET संस्करण [यहां] है (http://sourceforge.net/projects/simmetrics/files/)। मैंने इसे विजुअल स्टूडियो 2010 में परिवर्तित करने के बाद, और एनयूनीट संदर्भों को अपडेट किया, यह बनाता है। यह 87 परीक्षण भी पास करता है। – dalenewman

+0

मुझे इस लाइब्रेरी का एक .net लाइब्रेरी संस्करण मिला [GitHub पर SimMetrics.Net] (https://github.com/StefH/SimMetrics.Net)। @dalenewman से सुझाव के समान ही, बस गिटूब पर? – Spiralis

11

वे मेरे अपने आविष्कार नहीं हैं, लेकिन वे मेरे पसंदीदा रहे हैं और मैं सिर्फ उन्हें के बारे में ब्लॉग और अपने ही प्रकाशित किया है Four Functions for Finding Fuzzy String Matches in C# Extensions नामक ब्लॉग पोस्ट में डाइस गुणांक, लेवेनशेटिन दूरी, सबसे लंबा आम उपक्रम और डबल मेटाफोन का tweaked संस्करण।

+1

ये कक्षा में तैयार हैं जिन्हें आप अपनी परियोजना में छोड़ सकते हैं। यह आसान आदमी का रास्ता है। – cjbarth

+0

अब गिटहब पर कोड https://github.com/tylerjensen/duovia-fuzzystrings – DanO

+0

ब्लॉग पोस्ट के लिए अपडेट किया गया लिंक: http://www.tsjensen.com/blog/post/2011/05/27/Four+Functions+ + ढूंढना + फ़ज़ी + स्ट्रिंग + मिलान + इन + सी + एक्सटेंशन.aspx –

0

यहां एक नज़र डालें।

यह निश्चित रूप से अपने लिए एक नज़र डालने लायक है।

http://en.wikipedia.org/wiki/Edit_distance

+0

यह किसी के लिए इसका जिक्र है। – Base33

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