2010-07-15 14 views
10

मेरे पास एक ऑनलाइन आरपीजी गेम है जिसे मैं गंभीरता से ले रहा हूं। हाल ही में मुझे उपयोगकर्ताओं के साथ फर्जी पात्रों के साथ फर्जी पात्र बनाने में समस्या हो रही है, केवल अलग-अलग अक्षरों का एक गुच्छा। Ghytjrhfsdjfnsdms की तरह, Yiiiedawdmnwe, Hhhhhhhhejejekk। मैं उन्हें नाम बदलने के लिए मजबूर करता हूं लेकिन यह बहुत अधिक हो रहा है। मैं इसके बारे में क्या कर सकता हूं?जांचें कि क्या नाम "मानव" लगता है?

क्या मैं किसी भी तरह से जांच सकता हूं कि कम से कम आप एक दूसरे के बगल में एक ही अक्षर के 2 से अधिक का उपयोग नहीं कर सकते ?? और शायद अगर इसमें स्वर

+1

आप कौन सी भाषाएं समर्थन कर रहे हैं? केवल अंग्रेज़ी? क्योंकि यदि आप ऐसी भाषा का समर्थन करते हैं जो आप नहीं बोलते हैं, तो आप कैसे जानेंगे कि कोई नाम है या नहीं एक अपरिचित भाषा में नाम, या सिर्फ फर्जी? –

+11

अच्छी किस्मत वेल्श नाम मान्य! :) – Unicron

+0

केवल अंग्रेज़ी। haha unicron – Jimy

उत्तर

1

This link सहायता कर सकता है। आप इसे (संभावित रूप से संशोधित) भाषण सिंथेसाइज़र इंजन के माध्यम से प्लग करने में भी सक्षम हो सकते हैं और वास्तव में इसे उत्पन्न किए बिना भाषण उत्पन्न करने में कितनी परेशानी का विश्लेषण कर सकते हैं।

3

क्या होगा यदि आप Google खोज एपीआई का उपयोग यह देखने के लिए करेंगे कि नाम कोई परिणाम देता है या नहीं?

+3

http://www.google.com/search?q=dfjkdfjkd – kennytm

+1

यह एक विशिष्ट भाषा के बजाय "मानव" प्रतीत होने वाले नाम पर वापस आ जाता है। –

+6

चालाक, लेकिन भरोसेमंद नहीं। –

-3

ऐसा लगता है कि आपको एक काफी जटिल प्रीग फ़ंक्शन की आवश्यकता होगी। मैं आपके लिए एक लिखने का समय नहीं लेना चाहता, क्योंकि आप इसे और अधिक लिखना सीखेंगे, लेकिन यदि आप कुछ प्रयास पोस्ट करते हैं तो मैं रास्ते में मदद करूंगा।

http://php.net/manual/en/function.preg-match.php

+1

उस के साथ शुभकामनाएँ। चाहे वह कोड या नियमित अभिव्यक्ति हो, फिर भी यह असंभव होने जा रहा है कि झूठी सकारात्मक न हो। – wadesworld

+3

@ वेड विलियम्स - "गलत झूठ नहीं होना असंभव है" एक तिहाई नकारात्मक? –

+0

हाँ अच्छा बिंदु। लेकिन यहां लगभग कोई समाधान सही नहीं होगा। –

11

मैं एक यूजर इंटरफेस है कि बनाता है यह मस्तिष्क मृत एक प्रशासक के लिए सभी नए नाम सूची करने के लिए आसान है, और एक बिग फैट तंत्र कि व्यवस्थापक के कम करता है "का नाम बदलने की शक्ति" के निर्माण पर अपनी ऊर्जा ध्यान केंद्रित कर की सिफारिश करेंगे अविश्वसनीय रूप से जटिल और विविध नियमों को परिभाषित करने की कोशिश करने के बजाय वर्कलोड, जो नाम बनाते हैं (और प्रोग्राम से मिलान करने के लिए एक नियमित अभिव्यक्ति प्रोग्राम!)।

अद्यतन - एक बात ध्यान में आती है, हालांकि: दूसरा जीवन आपको पहले नाम को स्वतंत्र रूप से निर्दिष्ट करने की अनुमति देता है (शायद वे पहले नामों के डेटाबेस के खिलाफ जांच सकते हैं, मुझे नहीं पता) और फिर आपको एक से चुनने के लिए कुछ सौ पूर्व परिभाषित अंतिम नामों का चयन। एक ऑनलाइन आरपीजी के लिए, यह पहले से ही पर्याप्त हो सकता है।

+1

कोई उत्तर नहीं, लेकिन फिर भी एक अच्छा जवाब –

+1

@Daniel 'yar' रोसेनस्टर्क, मुझे ऐसी टिप्पणियां नहीं मिलती हैं। मेरा मतलब है, केवल अगर लोग बस पूछे जाने वाले प्रश्न का उत्तर देते हैं, तो क्या यह * एक प्रश्न का सही जवाब है? मुझे उम्मीद है कि नहीं। मेरा मतलब है, अगर कोई पूछता है कि एक हथौड़ा के साथ घर कैसे बनाया जाए, तो क्या किसी को इस व्यक्ति को हथौड़ा के साथ अपने रास्ते पर मदद करने की कोशिश करनी चाहिए, या किसी को यह जवाब देना चाहिए कि केवल एक हथौड़ा का उपयोग करना अच्छा नहीं हो सकता है और अन्य टूल्स का भी सुझाव देते हैं? मुझे यकीन है कि यह बाद वाला है। –

+0

इसमें शामिल होने के साथ, अन्य विधियों के साथ मुख्य समस्या झूठी-सकारात्मक है, लेकिन आप "नकली होने की संभावना" द्वारा क्रमबद्ध करने के लिए एक अन्य विधि का उपयोग कर सकते हैं। –

2

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

Google पर थोड़ी सी खोज के साथ, आप कई नाम डेटाबेस ढूंढ सकते हैं।

2

क्या मैं किसी भी तरह से जांच सकता हूं कि कम से कम आप एक दूसरे के बगल में एक ही अक्षर के 2 से अधिक का उपयोग नहीं कर सकते ?? और यह भी हो सकता है अगर यह होता है स्वर

आप सिर्फ इस चाहते हैं, आप कर सकते हैं:

preg_match('/(.)\\1\\1/i', $name); 

यह 1 वापस आ जाएगी कुछ भी एक पंक्ति या एक से अधिक में तीन बार दिखाई देता है।

6

आप एक metaphone कार्यान्वयन इस्तेमाल कर सकते हैं और उसके बाद "अप्राकृतिक" पैटर्न के लिए देखो:

http://www.php.net/manual/en/function.metaphone.php

यह metaphone स्ट्रिंग पीढ़ी के लिए PHP समारोह है। आप एक स्ट्रिंग में गुजरते हैं और यह पाठ का ध्वन्यात्मक प्रतिनिधित्व देता है। सिद्धांत रूप में, आप बड़ी संख्या में "मानव" नामों को पारित कर सकते हैं और फिर फोनेम के वैध संयोजनों का डेटाबेस संग्रहीत कर सकते हैं। एक संदिग्ध नाम का परीक्षण करने के लिए, बस देखें कि फोनेम के संयोजन डेटाबेस में हैं या नहीं।

आशा है कि इससे मदद मिलती है!

+0

यह ओपी के लिए क्या देख रहा था के करीब लगता है। एक एल्गोरिदम पहले ही दस्तावेज और कार्यान्वित किया जा चुका है: http://www.sil.org/computing/lascruces.html – Kilanash

+0

यह अच्छा लगता है, हालांकि यह किसी भी तरह PHP में वर्तनी सुधार से संबंधित नहीं है? अगर मैं ग़लत हूं तो मेरी गलती सुझाएं। – tisuchi

3

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

+0

अच्छे विचारों को दूर करने का अच्छा विचार! – Unicron

3

पंक्ति में व्यंजनों या स्वरों की मात्रा को सीमित कर देगा, और दोहराने में मदद को रोक देगा? एक regex के रूप में:

if(preg_match('/[bcdfghjklmnpqrtsvwxyz]{4}|[aeiou]{4}|([a-z])\1{2}/i',$name)){ 
    //reject 
} 

संभवतः iconvASCII//TRANSLIT साथ उपयोग करें यदि आप बल वर्णों की अनुमति।

0

उपयोगकर्ताओं को किसी तृतीय पक्ष स्रोत (जैसे फेसबुक, ट्विटर, ओपनआईडी ...) में बनाने की ज़िम्मेदारी सौंपने के बारे में आप क्या सोचते हैं?

ऐसा करने से आपकी समस्या का समाधान नहीं होगा, लेकिन यह उपयोगकर्ता के लिए अतिरिक्त खातों को बनाने के लिए और अधिक काम करेगा - (मानते हैं कि उपयोगकर्ता आलसी हैं, क्योंकि अधिकांश हैं) अतिरिक्त "डमी" उपयोगकर्ताओं के निर्माण को हतोत्साहित करना चाहिए।

1

आपको Naive Bayes spam filter के एक संशोधित संस्करण को लागू करने का प्रयास करना चाहिए। उदाहरण के लिए, सामान्य स्पैम पहचान में आप स्पैम होने वाले शब्द की संभावना की गणना करते हैं और यह निर्धारित करने के लिए कि संपूर्ण संदेश स्पैम है या नहीं, व्यक्तिगत शब्द संभावनाओं का उपयोग करें।

इसी प्रकार, आप एक शब्द सूची डाउनलोड कर सकते हैं, और संभावना की गणना कर सकते हैं कि अक्षरों की एक जोड़ी वास्तविक शब्द से संबंधित है।

उदा।, 26x26 तालिका बनाएं, T बनाएं। 5 वीं पंक्ति को e पत्र का प्रतिनिधित्व करने दें और प्रविष्टि T(5,1) को अपनी शब्द सूची में ea की संख्या होने दें। एक बार जब आप गिनती कर लेंगे, तो पंक्ति के योग के साथ प्रत्येक पंक्ति में प्रत्येक तत्व को विभाजित करें ताकि T(5,1) अब ea का प्रतिशत e से शुरू होने वाले पत्र की एक जोड़ी में आपकी शब्द सूची में दिखाई दे।

अब, आप अलग-अलग जोड़ी संभावना का उपयोग कर सकते हैं (जैसे Jimy में है कि हो सकता है {Ji, im, iy} चाहे Jimy एक स्वीकार्य नाम है या नहीं की जाँच करने के लिए। आप शायद होगा सीमा का अधिकार संभावना निर्धारित करने के लिए पर, लेकिन इसे आज़माएं --- इसे लागू करना मुश्किल नहीं है।

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