5

मैं वाक्यों का विश्लेषण करके पूर्वानुमान लागू करने की कोशिश कर रहा हूं। निम्नलिखित [निश्चित ही उबाऊ] वाक्यशब्द संघों को संग्रहीत करने के लिए डेटा संरचना

Call ABC 
Call ABC again 
Call DEF 

मैं इस प्रकार ऊपर वाक्य के लिए एक डेटा संरचना करना चाहते हैं पर विचार करें:,

Call: (ABC, 2), (again, 1), (DEF, 1) 
ABC: (Call, 2), (again, 1) 
again: (Call, 1), (ABC, 1) 
DEF: (Call, 1) 

सामान्य में Word: (Word_it_appears_with, Frequency), ....

कृपया ध्यान दें निहित इस प्रकार के डेटा में अनावश्यकता। जाहिर है, अगर ABC की आवृत्ति Call के तहत 2 है, Call की आवृत्ति 2 ABC के तहत 2 है। मैं इसे कैसे अनुकूलित करूं?

विचार यह है कि एक नई वाक्य टाइप होने पर इस डेटा का उपयोग करना है। उदाहरण के लिए, यदि Call को डेटा से टाइप किया गया है, तो यह कहना आसान है कि ABC वाक्य में उपस्थित होने की अधिक संभावना है, और इसे पहले सुझाव के रूप में पेश करें, इसके बाद फिर से और DEF

मुझे एहसास है कि भविष्यवाणी को लागू करने के लाखों संभावित तरीकों में से एक है, और मैं उत्सुकता से ऐसा करने के अन्य तरीकों के सुझावों की प्रतीक्षा करता हूं।

धन्यवाद

+0

मुझे पूरा यकीन है कि कोई अच्छी तरह से स्थापित उत्तर नहीं है क्योंकि आपका लक्ष्य पर्याप्त मूर्त नहीं है। असल में, यह एक एआई समस्या है, और एआई समाधानों में आमतौर पर अपने स्वयं के quirks है कि लोग साथ रह सकते हैं; हालांकि, आपके सटीक संदर्भ को जानने के बिना, यह कहना मुश्किल है कि क्विर्क स्वीकार्य होगा। इस कारण से, मैं आपका प्रश्न बंद करने के लिए मतदान कर रहा हूं। (यह एक बहुत ही रोचक है, मेरी राय में स्टैक ओवरफ्लो के लिए उपयुक्त नहीं है।) – zneak

+0

उसने कहा, आप अपने शब्दों के लिए पेड़ का प्रतिनिधित्व कर सकते हैं, और पेड़ की प्रत्येक शाखा में संभावना है। यदि इनपुट दोहराया जा सकता है और सिंटैक्स अपेक्षाकृत निश्चित है, तो यह अच्छी तरह से काम कर सकता है, लेकिन आपको उस तरह की प्राकृतिक भाषा से मेल खाने में परेशानी होगी। – zneak

+0

मैं एक पेड़ का उपयोग कर सकता हूं, हां, लेकिन मैं डेटा में अनावश्यकता को खत्म करना चाहता हूं: शब्द 2 के साथ होने वाले शब्द 1 की आवृत्ति स्पष्ट रूप से word2 के साथ शब्द 2 के समान होगी। साथ ही, इनपुट निरंतर है, इसलिए संभावनाएं प्रश्न से बाहर हैं। – WeNeigh

उत्तर

1

शायद एक बिडरेक्शनल ग्राफ का उपयोग कर। आप आवृत्तियों के रूप में किनारों के साथ शब्दों को नोड्स के रूप में स्टोर कर सकते हैं।

0

तुम भी निम्न डेटा संरचना का उपयोग कर सकते हैं:

विकल्प 1::

Map<String, Map<String, Long>> 
+0

गुवा ने इसे टेबल क्लास में कार्यान्वित किया है। http://docs.guava-libraries.googlecode.com/git-history/v10.0.1/javadoc/com/google/common/collect/Table.html –

+0

@ जॉन बी, यह जानना अच्छा है। जानकारी के लिए धन्यवाद। –

0

मैं दो विकल्पों में से एक पर विचार करेंगे

class Freq { 
    String otherWord; 
    int freq; 
} 

Multimap<String, Freq> mymap; 

या शायद एक टेबल

Table<String, String, int> 

को देखते हुए ऊपर फ्रीक:

class Freq{ 
    String thisWord; 
    int otherFreq; 
    Freq otherWord; 
} 

इस डेटा जोड़े की बहुत जल्दी अद्यतन करने के लिए अनुमति होगी: आप दो दिशाओं मानचित्रण क्या करना चाहते हो सकता है।

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