2011-12-08 14 views
9

मैं अजगर में एक फ़ंक्शन बनाने का एक तरीका ढूंढ रहा हूं जहां आप एक स्ट्रिंग में पास करते हैं और यह लौटाता है कि यह सही वर्तनी है या नहीं। मैं एक शब्दकोश के खिलाफ जांचना नहीं चाहता। इसके बजाय, मैं चाहता हूं कि यह Google के वर्तनी सुझावों को जांचें। इस तरह, सेलिब्रिटी नाम और अन्य विभिन्न उचित संज्ञाओं को सही वर्तनी के रूप में गिना जाएगा।Google का उपयोग करके पाइथन वर्तनी परीक्षक को कैसे कार्यान्वित करें "क्या आपका मतलब है?"

यहां पर जहां मैं अभी तक हूं। यह ज्यादातर समय काम करता है, लेकिन यह कुछ सेलिब्रिटी नामों के साथ गड़बड़ करता है। उदाहरण के लिए, "सीई लो हरी" या "पॉज़नर" जैसी चीजें गलत के रूप में चिह्नित होती हैं।

import httplib 
import xml.dom.minidom 

data = """ 
<spellrequest textalreadyclipped="0" ignoredups="0" ignoredigits="1" ignoreallcaps="1"> 
<text> %s </text> 
</spellrequest> 
""" 

def spellCheck(word_to_spell): 

    con = httplib.HTTPSConnection("www.google.com") 
    con.request("POST", "/tbproxy/spell?lang=en", data % word_to_spell) 
    response = con.getresponse() 

    dom = xml.dom.minidom.parseString(response.read()) 
    dom_data = dom.getElementsByTagName('spellresult')[0] 

    if dom_data.childNodes: 
     for child_node in dom_data.childNodes: 
      result = child_node.firstChild.data.split() 
     for word in result: 
      if word_to_spell.upper() == word.upper(): 
       return True; 
     return False; 
    else: 
     return True; 
+11

सावधान: [5.3 आप सहमत होते हैं (या ऐक्सेस करने का प्रयास) जब तक आप विशेष रूप से एक अलग समझौते में ऐसा करने की अनुमति दी गई है, किसी भी इंटरफ़ेस के अलावा अर्थ यह है कि गूगल द्वारा प्रदान किए गए किसी भी सेवा को Google के साथ आप विशेष रूप से सहमत हैं कि किसी भी स्वचालित माध्यम (स्क्रिप्ट या वेब क्रॉलर के उपयोग सहित) के माध्यम से किसी भी सेवा को एक्सेस (या एक्सेस करने का प्रयास करें) और यह सुनिश्चित करेगा कि आप सेवाओं पर मौजूद किसी भी robots.txt फ़ाइल में निर्धारित निर्देशों का पालन करें। ।] (http://www.google.com/accounts/TOS) – sarnold

+0

आप 'परिणाम' पर सही ढंग से पुन: प्रतीत नहीं होते हैं। – eumiro

+0

https://bitbucket.org/mchaput/whoosh/wiki/Home – Surya

उत्तर

6

लागू, अन्य बड़े साथियों को परखें।

  1. तुम सच खोज इंजन जो पृष्ठ अनुरोधों, Yahoo और Bing कुछ उत्कृष्ट सुविधाओं प्रदान कर रहे हैं गिनती के साथ रहना चाहते हैं। याहू सीधे YQL तालिकाओं का उपयोग कर वर्तनी जांच सेवाएं प्रदान कर रहा है (नि: शुल्क: 5000 अनुरोध/दिन और गैर-वाणिज्यिक)।

  2. आप अजगर एपीआई जो संज्ञाओं कि आप का उल्लेख पर सहित एक बहुत समान जादू (कभी कभी घूम सकता है - अपने सभी कहीं न कहीं संभावना पर आधारित के बाद) करने के लिए सक्षम हैं की अच्छी संख्या है

तो, दूसरे मामले में, आप एक अच्छी सूची (पूरी तरह से मुक्त)

  1. GNU - Aspell (यहां तक ​​कि मिल गया अजगर बाइंडिंग)
  2. PyEnchant
  3. मिला
  4. Whoosh (यह एक बहुत अधिक की तुलना में वर्तनी जांच करती है, लेकिन मुझे लगता है कि इस पर कुछ बढ़त है।)

मुझे आशा है कि वे आप कैसे चीजें काम की स्पष्ट जानकारी देना चाहिए।

वास्तव में वर्तनी जांच मशीन लर्निंग, ऐ, NLP .. आदि एक बहुत अधिक के क्षेत्र में बहुत ही जटिल तंत्र शामिल है। इसलिए, Google/याहू जैसी कंपनियां वास्तव में अपने एपीआई पूरी तरह से मुफ्त प्रदान नहीं करती हैं।

+0

"कोई भी उन्हें मुफ्त और मुक्त स्रोत के लिए देने वाला नहीं है" का क्या अर्थ है? आप अपने उत्तर में कई मुफ्त और मुक्त स्रोत उदाहरण सूचीबद्ध करते हैं। –

+0

@ माइकल हॉफमैन मैं वास्तव में याहू स्पेल चेकिंग या Google भविष्यवाणी API जैसे अधिक परिष्कृत एपीआई का जिक्र कर रहा था .. – Surya

9

पीटर Norvig आपको बताता है कि बल्कि श्री गूगल के लिए चिपके से spell checker in Python.

+0

लेकिन क्या यह सिर्फ टेक्स्ट फ़ाइल में किसी शब्दकोश के विरुद्ध जांच नहीं करता है? –

+0

क्या आपने इसे पढ़ा? – duffymo

+0

हां मैंने किया। यह Google पर नहीं जाता है और जांचता है कि क्या शब्द सही हैं, यह आपके द्वारा निर्दिष्ट एक टेक्स्ट फ़ाइल में दिखता है। –

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