दिलचस्प पोस्ट
जावा में निरंतर HttpURL कनेक्शन ओएस एक्स फ्रेमवर्क लाइब्रेरी लोड नहीं हुई: 'इमेज नहीं मिली' पायथन की sys.path कहाँ से प्रारंभ हुआ है? MVC में मानक डेटाटैबल्स प्रदर्शित करना MySQL – तालिकाओं के बीच 2 अलग-अलग डेटाबेस में शामिल हो? केपीपीएचपी 2.0 – कस्टम त्रुटि पेज कैसे बनाएं? वहाँ एक तरह से asp.net परियोजना फ़ाइल में सामग्री फ़ाइलों को स्वचालित रूप से शामिल है? 403 जावा के साथ निषिद्ध लेकिन वेब ब्राउज़र नहीं? PHP के भीतर से एसएफटीपी मैं एक सर्वरसेकेट को () विधि को कैसे बाधित कर सकता हूं? एंड्रॉइड पर प्रोग्राम प्रोग्राम स्थापित करें होमब्रे ने ओपनएसएसएल को लिंक करने से इंकार कर दिया QML और सी + + छवि अंतर क्यों कहते हैं कि HTTP एक स्टेटलेस प्रोटोकॉल है? परस्पर विरोधी निष्पादन योग्य / पथ के साथ Popen

पायथन – क्या मैं यूनिकोड स्ट्रिंग भाषा कोड का पता लगा सकता हूँ?

मुझे ऐसी स्थिति का सामना करना पड़ रहा है जहां मैं पाठ की एक स्ट्रिंग पढ़ रहा हूं और मुझे भाषा कोड (एन, डी, एफआर, एसपी, आदि) का पता लगाना है। क्या अजगर में ऐसा करने का एक आसान तरीका है? धन्यवाद।

वेब के समाधान से एकत्रित समाधान "पायथन – क्या मैं यूनिकोड स्ट्रिंग भाषा कोड का पता लगा सकता हूँ?"

यदि आपको उपयोगकर्ता की प्रतिक्रिया के जवाब में भाषा का पता लगाना है, तो आप Google AJAX भाषा एपीआई का उपयोग कर सकते हैं:

#!/usr/bin/env python import json import urllib, urllib2 def detect_language(text, userip=None, referrer="http://stackoverflow.com/q/4545977/4279", api_key=None): query = {'q': text.encode('utf-8') if isinstance(text, unicode) else text} if userip: query.update(userip=userip) if api_key: query.update(key=api_key) url = 'https://ajax.googleapis.com/ajax/services/language/detect?v=1.0&%s'%( urllib.urlencode(query)) request = urllib2.Request(url, None, headers=dict(Referer=referrer)) d = json.load(urllib2.urlopen(request)) if d['responseStatus'] != 200 or u'error' in d['responseData']: raise IOError(d) return d['responseData']['language'] print detect_language("Python - can I detect unicode string language code?") 

उत्पादन

 en 

Google अनुवाद एपीआई v2

डिफ़ॉल्ट सीमा 100000 वर्ण / दिन (एक समय में 5000 से अधिक नहीं)

 #!/usr/bin/env python # -*- coding: utf-8 -*- import json import urllib, urllib2 from operator import itemgetter def detect_language_v2(chunks, api_key): """ chunks: either string or sequence of strings Return list of corresponding language codes """ if isinstance(chunks, basestring): chunks = [chunks] url = 'https://www.googleapis.com/language/translate/v2' data = urllib.urlencode(dict( q=[t.encode('utf-8') if isinstance(t, unicode) else t for t in chunks], key=api_key, target="en"), doseq=1) # the request length MUST be < 5000 if len(data) > 5000: raise ValueError("request is too long, see " "http://code.google.com/apis/language/translate/terms.html") #NOTE: use POST to allow more than 2K characters request = urllib2.Request(url, data, headers={'X-HTTP-Method-Override': 'GET'}) d = json.load(urllib2.urlopen(request)) if u'error' in d: raise IOError(d) return map(itemgetter('detectedSourceLanguage'), d['data']['translations']) 

अब आप एक भाषा का स्पष्ट रूप से पता लगाने का अनुरोध कर सकते हैं :

 def detect_language_v2(chunks, api_key): """ chunks: either string or sequence of strings Return list of corresponding language codes """ if isinstance(chunks, basestring): chunks = [chunks] url = 'https://www.googleapis.com/language/translate/v2/detect' data = urllib.urlencode(dict( q=[t.encode('utf-8') if isinstance(t, unicode) else t for t in chunks], key=api_key), doseq=True) # the request length MUST be < 5000 if len(data) > 5000: raise ValueError("request is too long, see " "http://code.google.com/apis/language/translate/terms.html") #NOTE: use POST to allow more than 2K characters request = urllib2.Request(url, data, headers={'X-HTTP-Method-Override': 'GET'}) d = json.load(urllib2.urlopen(request)) return [sorted(L, key=itemgetter('confidence'))[-1]['language'] for L in d['data']['detections']] 

उदाहरण:

 print detect_language_v2( ["Python - can I detect unicode string language code?", u"матрёшка", u"打水"], api_key=open('api_key.txt').read().strip()) 

उत्पादन

 [u'en', u'ru', u'zh-CN'] 

अनुमान-भाषा पर नज़र डालें:

यूनिकोड (यूटीएफ -8) पाठ की प्राकृतिक भाषा को निर्धारित करने का प्रयास

लेकिन जैसा कि नाम कहता है, यह भाषा का अनुमान लगाता है। आप 100% सही परिणाम की उम्मीद नहीं कर सकते।

विचारों के लिए पायथन का प्रयोग करके प्राकृतिक भाषा टूलकिट और स्वचालित भाषा पहचान देखें ।

मैं जानना चाहूंगा कि क्या बेयसियन फ़िल्टर भाषा को सही कह सकता है लेकिन मैं अभी अवधारणा का सबूत नहीं लिख सकता हूं।

मेरे मामले में मुझे केवल दो भाषाओं को निर्धारित करने की ज़रूरत है, इसलिए मैं सिर्फ पहले अक्षर की जांच करता हूं:

 import unicodedata def is_greek(term): return 'GREEK' in unicodedata.name(term.strip()[0]) def is_hebrew(term): return 'HEBREW' in unicodedata.name(term.strip()[0]) 

यहां एक उपयोगी लेख से पता चलता है कि अजगर में भाषा का पता लगाने के लिए सीएलडी नामक इस खुले स्रोत का सबसे अच्छा शर्त है।

लेख 3 समाधानों के बीच की गति और सटीकता की तुलना दर्शाता है:

  1. भाषा-पहचान या इसके अजगर पोर्ट लांगाडेट
  2. टीका
  3. क्रोमियम भाषा जांच (सीएलडी)

मैंने अपना समय langdetect साथ langdetect अब मैं langdetect स्विच कर रहा हूं जो langdetect तुलना में 16x तेज है और 98.8% शुद्धता है

Universal Encoding Detector को फ़ायरफ़ॉक्स से पायथन के chardet मॉड्यूल के एक पोर्ट का प्रयास करें।

यदि आपके पास केवल संभावित भाषाओं की सीमित संख्या है, तो आप प्रत्येक भाषा के शब्दकोशों का एक सेट (संभवतः केवल सबसे आम शब्दों सहित) का उपयोग कर सकते हैं और फिर शब्दकोषों के खिलाफ अपने इनपुट में शब्दों की जांच कर सकते हैं