2016-01-15 10 views
7

मैं वर्तमान में भाषा प्रसंस्करण के लिए एनएलटीके का उपयोग कर रहा हूं, लेकिन मुझे वाक्य टोकनिंग की समस्या का सामना करना पड़ा है।संक्षेप में एनएलटीके के वाक्य टोकनेज़र विभाजन से कैसे बचें?

यहां समस्या है: मान लें कि मेरे पास एक वाक्य है: "चित्र 2 एक यू.एस.ए. मानचित्र दिखाता है।" जब मैं punkt tokenizer उपयोग करते हैं, मेरी कोड इस तरह दिखता है:

['Fig. 2 shows a U.S.A.', 'map.'] 

tokenizer संक्षिप्त नाम "संयुक्त राज्य अमेरिका" पता नहीं लगा सकता है, लेकिन यह "अंजीर" पर काम किया:

from nltk.tokenize.punkt import PunktSentenceTokenizer, PunktParameters 
punkt_param = PunktParameters() 
abbreviation = ['U.S.A', 'fig'] 
punkt_param.abbrev_types = set(abbreviation) 
tokenizer = PunktSentenceTokenizer(punkt_param) 
tokenizer.tokenize('Fig. 2 shows a U.S.A. map.') 

यह इस रिटर्न । अब जब मैं डिफ़ॉल्ट का उपयोग tokenizer NLTK प्रदान करता है:

import nltk 
nltk.tokenize.sent_tokenize('Fig. 2 shows a U.S.A. map.') 

इस बार मैं मिलता है:

['Fig.', '2 shows a U.S.A. map.'] 

यह अधिक आम "संयुक्त राज्य अमेरिका" पहचानता लेकिन "अंजीर" देखने में विफल रहता है!

मैं इन दो तरीकों को कैसे जोड़ सकता हूं? मैं डिफ़ॉल्ट संक्षेप विकल्पों का उपयोग करना चाहता हूं साथ ही साथ अपने स्वयं के संक्षेप जोड़ना चाहता हूं।

उत्तर

6

मैं संक्षिप्त रूपों में u.s.a के लिए लोअर केस लगता सूची ठीक आप इस प्रयास करें के लिए काम करेंगे,

from nltk.tokenize.punkt import PunktSentenceTokenizer, PunktParameters 
punkt_param = PunktParameters() 
abbreviation = ['u.s.a', 'fig'] 
punkt_param.abbrev_types = set(abbreviation) 
tokenizer = PunktSentenceTokenizer(punkt_param) 
tokenizer.tokenize('Fig. 2 shows a U.S.A. map.') 

यह मेरे लिए इस रिटर्न:

['Fig. 2 shows a U.S.A. map.'] 
+0

वाह बहुत बहुत धन्यवाद! यह वास्तव में सहायक है! –

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