मामले के आधार पर, आप निम्नलिखित विधियों में से किसी एक का उपयोग करने में रुचि रख सकते हैं:
विधि 0: किसी API या लाइब्रेरी का उपयोग करें
आमतौर पर, इन पुस्तकालयों के साथ कुछ समस्याएं हैं क्योंकि उनमें से कुछ छोटे ग्रंथों के लिए सटीक नहीं हैं, कुछ भाषाएं गायब हैं, धीमी हैं, इंटरनेट कनेक्शन की आवश्यकता है, गैर-मुक्त हैं, ... लेकिन आम तौर पर बोलना, वे सबसे अधिक आवश्यकताओं के अनुरूप होंगे ।
विधि 1: भाषा मॉडल
एक भाषा मॉडल हमें शब्दों के अनुक्रम की संभावना देता है। यह महत्वपूर्ण है क्योंकि यह हमें किसी पाठ की भाषा का दृढ़ता से पता लगाने की अनुमति देता है, यहां तक कि जब पाठ में अन्य भाषाओं के शब्द भी शामिल हैं (जैसे: "'होला' का अर्थ है 'स्पेनिश में हैलो' )।
आप अपने पाठ को स्कोर करने के लिए एन भाषा मॉडल (प्रति भाषा एक) का उपयोग कर सकते हैं। पता लगाई गई भाषा उस मॉडल की भाषा होगी जिसने आपको उच्चतम स्कोर दिया था।
यदि आप इसके लिए एक सरल भाषा मॉडल बनाना चाहते हैं, तो मैं 1-ग्राम के लिए जाऊंगा। ऐसा करने के लिए, आपको केवल एक बड़े पाठ से प्रत्येक शब्द की संख्या को गिनना होगा (उदाहरण के लिए "X" भाषा में विकिपीडिया कॉर्पस)।
फिर, किसी शब्द की संभावना विश्लेषण की कुल संख्या (सभी आवृत्तियों का योग) से विभाजित इसकी आवृत्ति होगी।
the 23135851162
of 13151942776
and 12997637966
to 12136980858
a 9081174698
in 8469404971
for 5933321709
...
=> P("'Hola' means 'hello' in spanish") = P("hola") * P("means") * P("hello") * P("in") * P("spanish")
यदि पता लगाने के लिए पाठ काफी बड़ा है, तो मैं एन यादृच्छिक शब्दों का नमूना लेने की सलाह देता हूं और फिर फ्लोटिंग-पॉइंट सटीक समस्याओं से बचने के लिए गुणन के योग का उपयोग करता हूं।
P(s) = 0.03 * 0.01 * 0.014 = 0.0000042
P(s) = log10(0.03) + log10(0.01) + log10(0.014) = -5.376
विधि 2: अंतर्वर्ती सेट
एक सरल तरीका यह भी है कि शीर्ष M सबसे अक्सर शब्दों के साथ N सेट (प्रति भाषा) तैयार किया जाए। फिर प्रत्येक सेट के साथ अपने पाठ को इंटरसेक्ट करें। सबसे अधिक संख्या वाले चौराहों के साथ सेट आपकी भाषा का पता लगाया जाएगा।
spanish_set = {"de", "hola", "la", "casa",...}
english_set = {"of", "hello", "the", "house",...}
czech_set = {"z", "ahoj", "závěrky", "dům",...}
...
text_set = {"hola", "means", "hello", "in", "spanish"}
spanish_votes = text_set.intersection(spanish_set)
english_votes = text_set.intersection(english_set)
czech_votes = text_set.intersection(czech_set)
...
विधि 3: ज़िप संपीड़न
यह किसी भी चीज़ की तुलना में अधिक उत्सुकता है, लेकिन यहां यह जाता है ... आप अपने पाठ (जैसे LZ77) को संपीड़ित कर सकते हैं और फिर एक संदर्भ संपीड़ित पाठ (लक्ष्य भाषा) के संबंध में ज़िप-दूरी को माप सकते हैं। व्यक्तिगत रूप से, मुझे यह पसंद नहीं आया क्योंकि यह धीमी, कम सटीक और अन्य विधियों की तुलना में कम वर्णनात्मक है। फिर भी, इस पद्धति के लिए दिलचस्प अनुप्रयोग हो सकते हैं। अधिक पढ़ने के लिए: भाषा के पेड़ और ज़िपिंग