2015-02-23 3 views
12

एनएलटीके का डिफ़ॉल्ट टोकननाइज़र, nltk.word_tokenizer, चेन दो टोकनकार, एक वाक्य टोकननाइज़र और फिर एक शब्द टोकनेज़र जो वाक्य पर चलता है। यह बॉक्स से बाहर एक बहुत अच्छी नौकरी करता है।स्ट्रिंग के बजाए स्पैन प्राप्त करने के लिए मैं एनएलटीके के डिफ़ॉल्ट टोकनेज़र का उपयोग कैसे करूं?

>>> nltk.word_tokenize("(Dr. Edwards is my friend.)") 
['(', 'Dr.', 'Edwards', 'is', 'my', 'friend', '.', ')'] 

मैं छोड़कर यह बजाय मूल स्ट्रिंग में ऑफसेट की tuples लौट स्ट्रिंग टोकन की है करने के लिए यह एक ही एल्गोरिथ्म का उपयोग करना चाहते हैं।

ऑफसेट द्वारा मेरा मतलब 2-प्लेस है जो मूल स्ट्रिंग में इंडेक्स के रूप में कार्य कर सकता है। [0: 1] क्योंकि रों उदाहरण यहाँ के लिए मैं

>>> s = "(Dr. Edwards is my friend.)" 
>>> s.token_spans() 
[(0,1), (1,4), (5,12), (13,15), (16,18), (19,25), (25,26), (26,27)] 

होगा "(" है, रों [1: 4]। "डॉक्टर" इसके आगे वहाँ एक भी NLTK है और

है फोन है कि इस करता है, या मैं अपने ही ऑफसेट गणित लिखने के लिए है?

+0

"ऑफ़सेट" से आपका क्या मतलब है। शायद सूची में स्ट्रिंग इंडेक्स? i.e: 'डॉ' इंडेक्स 1 है .. – felipsmartins

+0

ऑफसेट द्वारा मेरा मतलब क्या है इसका स्पष्टीकरण करने के लिए संपादित किया गया। –

उत्तर

7

हाँ, सबसे Tokenizers nltk में एक विधि कहा जाता है span_tokenize लेकिन दुर्भाग्य से Tokenizer प्रयोग कर रहे हैं नहीं करता है।

डिफ़ॉल्ट रूप से word_tokenize फ़ंक्शन uses a TreebankWordTokenizerTreebankWordTokenizer इम्प्लायर ईमेंटेशन में काफी मजबूत implementation है लेकिन वर्तमान में इसमें एक महत्वपूर्ण विधि, span_tokenize के लिए कार्यान्वयन की कमी है।

मुझे का TreebankWordTokenizer के लिए कोई कार्यान्वयन नहीं दिखाई देता है, इसलिए मुझे विश्वास है कि आपको अपना स्वयं का कार्यान्वयन करने की आवश्यकता होगी। उप-वर्गीकरण TokenizerI इस प्रक्रिया को थोड़ा कम जटिल बना सकता है।

आपको span_tokenizePunktWordTokenizer की विधि starting point के रूप में उपयोगी हो सकती है।

मुझे आशा है कि यह जानकारी मदद करेगी।

+1

मैंने यहां एक तीन-सेकंड संस्करण को मार दिया: https://gist.github.com/ckoppelman/c93e4192d9f189fba590e095258f8f33। किसी भी मदद या सलाह की सराहना की है – Charles

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

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