التعرف على التواريخ المكتوبة باللغة الطبيعية باستخدام Python3

نحن في الشركة نقوم بإنشاء خدمة تستخلص الحقائق القانونية من مراسلات العميل والعميل. نشأت هذه الخدمة عن فكرة بسيطة واحدة - قرر زبائني المنتظمون تبسيط عمل المديرين وإنشاء "مولد عقود". المهمة الأولى - لسحب تفاصيل العميل والعميل في العقد ، قررنا بسهولة.

ظهرت فكرة ثانية - للبحث عن التواريخ في المراسلات وإدراجها في الشروط المرجعية والمستندات تلقائيًا.

ومع ذلك ، نادراً ما يكتب الأشخاص التواريخ في المحادثات والمراسلات الفورية حتى تتمكن الخوارزمية من التعرف عليها بسهولة.

"نبدأ الأسبوع المقبل" ، "هذا الجمعة" - إذا كان من السهل نسبياً على المديرين أن يتعلموا كيفية كتابة التواريخ بالتنسيق الصحيح ، فلن تتمكن من تقديم مثل هذه الطلبات على العملاء.

أنا أكتب في python و python جاء على الفور إلى وحدة الإنقاذ NLP-library spaCy * - NER (التعرف على اسم الكيان) التي استردت التواريخ بسهولة من المراسلات مع العملاء الناطقين باللغة الإنجليزية. ونتيجة لذلك ، حصلنا على مجموعة من التواريخ النسبية: "خلال أسبوعين" ، "الجمعة" ، "الجمعة" ، "الظهر" ، "ظهر يوم الأحد".

ولكن كيف تترجم هذه التواريخ إلى كائنات تدركها الخدمة (كائن وقت)؟
بدأت رحلة طويلة في مجال "تحليل التواريخ القابلة للقراءة البشرية". عند مسح البيئة المحيطة ، وجدت فقط ثلاث مكتبات بيثون عملت فورًا وبدون عذاب: هذه هي timefhuman ** و dateparser *** و datefinder ***.

تظهر الصورة مقارنة بين ثلاث مكتبات:

صورة

بشكل عام ، من الواضح أن الإطار الزمني ، غير المدلل للاهتمام ، تبين أنه أكثر ملاءمة ، على الرغم من وجود عدد كبير من الإيجابيات الخاطئة ، مقارنةً بمحلل التاريخ الذي يستخدمه معظم الناس.
أعطى منطقًا مثيرًا للمطورين الذين يقومون بتحليل "الجمعة" المستقبل يوم الجمعة في حالة timefhuman ويوم الجمعة الماضي في dateparser.

بشكل عام ، تبين أن timefhuman كان على قيد الحياة وتم اختياره لمزيد من التطوير واختبار النموذج الأولي.

* spacy.io
** github.com/alvinwan/timefhuman
*** github.com/scrapinghub/dateparser
**** github.com/akoumjian/datefinder

Source: https://habr.com/ru/post/ar449184/


All Articles