2010-01-03 5 views
7

मैं वर्तमान में मेल का एक समूह पार्स कर रहा हूं और शब्दों और अन्य रोचक टोकन को मेल से बाहर करना चाहता हूं (यहां तक ​​कि वर्तनी त्रुटियों या अक्षरों और अक्षरों के संयोजन के साथ, जैसे "ज़ेबरा 21" या "ग्राहक 242")। लेकिन मैं कैसे जान सकता हूं कि "0013lCnUieIquYjSuIA" और "anr5Brru2lLngOiEAVk1BTjN" शब्द नहीं हैं और प्रासंगिक नहीं हैं? शब्दों को निकालने और टोकन को छोड़ने के लिए जो त्रुटियों को एन्कोडिंग करते हैं या पीजीपी हस्ताक्षर के हिस्सों या जो कुछ भी हमें मेल में मिलता है और पता है कि हम उन लोगों में कभी दिलचस्पी नहीं लेंगे?गैर-शब्द टोकन वाले टेक्स्ट में शब्दों को कैसे पहचानें?

उत्तर

3

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

  • शब्द एक पूंजी पत्र के साथ शुरू या सभी बड़े अक्षरों हो सकता है लेकिन आप और अधिक हो, तो कहते हैं की तुलना में, 2 बड़े अक्षरों का है और एक के अंदर अधिक से अधिक 2 छोटे अक्षरों शब्द, यह एक शब्द
  • नहीं है आप शब्द के अंदर नंबर हैं, तो यह एक शब्द
  • अगर यह लंबे समय तक की तुलना में कहना है, 20 वर्ण

कोई जादू चाल है नहीं है। आपको यह तय करने की ज़रूरत है कि आप नियम क्या चाहते हैं और उन्हें कैसे करें।

अल वैकल्पिक तरीका किसी प्रकार की छिपी मार्कोव-मॉडल प्रणाली को शब्दों की तरह लगने वाली चीजों को पहचानने के लिए प्रशिक्षित करना है, लेकिन मुझे लगता है कि यह आप जो करना चाहते हैं उसके लिए एक ओवरकिल है।

+0

सलाह के लिए धन्यवाद, मैंने इस तरह से शुरू किया, मैंने एनआरलेटर टोडिगिट चेंज और एनआरएलओवर टॉपर चैनेज की गणना की तुलना में और मैंने वर्तमान में एनआरएलओवर टॉउपर चेनेज के लिए अलग-अलग शब्दों के "स्तर" बनाए हैं <= 1 और NrLetterToDigitChanges <= 1 पहला स्तर है और यदि इसका योग दो 8 से अधिक है यह एक शब्द नहीं है, इसलिए मैं कुछ स्तरों को और परिभाषित कर दूंगा और देखें कि मेरे लिए सबसे अच्छा क्या काम करता है, धन्यवाद – zebra

+1

सुनिश्चित करें कि आप सभ्य दस्तावेज लिखते हैं क्योंकि इन नामों का आकस्मिक पाठक के लिए बहुत कुछ नहीं है। – shoosh

1

हालांकि मैं आम तौर पर shoosh के जवाब से सहमत स्वीकार करता है निर्माण करने के लिए कर सकते हैं, अपने दृष्टिकोण यह आसान प्राप्त करने के लिए बनाता है उच्च याद, लेकिन कम परिशुद्धता, यानी आपको लगभग सभी वास्तविक शब्द मिलेंगे लेकिन बहुत सारे शब्द भी होंगे। यदि शब्द की आपकी परिभाषा बहुत ही सीमित है, तो यह दूसरी तरफ है, लेकिन यह तब भी नहीं है जब आप चाहते हैं तो आप 'zebra123' जैसे मामलों को याद करेंगे।

  1. यह के बारे में अगर आप यह समझ सकते हैं क्या एक ईमेल के कुछ हिस्सों मुख्य पाठ के हैं और जो पीजीपी हस्ताक्षर की तरह पाद हैं worthwile सोच हो सकता है: तो यहाँ कैसे परिशुद्धता में सुधार करने के बारे में कुछ विचार कर रहे हैं। मुझे यकीन है कि कुछ साधारण ह्यूरिस्टिक्स ढूंढना संभव है जो ज्यादातर मामलों से मेल खाते हैं, उदा। एक रेखा के नीचे सबकुछ काट जिसमें केवल '-'-वर्ण' होते हैं।

  2. अपने प्रदर्शन मानदंडों के आधार पर आप यह जांचना चाहेंगे कि कोई शब्द वास्तविक शब्द है या एक साधारण शब्द सूची के विरुद्ध मिलान करके वास्तविक शब्द है या नहीं। वेब पर Englisch शब्दों की काफी विस्तृत सूचियां ढूंढना आसान है, और आप बड़े और साफ टेक्स्ट कॉर्पस से शब्दों को निकालने के द्वारा खुद को संकलित भी कर सकते हैं।

  3. एक व्याख्यात्मक विश्लेषक का उपयोग करके, आप प्रत्येक टोकन को फ़िल्टर कर सकते हैं जिसे अज्ञात के रूप में चिह्नित किया गया है।

  4. कुछ सरल आंकड़े बता सकते हैं कि यह कितना संभव है कि कुछ शब्द है। टोकन जो उच्च आवृत्ति के साथ होते हैं शायद वे शब्द होते हैं। टोकन जो केवल एक बार दिखाई देते हैं या जिनकी संख्या एक निश्चित दहलीज से नीचे है, शायद वे शब्द नहीं हैं। सामान्य वर्तनी त्रुटियों को एक से अधिक बार प्रकट होना चाहिए और असामान्य लोगों को अनदेखा किया जा सकता है।

कुछ अगर ये सुझाव स्पष्ट रूप से 'zebra123' जैसे मामलों के लिए काम नहीं करते हैं। दोबारा, बस शब्दों को अलग करना, या विभाजित करना, चाल संख्याएं चाल कर सकती हैं।

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