2013-01-23 8 views
6

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

मैं सभी उद्घाटनों को स्टॉपवर्ड-मुक्त वाक्यों की सूची में कम करके शुरू करता हूं। मैं फिर एक आवृत्ति सूचकांक का निर्माण।

इसके बाद, मैं हर दूसरे पते का प्रत्येक वाक्य को ओबामा 2013 पते में प्रत्येक वाक्य की तुलना, और इसलिए की तरह समानता का मूल्यांकन:

#compare two lemmatized sentences. Assumes stop words already removed. frequencies is dict of frequencies across all inaugural  
def compare(sentA, sentB, frequencies): 
    intersect = [x for x in sentA if x in sentB] 
    N = [frequencies[x] for x in intersect] 
    #calculate sum that weights uncommon words based on frequency inaugurals 
    n = sum([10.0/(x + 1) for x in N]) 
    #ratio of matches to total words in both sentences. (John Adams and William Harrison both favored loooooong sentences that tend to produce matches by sheer probability.) 
    c = float(len(intersect))/(len(sentA) + len(sentB)) 
    return (intersect, N, n, c) 

अंतिम, मैं n और ग के लिए मनमाने ढंग से cutoffs के आधार पर परिणामों को फ़िल्टर ।

यह उन शब्दों की पहचान करने से बेहतर काम करता है जो कुल शब्दों के गैर-नगण्य अनुपात में असामान्य शब्दों को साझा करते हैं।


ओबामा 2013::

उदाहरण के लिए, यह इन मैचों उठाया इतिहास के लिए हमें बताता है कि इन सत्य स्वयं-सिद्ध हो सकता है, जबकि, वे कभी स्वयं को क्रियान्वित किया गया है; जबकि स्वतंत्रता भगवान से एक उपहार है, यह पृथ्वी पर अपने लोगों द्वारा सुरक्षित होना चाहिए।

कैनेडी, 1961: एक अच्छा विवेक हमारे केवल यकीन है कि इनाम, इतिहास के साथ साथ हमारे कर्मों का अंतिम न्यायकर्ता, हमें आगे, भूमि हम प्यार का नेतृत्व करने के उनके आशीर्वाद और उनकी मदद पूछ जाने दिया, लेकिन वह यह जानकर धरती पर भगवान का काम वास्तव में हमारा होना चाहिए।


ओबामा 2013 लैश और रक्त तलवार द्वारा तैयार द्वारा तैयार रक्त के माध्यम से, हमें पता चला कि कोई संघ स्वतंत्रता और समानता आधा गुलाम और आधा मुक्त जीवित रहने सकता है के सिद्धांतों पर स्थापित।

लिंकन, 1861 फिर भी, अगर भगवान ने चाहा कि यह सब धन दासा की एकतरफा परिश्रम के दो सौ सालों से ढेर तक जारी डूब जाएगा, और लैश के साथ तैयार रक्त के हर बूंद तक होगा एक और तलवार के साथ तैयार द्वारा भुगतान के रूप में तीन हजार साल पहले कहा था, इसलिए अभी भी यह कहा जाना चाहिए "प्रभु का निर्णय सही और पूरी तरह धर्मी हैं।


ओबामा 2013 की इस पीढ़ी अमेरिकियों का परीक्षण उन संकटों से किया गया है जो हमारे संकल्प को मजबूत करते हैं और साबित होते हैं हमारे लचीलापन

कैनेडी, 1961 के बाद से इस देश की स्थापना की थी, अमेरिका की हर पीढ़ी अपनी राष्ट्रीय निष्ठा का प्रमाण देने के लिए तलब किया गया है।


लेकिन यह बहुत कच्चा है।

मेरे पास एक प्रमुख मशीन-लर्निंग प्रोजेक्ट के लिए चॉप नहीं हैं, लेकिन यदि संभव हो तो मैं अधिक सिद्धांत लागू करना चाहता हूं।मैं बिग्राम खोज को समझता हूं, लेकिन मुझे यकीन नहीं है कि यहां काम करेगा - यह इतना सटीक नहीं है कि हम उद्धरण के बीच साझा किए गए दो शब्दों की सामान्य निकटता के रूप में रुचि रखते हैं। क्या कोई अस्पष्ट वाक्य तुलना है जो बिना कठोर किए शब्दों की संभावना और वितरण को देखती है? संकेत की प्रकृति यह है कि यह बहुत अनुमानित है।

वर्तमान प्रयास available on Cloud9IDE

अद्यतन, 1/24/13 प्रति स्वीकार किए जाते हैं जवाब है, यहाँ बाइग्राम खिड़कियों के लिए एक सरल अजगर समारोह है:

def bigrams(tokens, blur=1): 
    grams = [] 
    for c in range(len(tokens) - 1): 
     for i in range(c + 1, min(c + blur + 1, len(tokens))): 
      grams.append((tokens[c], tokens[i])) 
    return grams 

उत्तर

2

आप Bigrams उपयोग करने के लिए प्रेरित कर रहे हैं, आप अपने बिग्राम बना सकते हैं जबकि एक, दो, या यहां तक ​​कि तीन शब्दों के अंतराल को अनुमति देने के लिए ताकि थोड़ी सी बिग्राम की परिभाषा को कम किया जा सके। यह n अंतराल का अर्थ होने के बाद से काम कर सकता है इसका मतलब है कि n कई "bigrams" के रूप में, और आपका कॉर्पस बहुत छोटा है। इसके साथ, उदाहरण के लिए, आपके पहले अनुच्छेद से "bigram" (similar, inaugurals) हो सकता है।

+0

हां, यह अगली दिशा भी होगी जो मैं भी साथ जाऊंगा। वह किस बारे में बात कर रहा है कोलोकेशनल विंडोज़; उन्हें देखो। असल में आप एक स्लाइडिंग विंडो को परिभाषित करते हैं और प्रत्येक शब्द जोड़ी से बिग्राम इकट्ठा करते हैं: "इस पीढ़ी के अमेरिकियों का परीक्षण किया गया है": इस पीढ़ी, यह अमेरिकियों ... पीढ़ी के अमेरिकियों, पीढ़ी की पीढ़ी है। .. और इसी तरह। – verbsintransit

+0

मुझे बहुत करीब मिला, धन्यवाद! बिग्राम विंडो कोड जोड़ देगा (हालांकि यह बहुत स्पष्ट है)। –

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