2009-07-29 7 views
6

ट्विटर के रुझान रुझान अक्सर अक्सर एक शब्द से अधिक होते हैं। लेकिन रचना शब्दों के लिए वहाँ वर्तनी की अक्सर अलग अलग तरीकों से, कर रहे हैं जैसे:ट्विटर रुझान विषय: विभिन्न वर्तनी को जोड़ें

"द हाफ ब्लड प्रिंस"/"द हाफ ब्लड प्रिंस"

सभी अद्यतन, एक रुझान विषय का उल्लेख आप वर्तनी के सभी तरीके की जरूरत है पता करने के लिए । ट्विटर से करता है:

Twitter's Trending Topics Admin http://i26.tinypic.com/hu4uw1.png

आप बाईं और दाईं तरफ वर्तनी के विभिन्न तरीकों पर विषय नाम होता है। क्या आपको लगता है कि यह मैन्युअल रूप से या स्वचालित रूप से किया जाता है? क्या यह स्वचालित रूप से ऐसा करना संभव है? यदि हां: कैसे?

मुझे आशा है कि आप मेरी मदद कर सकते हैं। अग्रिम में धन्यवाद!

+4

सभी विशेष पात्रों को हटाने के रूप में सरल + खोज शब्द में रिक्त स्थान और उन्हें लिंक करें! "खोज शब्द" = "खोज शब्द" = "खोज + शब्द" कुछ भी "खोजकर्ता" की खोज में परिणाम देगा मुझे पता है, बहुत स्मार्ट :) –

+0

नहीं, यह इतना आसान नहीं है। "संगीत आप हैं" इस विषय के लिए एकमात्र वर्तनी है। लेकिन "हाफ ब्लड प्रिंस" में दो अलग-अलग वर्तनी हैं ... – caw

+2

यदि आप ब्रोकन लिंक जैसे सभी विशेष पात्रों को हटाते हैं तो कहते हैं कि वास्तव में हाफ ब्लड प्रिंस की दो वर्तनी नहीं हैं। विशेष पात्रों और रिक्त स्थानों को हटा दिए जाने के बाद दोनों "आधाब्लूडप्रिंस" –

उत्तर

6

मैं टूटे हुए लिंक की टिप्पणी के आधार पर अपने खुद के सवाल का जवाब देने की कोशिश करता हूँ (इस के लिए धन्यवाद):


आप निकाला है वाक्यांशों दस्तावेजों के अपने डेटाबेस से 1 से 3 शब्द से मिलकर। इन extraced मुहावरों में वहाँ निम्नलिखित वाक्यांशों हैं: आप सभी विशेष वर्ण और खाली रिक्त स्थान पट्टी

  • द हाफ ब्लड प्रिंस
  • हाफ-ब्लड प्रिंस
  • Halfblood राजकुमार

प्रत्येक वाक्यांश के लिए, और स्ट्रिंग लोअरकेस बनाने:

$ वाक्यांश = 'द हाफ ब्लड प्रिंस'; $ वाक्यांश = preg_replace ('/ [^ a-z]/i', '', $ वाक्यांश); $ वाक्यांश = strtolower ($ वाक्यांश);

  • द हाफ ब्लड प्रिंस => halfbloodprince
  • हाफ-ब्लड: // परिणाम "halfbloodprince"

    आप इस जब किया है, सभी 3 वाक्यांश (ऊपर देखें) आम में एक वर्तनी है राजकुमार => halfbloodprince

  • Halfblood राजकुमार => halfbloodprince

तो "halfbloodprince" जनक मुहावरा है।आप अपने डेटाबेस, सामान्य वाक्यांश और अभिभावक वाक्यांश दोनों में डालते हैं।

एक "रुझान वाले विषयों व्यवस्थापक" ट्विटर की तरह दिखाने के लिए आप निम्न कार्य करें:

// first select the top 10 parent phrases 
$sql1 = "SELECT parentPhrase, COUNT(*) as cnt FROM phrases GROUP BY parentPhrase ORDER BY cnt DESC LIMIT 0, 10"; 
$sql2 = mysql_query($sql1); 
while ($sql3 = mysql_fetch_assoc($sql2)) { 
    $parentPhrase = $sql3['parentPhrase']; 
    $childPhrases = array(); // set up an array for the child phrases 
    $fifthPart = round($sql3['cnt']*0.2); 
    // now select all child phrases which make 20% of the parent phrase or more 
    $sql4 = "SELECT phrase FROM phrases WHERE parentPhrase = '".$sql3['parentPhrase']."' GROUP BY phrase HAVING COUNT(*) >= ".$fifthPart; 
    $sql5 = mysql_query($sql4); 
    while ($sql6 = mysql_fetch_assoc($sql5)) { 
     $childPhrases[] = $sql3['phrase']; 
    } 
    // now you have the parent phrase which is on the left side of the arrow in $parentPhrase 
    // and all child phrases which are on the right side of the arrow in $childPhrases 
} 

यह है कि क्या आप में से, टूटे हुए लिंक सोचा है? क्या यह काम करेगा?

0

मुझे याद है जब एमजे का निधन हो गया, ट्विटर मैन्युअल रूप से वापस चला गया और विषयों को उनकी मृत्यु के ट्वीट्स को इंगित करने के लिए तय कर दिया। इन दिनों कुछ ऐसा करने के लिए कंप्यूटर से पूछना बहुत कुछ होगा, हालांकि यह कम से कम किया जा सकता है।

+0

हो जाते हैं तो आपको लगता है कि ऊपर पोस्ट की गई सूची मैन्युअल रूप से बनाई गई है? – caw

+0

संभावित रूप से हां। यह शायद दोनों का मिश्रण है। –

+0

यह सत्यापित करने वाला एक स्रोत अच्छा होगा। – anderstornvig

7

जो आप मूल रूप से चाहते हैं वह similarity between two strings ढूंढना है।

मुझे लगता है कि Soundex एल्गोरिदम आप जो खोज रहे हैं वह है। इसका उपयोग तारों की तुलना करने के लिए किया जा सकता है कि वे कैसे आवाज करते हैं। या जैसा विकी वर्णन करता है:

साउंडएक्स अंग्रेजी में उच्चारण के रूप में ध्वनि के नामों के अनुक्रमण के लिए एक ध्वन्यात्मक एल्गोरिदम है। लक्ष्य homophones के लिए एक ही प्रतिनिधित्व के लिए एन्कोड किया जाना है ताकि वर्तनी में मामूली मतभेदों के बावजूद उनका मिलान किया जा सके।

और:

इस एल्गोरिथ्म का उपयोग [संपादित करें: अर्थात, "मूल्यांकन" एक पत्र और तीन अंकों से शब्द], दोनों "रॉबर्ट" और "रूपर्ट" वापस एक ही स्ट्रिंग "R163" जबकि "रूबिन" पैदावार "आर 150"। "एशक्राफ्ट" उपज "ए 261" है।

the Levenshtein distance भी है।

शुभकामनाएं।

+2

धन्यवाद। मुझे नहीं लगता कि साउंडएक्स या लेवेनशेटिन मेरी मदद कर सकते हैं। "फ़ायरफ़ॉक्स 3" और "फ़ायरफ़ॉक्स 2" के बीच समानता बहुत अधिक है। लेकिन ये दो टैग एक ही विषय का वर्णन नहीं करते हैं, हालांकि। इसके अलावा, कुछ विषयों में केवल एक वर्तनी होती है ("बंदर द्वीप") जबकि कुछ अन्य विषयों में कई अलग-अलग वर्तनी होती हैं ("हाफ ब्लड प्रिंस"/"हाफ-ब्लड प्रिंस")। – caw

1

मानते हैं कि प्रवृत्त विषय कम्प्यूटेशनल रूप से जेनरेट किए जाते हैं, ट्विटर पर ऐसा करने वाला सटीक एल्गोरिदम अनुमान लगाना मुश्किल होगा। यह संभवतः अत्यधिक गोपनीय और पेटेंट भी है (डरावना है क्योंकि यह पेटेंट एल्गोरिदम के लिए ध्वनि हो सकता है)।

मुझे यह विश्वास करना उचित लगता है कि वे किसी प्रकार की प्राकृतिक भाषा एल्गोरिदम का उपयोग करेंगे। मामले के आधार पर वे अक्सर कम्प्यूटेशनल रूप से काम करने के लिए वास्तव में भारी होते हैं और केवल वही करेंगे जो आप कुछ विस्तार करना चाहते हैं।

विषय पर एक स्पष्ट उपयोगी पढ़ने विकी है है:

गुड लक।

+2

मुझे नहीं लगता कि आपको न्यूरो-भाषाई प्रोग्रामिंग का मतलब है। यह पारस्परिक संचार और मनोचिकित्सा के लिए एक वैकल्पिक दृष्टिकोण है। –

+0

हाँ क्षमा करें, आप सही हैं। पता नहीं क्यों मैंने लिखा था। अब यह सही है। धन्यवाद। – anderstornvig

3

ऐसा करने के कई तरीके हैं।Google शैली के बारे में एक सीधा-आगे लेख "क्या आपका मतलब है" जांच यह प्राप्त करने के तरीकों के लिए एक अच्छा पठन है। Google पर शोध के निदेशक पीटर नॉरविग द्वारा लिखित।

http://norvig.com/spell-correct.html

2

"anderstornvig" उल्लेख Levenshtein/संपादन दूरी है, जो एक बहुत अच्छा विचार है, लेकिन काफी उचित है क्योंकि कुछ क्रमपरिवर्तन अन्य क्रमपरिवर्तन की तुलना में अधिक महत्वपूर्ण हैं नहीं है। समस्या यह प्रतीत होती है कि हम बहुत से डोमेन-विशिष्ट ज्ञान का उपयोग कर रहे हैं जब हम यह निर्धारित करते हैं कि कौन से अंतर "महत्वपूर्ण" हैं और जो "महत्वहीन" हैं। उदाहरण के लिए, हम जानते हैं कि "हाफ-ब्लड प्रिंस" में हाइफ़न बहुत महत्वपूर्ण है लेकिन "फ़ायरफ़ॉक्स 3" में संख्या बहुत महत्वपूर्ण है।

इस कारण से, आप Levenshtein की तरह एक साधारण मीट्रिक अनुरूपण सोच सकते हैं। पैरामीटर जोड़ें जो आपको अनुकूलित करने देता है कि किस तरह के मतभेद महत्वपूर्ण हैं और किस प्रकार महत्वहीन हैं।

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

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

इस तरह, आप अपने एल्गोरिथ्म अपने डोमेन विशिष्ट ज्ञान का उपयोग कर प्रशिक्षित कर सकते हैं।

+0

बहुत बहुत धन्यवाद। अछा सुझाव। मैं इसे आज़माउंगा। – caw

1

अधिकतर उनके पास कुछ स्वचालित सिस्टम हैं जो संभावित उम्मीदवारों को संयोजन के लिए सुझाव देते हैं, और फिर एक मानव उन्हें गठबंधन करने के लिए अंतिम विकल्प बनाता है। कुछ वे स्वचालित रूप से गठबंधन हो सकते हैं।

  • रिक्त स्थान और अन्य विराम चिह्न को हटाने का आपका सुझाव एक अच्छा है। सबसे अधिक संभावना है कि वे उन चीज़ों को गठबंधन करें जो केवल विराम चिह्न या सफेद स्थान पर ही भिन्न हों।
  • बहुवचन बनाम एकवचन: इन मतभेदों को ढूंढना स्वचालित करना आसान होगा, और संयोजन के लिए संभावित उम्मीदवारों का उत्पादन होगा।
  • सामान्य गलत वर्तनी - सामान्य गलत वर्तनी के डेटाबेस हैं। वे वर्तनी सुझावों के लिए Google एपीआई पर भी भरोसा कर सकते हैं (मुझे लगता है कि वे इसका पर्दाफाश करते हैं)।
  • Soundex (या इसी तरह) वर्तनी की गलतियों को खोजने के लिए एक अच्छा है, लेकिन इसे पहले उपरोक्त दो फ़िल्टरों (रिक्त स्थान, विराम चिह्न और बहुवचन को हटाएं) के माध्यम से जाना होगा और फिर संभवतः एक मानव को कॉल करने की आवश्यकता होगी समान हैं। लेकिन अगर आप एक ग्राफिकल प्रतिनिधित्व प्रस्तुत कर सकते हैं जो समान या समान ध्वनि के साथ क्लस्टरिंग दिखा रहा है तो आप वास्तव में उस हिस्से को आसान बना देंगे। जब एक क्लस्टर प्रकट करने के लिए और प्रवृत्ति शुरू होता है तो आपको अपने आप एक अधिसूचना भेज सकते हैं (वे वास्तव में केवल ट्रेंडिंग विषयों के बारे में भी चिंता है, इसलिए यदि यहां तक ​​कि एक संयुक्त एक क्लस्टर का रुझान नहीं है वे इसे जांच करने के लिए इंतजार कर सकते हैं।)

कहाँ जब आपको आम उपनाम होते हैं तो आपको वास्तव में एक इंसान की जरूरत होती है। माइकल जैक्सन, एमजे, माइकल, आदि की तरह या मैकडॉनल्ड्स, मैकडी, मिकी-डी, इत्यादि। और फिर तकनीकी के साथ आपके पास विजुअल स्टूडियो, वीएस 2008, वीएस, आदि या स्टैक ओवरफ्लो, एसओ इत्यादि हैं। फिर सी #, सी-शार्प, सी # .NET सभी समान हैं, लेकिन सी और सी ++ अलग हैं।

तो इसे एक संयोजन होने की आवश्यकता होगी। यह पिछले विश्लेषण या अन्य स्रोतों के आधार पर ज्ञात विविधताओं और संयोजन के डेटाबेस पर भरोसा कर सकता है, लेकिन डेटाबेस को नियमित रूप से एक संपादक द्वारा बनाए रखा जाएगा।

+0

इस विस्तृत उत्तर के लिए बहुत बहुत धन्यवाद। मुझे लगता है कि "सी # => सी-शार्प" जैसे मैपिन युक्त डेटाबेस एक बहुत अच्छा विचार है। वर्तनी सुझाव भी दिलचस्प हैं। – caw

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