2010-05-12 17 views
10

मैं पुस्तकें वस्तुओं का एक सेट, classs बुक निम्नलिखित के रूप में परिभाषित किया गया है है:जावा पाठ वर्गीकरण समस्या

Class Book{ 

String title; 
ArrayList<tags> taglist; 

} 

कहाँ शीर्षक पुस्तक का शीर्षक है, उदाहरण के लिए: dummies के लिए जावास्क्रिप्ट। , जावास्क्रिप्ट, jQuery, "वेब देव" ..

जैसा कि मैंने कहा एक अलग चीजों के बारे में बात कर रहे पुस्तकों के एक सेट है::

और taglist हमारे उदाहरण के लिए टैग की एक सूची है आईटी,

आईटी किताबें:

जीव विज्ञान, इतिहास, ... प्रत्येक पुस्तक में शीर्षक और यह वर्णन टैग का एक सेट ..

मैं automaticaly विषय के आधार पर अलग सेट, उदाहरण में उन पुस्तकों को वर्गीकृत करने के लिए है है

  • नौसिखियों के लिए जावा
  • नौसिखियों के लिए जावास्क्रिप्ट
  • जानें 30 दिनों में फ्लैश
  • सी ++ प्रोग्रामिंग

इतिहास की पुस्तकों:

  • विश्व युद्ध
  • 1960 में अमेरिका
  • मार्टिन लूथर किंग के जीवन

बायोलॉजी किताबें:

  • ....

तुम लोग एक वर्गीकरण एल्गोरिथ्म/विधि समस्याओं उस तरह के लिए आवेदन करने को जानते हो?

एक समाधान पाठ की श्रेणी को परिभाषित करने के लिए एक बाहरी एपीआई का उपयोग करने के लिए है, लेकिन समस्या यह है कि यहाँ किताबें अलग अलग भाषाओं में हैं: फ्रेंच, स्पेनिश, अंग्रेजी ..

+0

हाँ, पर वहाँ किताबों के बीच कुछ सामान्य टैग हैं :( – Youssef

+0

संबंधित प्रश्न: http://stackoverflow.com/questions/2781752/naive-bayesian-for-topic-detection-using-bag-of-words-approach/2783356#2783356 – dmcer

+0

अच्छा धन्यवाद (वाई) – Youssef

उत्तर

29

यह एक उचित सीधा कीवर्ड-आधारित वर्गीकरण कार्य जैसा दिखता है। चूंकि आप जावा का उपयोग कर रहे हैं, इसके लिए विचार करने के लिए अच्छे पैकेज Classifier4J, Weka, या Lucene Mahout होंगे।

Classifier4J

Classifier4J naive Bayes और एक vector space मॉडल का उपयोग वर्गीकरण का समर्थन करता है।

के रूप में प्रशिक्षण और स्कोरिंग अपने अनुभवहीन Bayes क्लासिफ़ायर का उपयोग पर इस source code snippet में देखा, पैकेज का उपयोग करने के लिए यथोचित आसान है। यह उदार Apache Software License के तहत भी वितरित किया जाता है।

Weka

Weka डाटा खनन के लिए एक बहुत लोकप्रिय साधन है। यह उपयोग करने का एक लाभ यह है कि आप आसानी से कई different machine learning models का उपयोग कर naive Bayes, decision trees, support vector machines, k-nearest neighbor, logistic regression, और यहां तक ​​कि एक rule set based learner सहित विषयों में पुस्तकों को वर्गीकृत करने के साथ प्रयोग करने में सक्षम हो जाएगा है।

आपको टेक्स्ट वर्गीकरण here के लिए वेका का उपयोग करने पर एक ट्यूटोरियल मिलेगा।

हालांकि, वीका GPL के तहत वितरित किया गया है। आप इसे बंद स्रोत सॉफ़्टवेयर के लिए उपयोग नहीं कर पाएंगे जिसे आप वितरित करना चाहते हैं। लेकिन, आप अभी भी एक वेब सेवा वापस करने के लिए इसका उपयोग कर सकते हैं।

Lucene महावत

महावत बहुत बड़े डेटासेट पर सीखने मशीन करने के लिए बनाया गया है। यह Apache Hadoop के शीर्ष पर बनाया गया है और बेवकूफ बेयस का उपयोग करके पर्यवेक्षित वर्गीकरण का समर्थन करता है।

आपको टेक्स्ट ट्यूटोरियल here के लिए महाउट का उपयोग करने के तरीके को कवर करने वाला एक ट्यूटोरियल मिलेगा।

क्लासिफायर 4 जे की तरह, महाउट उदार Apache Software License के तहत वितरित किया जाता है।

+0

अच्छा संकेत आपको धन्यवाद – Youssef

+0

used classfier4j, वेक्टर क्लासिफायर ने मेरे लिए सबसे अच्छा काम किया – Indraneel

-1

आप fuzzy matching algorithms को देखने के लिए चाहते हो सकता है जैसे साउंडएक्स और लेवेनशेटिन।

+0

कूल, यह 2 स्ट्रिंग्स के बीच की दूरी की गणना करने का एक शानदार तरीका है, धन्यवाद – Youssef

+0

क्या आप विषयों पर कीवर्ड की सूचियों को मैप करने के लिए साउंडएक्स और लेवेनशेटिन का उपयोग कैसे कर सकते हैं? – dmcer

0

तो आप पुस्तकों का संग्रह रखने वाले टैग का मानचित्र बनाना चाहते हैं?

संपादित करें:

ध्वनि आप एक Vector Space Model पर एक नज़र लेने के लिए श्रेणियों के वर्गीकरण का उपयोग करना चाहेंगे की तरह।

या तो Lucene या Classifier4j इसके लिए एक ढांचा प्रदान करता है।

+0

मैं पुस्तकों की वस्तुओं का नक्शा बनाना चाहता हूं जहां कुंजी श्रेणी का नाम है। – Youssef

+0

@yox: वह नक्शा बनाएं। यह तुम्हारा जवाब है। –

+0

मुझे टैग द्वारा पुस्तकें नहीं चाहिए .. मुझे विषय के आधार पर किताबें चाहिए (नक्शा कुंजी) जो यहां मौजूद नहीं है, यह एक कृत्रिम उत्पन्न स्ट्रिंग – Youssef

0

क्या आप इस तरह के कुछ आसान नहीं चाहते हैं?

Map<Tag, ArrayList<Book>> m = {}; 
for (Book b : books) { 
    for (tag t : b.taglist) { 
     m.get(t).add(b); 
    } 
} 

अब m.get("IT") सभी आईटी किताबें आदि वापस आ जाएगी, ...

ज़रूर कुछ किताबें कई श्रेणियों में दिखाई देगा, लेकिन वह भी वास्तविक जीवन में होता है ...

+0

नहीं, टैग्स यदि आप पुस्तक में महत्वपूर्ण शब्दों की एक सूची चाहते हैं .. यह पुस्तकों को समूहबद्ध करने में मदद करेगा। – Youssef

+0

@yox: आह तो आप पुस्तक के टैग के सेट के आधार पर विषय वर्गीकृत करना चाहते हैं? या पुस्तक पाठ के आधार पर? और टैग/पुस्तक पाठ अलग-अलग भाषाओं में हो सकता है? – Claudiu

+0

exaclty, मैं केवल टैग का उपयोग करके वर्गीकृत करना चाहता हूं और टैग विभिन्न भाषाओं में हैं। – Youssef

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