मुझे यकीन नहीं है कि मैं ठीक से समझता हूं कि एक टेक्स्ट में स्पेसी नामित एंटाइट्स की पहचान कैसे करती है, और मेरे मामले में विशेष रूप से तिथियां।

मैं एक पाठ दस्तावेज़ में शिक्षा + संबंधित तिथि निकालने की कोशिश कर रहा हूँ। मेरे पास कुछ ऐसा है

text = 'University of A  2019 - 2020
        University of B  2016 - 2019
        College A        2013 - 2016
        College B        2008 - 2013'
doc = nlp(text)
for ent in doc.ents:
     print(ent.text, ent.label_)

जो मुझे आउटपुट के रूप में देता है:

University of A  ORG
University of B  ORG
2016 - 2019      DATE
2013 - 2016      DATE
2008 - 2013      DATE

जैसा कि अपेक्षित था विश्वविद्यालयों को संगठनों के रूप में मान्यता प्राप्त है और मुझे उम्मीद थी कि स्पेस कॉलेजों को मान्यता नहीं देगा क्योंकि यह विश्वविद्यालय के नामों से कम स्पष्ट है। हालाँकि मुझे समझ में नहीं आता कि मैंने पहली तारीख क्यों खो दी लेकिन बाकी सभी ठीक काम करते हैं।

मैंने एक और पाठ पर कोशिश की जो ऐसा कुछ था:

1997 : any text
1998 : any text
1999 : any text
...
2018 : any text

और यहां सभी तिथियां जहां 2013 और 2018 को छोड़कर मान्यता प्राप्त हैं, हालांकि पंक्तियों का प्रारूप अन्य सभी के समान है।

क्या तारीखों को बेहतर ढंग से पहचानने के लिए स्पैसी को प्रशिक्षित करने का कोई तरीका है या क्या मुझे किसी अन्य उपकरण का उपयोग करना चाहिए? मैं पहले से ही उसी कार्यक्रम के अन्य भागों के लिए स्पेसी का उपयोग कर रहा हूँ। मैं अभी रेगेक्स का उपयोग नहीं कर रहा हूं क्योंकि तिथियां कई अलग-अलग प्रारूपों में हो सकती हैं (केवल वर्ष, शुरुआत वर्ष - अंत वर्ष, कभी-कभी महीने और दिन भी आदि)

1
Tristan Catteeuw 8 फरवरी 2021, 12:40
1
आप किस मॉडल का उपयोग कर रहे हैं? मेरे पास [('2019 - 2020', 'DATE'), ('2016 - 2019', 'DATE'), ('2013 - 2016', 'DATE'), ('2008 - 2013', 'DATE')] आउटपुट के रूप में nlp = spacy.load('en_core_web_trf') है
 – 
Wiktor Stribiżew
8 फरवरी 2021, 12:49
मैं पाठ की भाषा के आधार पर सशर्त रूप से "en_core_web_sm" या "fr_core_news_sm" का उपयोग कर रहा हूं, क्योंकि यह फ़्रेंच या अंग्रेज़ी हो सकता है। मैं स्पेसी 2.3.4 का उपयोग कर रहा हूँ शायद इसीलिए?
 – 
Tristan Catteeuw
8 फरवरी 2021, 12:56
1
हां, और मुझे यकीन नहीं है कि स्पेसी 3.0.1 के लिए एक fr_core_news_sm मॉडल है। अधिक सुविधा संपन्न मॉडल जैसे ..._lg के साथ प्रयास करें। उदाहरण के लिए spacy.load('en_core_web_lg')
 – 
Wiktor Stribiżew
8 फरवरी 2021, 13:10
स्पासी 3.0.1 के लिए एक spacy.load (फ्रेंच के लिए 'fr_dep_news_trf') प्रतीत होता है, इसलिए मैं अपग्रेड कर सकता हूं और फिर जांच सकता हूं कि यह बेहतर काम करता है या नहीं
 – 
Tristan Catteeuw
8 फरवरी 2021, 13:24
हां, कृपया जांच लें क्योंकि इससे समस्या का समाधान हो सकता है।
 – 
Wiktor Stribiżew
8 फरवरी 2021, 13:37

1 उत्तर

सबसे बढ़िया उत्तर

आपको अधिक सुविधा संपन्न मॉडल प्रकार की आवश्यकता है, जिसमें _md या _lg प्रत्यय के साथ 2.x और _trf के साथ spacy 3.x हो।

उदाहरण के लिए, आप स्थापित कर सकते हैं

python -m spacy download en_core_web_trf

फिर, आप उपयोग कर सकते हैं

import spacy
nlp = spacy.load('en_core_web_trf')
text = '''University of A  2019 - 2020
         University of B  2016 - 2019
         College A        2013 - 2016
         College B        2008 - 2013'''
doc = nlp(text)
for ent in doc.ents:
    print(ent.text, ent.label_)

आउटपुट:

2019 - 2020 DATE
2016 - 2019 DATE
2013 - 2016 DATE
2008 - 2013 DATE
1
Wiktor Stribiżew 8 फरवरी 2021, 14:16