में टैग क्लाउड मैं एक छोटा सा सी # एप्लिकेशन बना रहा हूं और एक साधारण सादे पाठ से टैग क्लाउड निकालना चाहता हूं। क्या कोई ऐसा काम है जो मेरे लिए ऐसा कर सकता है?सी #
सी #
उत्तर
मुझे यकीन है कि अगर यह ठीक है नहीं कर रहा हूँ अपने लिए क्या देख, लेकिन यह मदद मिल सकती है आप आरंभ:
LINQ कि शब्द आवृत्ति मायने रखता है (VB में, लेकिन मैं करने के लिए सी # अब परिवर्तित कर रहा हूँ)
Dim Words = "Hello World))))) This is a test Hello World"
Dim CountTheWords = From str In Words.Split(" ") _
Where Char.IsLetter(str) _
Group By str Into Count()
यहां एक ASP.NET Cloud COntrol है, जो कम से कम शुरू करने में आपकी सहायता कर सकता है, पूर्ण स्रोत शामिल है।
सबसे पहले, आप विभाजित है और अपने टोकन गिनती करने के लिए की जरूरत है: एक दो भाग प्रक्रिया
एक टैग बादल का निर्माण है, के रूप में मैं इसे देख सकते हैं। दस्तावेज़ को कैसे संरचित किया गया है, साथ ही साथ जिस भाषा में लिखा गया है, इस पर निर्भर करता है कि यह स्पेस से अलग शब्दों की गणना के रूप में आसान हो सकता है। हालांकि, यह एक बहुत ही बेवकूफ दृष्टिकोण है, जैसे शब्दों, जैसे, ए, इत्यादि ... में सबसे बड़ी शब्द-गणना होगी और टैग के रूप में बहुत उपयोगी नहीं हैं। मैं सबसे आम और अर्थहीन टैग को बाहर करने के लिए, किसी प्रकार की शब्द काली सूची को लागू करने का सुझाव दूंगा।
बार जब आप एक में परिणाम है (टैग, गिनती) जिस तरह से, आप निम्न कोड को कुछ इसी तरह इस्तेमाल कर सकते हैं:
(खोजों SearchRecordEntity की एक सूची है, SearchRecordEntity टैग और उसके गिनती रखती है, SearchTagElement है TagCategory विशेषता है, और ProcessedTags कि SearchRecordEntity का एक उपवर्ग) जो परिणाम रखती SearchTagElements की एक सूची
double max = Searches.Max(x => (double)x.Count);
List<SearchTagElement> processedTags = new List<SearchTagElement>();
foreach (SearchRecordEntity sd in Searches)
{
var element = new SearchTagElement();
double count = (double)sd.Count;
double percent = (count/max) * 100;
if (percent < 20)
{
element.TagCategory = "smallestTag";
}
else if (percent < 40)
{
element.TagCategory = "smallTag";
}
else if (percent < 60)
{
element.TagCategory = "mediumTag";
}
else if (percent < 80)
{
element.TagCategory = "largeTag";
}
else
{
element.TagCategory = "largestTag";
}
processedTags.Add(element);
}
आप एक वर्ग और मदों की राशि यह संग्रह के कुछ प्रकार में है, या डेटाबेस तालिका स्टोर कर सकता है ।
इससे, आप एक निश्चित श्रेणी के लिए गिनती प्राप्त कर सकते हैं और कुछ सीमाएं प्राप्त कर सकते हैं। तो आपका पैरामीटर श्रेणी है, और आपका रिटर्न वैल्यू एक गिनती है।
तो यदि गणना है> 10 & < 20, फिर लिंक के लिए एक सीएसएस शैली लागू करें जो एक निश्चित आकार का होगा।
आप इन गणनाओं को संग्रह में कुंजी के रूप में स्टोर कर सकते हैं, और उसके बाद उस मान को प्राप्त करें जहां कुंजी आपके रिटर्न वैल्यू से मेल खाती है (जैसा कि मैंने ऊपर बताया है)।
मुझे इस प्रक्रिया के लिए स्रोत कोड नहीं मिला है, लेकिन आपको यह सब कुछ करने के लिए एक आसान कार्य नहीं मिलेगा। एक नियंत्रण, हाँ (ऊपर के रूप में)।
यह एक बहुत ही पारंपरिक दृष्टिकोण है और मैंने पत्रिका ट्यूटोरियल आदि में जो देखा है उससे इसे करने का मानक तरीका है, और पहला दृष्टिकोण जो मैं सोचता हूं (आवश्यक नहीं है)।
आप कोडप्रोजेक्ट पर एक प्रोजेक्ट WordCloud पर एक नज़र डालना चाहते हैं। इसमें 430 स्टॉप शब्द शामिल हैं (जैसे the
, an
, a
इत्यादि) और पोर्टर स्टेमिंग एल्गोरिदम का उपयोग करता है, जो शब्दों को उनके रूट में कम कर देता है ताकि "स्टेमड स्टेमिंग स्टेम" सभी को एक ही शब्द की 1 घटना के रूप में गिना जा सके।
यह सब सी # में है - केवल एक चीज जिसे आप करना चाहते हैं इसे इसे विज़ुअलाइज़ेशन के बजाय HTML आउटपुट में संशोधित करने के लिए संशोधित करना होगा।
मैं वास्तव में http://thetagcloud.codeplex.com/ का उपयोग करने की अनुशंसा करता हूं। यह एक बहुत ही साफ कार्यान्वयन है जो टैगिंग, गिनती और टैग का प्रतिपादन का ख्याल रखता है। यह फ़िल्टरिंग क्षमताओं को भी प्रदान करता है।
सेकेंड, मैंने अभी इसे कार्यान्वित किया है और यह सब कुछ मुझे बॉक्स से बाहर करने की ज़रूरत है। – Simon
Zoomable TagCloud Generator जो किसी दिए गए स्रोत (पाठ फ़ाइल और अन्य स्रोतों) से कीवर्ड निष्कर्षों पर एक नजर डालें और रखा जा सकता है ज़ूम के रूप में उपयोगकर्ता इंटरफ़ेस (जुई)
पर एक नज़र डालें प्रदर्शित करता है एक एल्गोरिथ्म के लिए इस उत्तर:
Algorithm to implement a word cloud like Wordle
"DisOrganizer" उत्तर cou में उल्लेख किया एलडी अपने उद्देश्य की सेवा। थोड़ा बदलाव के साथ, आप इस "डिस्पोजेनाइज़र" को एक छवि की सेवा करने के लिए दे सकते हैं, जिस तरह से आप चाहते थे। पीएस: कोड सी # https://github.com/chandru9279/zasz.me/blob/master/zasz.me/
में लिखा गया है इसे देखें। यह मेरे लिए काम किया। WebExample नामक उदाहरण फ़ोल्डर के तहत एक प्रोजेक्ट है जो इसे हल करने में आपकी सहायता करेगा। https://github.com/chrisdavies/Sparc.TagCloud
आपके द्वारा प्रदान किया गया लिंक अब मृत है। –
अभी भी मृत। क्या यह http://www.codeproject.com/Articles/14661/Cloud-Control-for-ASP-NET को इंगित करना है? –