2010-10-31 13 views
9

मैं स्वचालित रूप से कम लेख को वर्गीकृत करने की कोशिश कर काम कर रहा हूँ और मैं कैसे समान शब्द का मिलान कर यह पता लगाने की कोशिश कर रहा हूँ के लिए एक खोज मैच कर सकता है - जैसे, शेल्फ अलमारियों या चित्रकला और फिर से रंगनामैं कैसे मिलते जुलते शब्दों

मैं मैं पोर्टर स्टेमिंग एल्गोरिदम का उपयोग कर रहा हूं लेकिन यह केवल कुछ स्थितियों के लिए मदद करता है और केवल शब्द के अंत में (ऊपर दिए गए दोनों उदाहरण इसके साथ काम नहीं करते हैं)।

वहाँ है एक एल्गोरिथ्म या संबंधित शब्द सूचियों के कुछ इस तरह से मदद मिलेगी (अपने खुद के बनाने के बाहर?)

(मैं php में काम कर रहा हूँ ताकि भाषा में किसी भी समाधान अधिक उपयोगी होगा।)

उत्तर

9

Levenshtein Distance वह है जो आप खोज रहे हैं।

किसी भी दो तारों के लिए, यह प्रविष्टि, उत्परिवर्तन और हटाने की न्यूनतम संख्या की गणना करता है जो एक स्ट्रिंग को दूसरे में बदलने के लिए होने की आवश्यकता होती है।

यदि दूरी कम है तो दो शब्द समान हैं।

आप यह निर्धारित करने के लिए Soundex एल्गोरिदम का भी उपयोग कर सकते हैं कि दो शब्द समान हैं या नहीं।

यह भी देखें:
PHP levenshtein function
PHP soundex function

+1

इस तरह के संदर्भ में लेवेनशेटिन के साथ एक विशेष समस्या यह है कि आपको एक अच्छी दहलीज मिलनी है; यह केवल दो शब्दों के बीच परिवर्तनों की संख्या देता है। मूल पोस्ट में दो उदाहरणों के बीच काफी अंतर है: लेवेनशेटिन ("शेल्फ", "शेल्फ") = 3, लेवेनशेटिन ("पेंटिंग", "पेंट") = 5. –

+0

संदर्भ के लिए - मुझे http : //stackoverflow.com/questions/634995/implementation-of-levenshtein-distance-for-mysql-fuzzy- खोज जिसमें कुछ mysql संग्रहीत प्रक्रिया संस्करण के लिए एक लिंक शामिल है। यद्यपि जनवरी ने बताया कि यह स्पष्ट नहीं है कि यह कितना करीब आएगा। लेकिन यह एक कोशिश के लायक है। – Yehosef

+0

यह निकटतम उत्तर है - यह आदर्श नहीं है लेकिन अच्छी शुरुआत है। जन से शब्द सूची अधिक आदर्श है लेकिन इस बिंदु पर व्यावहारिक नहीं है। – Yehosef

4

ठीक है, सब "से संबंधित शब्द सूची" की मां कहा जाता WordNet है: http://wordnet.princeton.edu/

यह एक काफी उदार लाइसेंस के लिए प्रभारी विषय की नि: शुल्क उपलब्ध है । "संबंधित परियोजनाओं" खंड में एक PHP इंटरफ़ेस है।

शब्द समानता एल्गोरिदम का उपयोग करके इसका लाभ यह है कि यह "पेंट" और "रंग" जैसे शब्दों के असमान समानार्थी भी जानता है। नकारात्मकता यह है कि आपको या तो सही synsets पता होना है (आखिरकार, एक शब्द अलग-अलग चीजों का मतलब हो सकता है) या आप समानार्थी की एक सुंदर जंगली सूची प्राप्त कर सकते हैं।

+0

वाह - लिंक के लिए धन्यवाद। मुझे लगता है कि डीबी प्रारूप को समझना मेरे पास परियोजना के मुकाबले ज्यादा समय होगा लेकिन यह जाने का आदर्श तरीका प्रतीत होता है। – Yehosef

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