2008-09-23 25 views
19

का संचालन यह एक वास्तविक मुद्दा है जो सामान्य रूप से टैगिंग आइटम पर लागू होता है (और हाँ, यह स्टैक ओवरफ्लो पर भी लागू होता है, और नहीं, यह स्टैक ओवरफ्लो के बारे में कोई प्रश्न नहीं है)।टैग पदानुक्रम और

संपूर्ण टैगिंग समस्या क्लस्टर समान वस्तुओं, जो कुछ भी हो सकती है (चुटकुले, ब्लॉग पोस्ट, ऐसे प्रश्न आदि) में मदद करती है। हालांकि, वहां (आमतौर पर लेकिन कड़ाई से नहीं) टैग का पदानुक्रम है, जिसका अर्थ है कि कुछ टैग अन्य टैग भी दर्शाते हैं। एक परिचित उदाहरण का उपयोग करने के लिए, "सी #" तो टैग का अर्थ ".net" भी है; एक और उदाहरण, एक चुटकुले डेटाबेस में, एक "गोरे लोग" टैग का अर्थ है "डरावना" टैग, जैसा कि "आयरिश" या "बेल्ज" या "कैनेडियन" आदि के समान है, जो मजाक के देश की उत्पत्ति के आधार पर है।

यदि आपके पास है, तो आपने अपनी परियोजनाओं में इसे कैसे संभाला है? मैं दो अलग-अलग मामलों में उपयोग किए गए दो अलग-अलग तरीकों का वर्णन करने वाला उत्तर प्रदान करूंगा (वास्तव में, एक ही तंत्र लेकिन दो अलग-अलग वातावरण में कार्यान्वित), लेकिन मुझे न केवल समान तंत्र पर भी दिलचस्पी है, बल्कि पदानुक्रम के मुद्दे पर आपकी राय भी है ।

उत्तर

1

मैंने जो तंत्र लागू किया है, वह खुद को दिए गए टैग का उपयोग नहीं करना था, लेकिन एक अप्रत्यक्ष लुकअप टेबल (सख्ती से डीबीएमएस शब्द नहीं) जो कई निहित टैग्स को टैग को लिंक करता है (जाहिर है, एक टैग स्वयं के लिए काम करने के लिए जुड़ा हुआ है)।

एक पायथन परियोजना में, लुकअप टेबल टैग पर मूल्यों के साथ एक टैग है, जहां टैग के मान सेट होते हैं (जहां टैग सादे तार होते हैं)।

[Tags] 
tagID integer primary key 
tagName text 

[TagRelations] 
tagID integer # first part of two-field key 
tagID_parent integer # second part of key 
trlValue float 

जहां trlValue एक गुरुत्वाकर्षण देने के लिए किया (0 में एक मूल्य, 1] अंतरिक्ष, था:

एक डेटाबेस परियोजना में (उदासीन जो इंजन यह था RDBMS), वहाँ निम्न तालिकाओं थे प्रत्येक लिंक किए गए टैग के लिए; एक स्व-से-टैग टैग संबंध हमेशा trlValue में 1.0 रखता है, जबकि शेष एल्गोरिदमिक रूप से गणना की जाती हैं (यह बिल्कुल महत्वपूर्ण नहीं है)। उदाहरण के उदाहरण चुटकुले डेटाबेस को सोचें; एक ['गोरा', ' डेरिसिव ', 0.5] रिकॉर्ड एक [' पांडिअन ',' डेरिसिव ', 0.5] से संबंधित होगा और इसलिए सभी व्युत्पन्न चुटकुले को एक और दिया गया है।

6

यह एक कठिन खोज है एन। दो चरमपंथी एक ऑटोलॉजी हैं (सबकुछ पदानुक्रमित है) और लोकगीत (टैग्स का कोई पदानुक्रम नहीं है)। मेरे पास answered this on WikiAnswers है, क्ले शर्की के "Ontology is Overrated" आलेख के संदर्भ में, जो दावा करता है कि आपको कोई पदानुक्रम निर्धारित नहीं करना चाहिए।

+0

क्ले के लेख बहुत दिलचस्प था। जाहिर है, निकटता कारक (डेटाबेस उदाहरण में) को संबंधित शब्दों को नरम करने के लिए पेश किया गया था (एक 'समलैंगिक' और 'queer' के आलेख उदाहरण में)। – tzot

+2

किसी कारण से मुझे विकीएन्वर पेज में क्ले शर्की के आलेख का लिंक नहीं मिला। यहां यह है: http://www.shirky.com/writings/ontology_overrated.html। मुझे भी यह पसंद आया। –

4

असल में मैं कहूंगा कि यह एक पदानुक्रमित प्रणाली नहीं है बल्कि टैग अर्थों के बीच महसूस की गई दूरी के साथ एक अर्थपूर्ण नेट है। मेरा क्या मतलब है: गणित प्रयोगात्मक भौतिकी के करीब बागवानी के करीब है।

इस तरह के नेट बनाने की संभावना: टैग के जोड़े बनाएं और लोगों को अनुमानित दूरी का न्याय करें (1-10 जैसे उपाय का उपयोग करके, जिसका अर्थ है [समानार्थी, समान, ..., antonyms], ...) और खोज करते समय, एक निश्चित दूरी के भीतर सभी टैग की खोज करें।

क्या ओपोजिट दिशा ([ए, बी] क्लोज़ -> [बी, ए,] बंद से आने पर एक उपाय बराबर दूरी होना चाहिए)? या निकटता का अर्थ है [ए, बी] बंद करें और [बी, सी] बंद करें -> [ए, बी] बंद करें?

शायद पहला शब्द डिफ़ॉल्ट रूप से एक और अर्थपूर्ण क्षेत्र ट्रिगर करेगा? यदि आप "सामाजिक कार्यकर्ता" से शुरू करते हैं, तो "विश्लेषक" निकट है। यदि आप "प्रोग्रामर" से शुरू करते हैं, तो "विश्लेषक" भी पास है। लेकिन इन बिंदुओं में से किसी एक से शुरू होने पर, आप शायद दूसरे को गिनती नहीं करेंगे ("सोज़ियल वर्कर" "प्रोग्रामर" के करीब नहीं है)।

इसलिए आप केवल दोनों जोड़ों का निर्णय लेंगे और दोनों दिशाओं (यादृच्छिक क्रम में) में निर्णय लेंगे।समान टैग के चयन के लिए

[TagRelations] 
tagId integer 
closeTagId integer 
proximity integer 

उदाहरण:

select closeTagId from TagRelations where tagId = :tagID and proximity < 3 
+0

निकटता एक तरफा है; यदि यह दो-तरफा होना चाहिए, तो एक अलग निकटता के साथ एक अलग रिकॉर्ड डाला जाएगा। – tzot

+0

@malach: पदानुक्रम के उपयोग के संबंध में एक यूएक्स मुद्दे के रूप में, मैं कहूंगा कि (i) सॉफ़्टवेयर को गणित के आधार पर वर्णित अर्थपूर्ण नेट दृष्टिकोण का उपयोग करना चाहिए, लेकिन (ii) उपयोगकर्ता जो "बागवानी" करना चाहते हैं व्यक्तिगत टैग संग्रह * को * की अनुमति दी जानी चाहिए, लेकिन * पदानुक्रमों में टैग व्यवस्थित करने के लिए मजबूर नहीं किया गया क्योंकि * कुछ * उपयोगकर्ता एक फ्लैट सूची से अधिक आरामदायक महसूस करेंगे। सॉफ़्टवेयर सिस्टम में जहां टैग का "वैयक्तिकरण" प्रश्न से बाहर है, तब तक एक फ्लैट सूची का उपयोग तब तक किया जा सकता जब तक कि डोमेन विशेषज्ञों ने अन्यथा शासन नहीं किया। – rwong

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