
النص الكامل الجغرافي كمكتبة بيثون. استخراج أسماء الأماكن من نص من النص باللغة الإنجليزية ، وحلها إلى المكان الصحيح ، وإعادة إحداثياتها والمعلومات الجغرافية المنظمة.
Mordecai جاهز للترقية! يرجى أخذ استطلاع المستخدم هنا للمساعدة في تشكيل شكل V3.
>>> from mordecai import Geoparser
>>> geo = Geoparser()
>>> geo.geoparse("I traveled from Oxford to Ottawa.")
[{'country_conf': 0.96474487,
'country_predicted': 'GBR',
'geo': {'admin1': 'England',
'country_code3': 'GBR',
'feature_class': 'P',
'feature_code': 'PPLA2',
'geonameid': '2640729',
'lat': '51.75222',
'lon': '-1.25596',
'place_name': 'Oxford'},
'spans': [{'end': 22, 'start': 16}],
'word': 'Oxford'},
{'country_conf': 0.83302397,
'country_predicted': 'CAN',
'geo': {'admin1': 'Ontario',
'country_code3': 'CAN',
'feature_class': 'P',
'feature_code': 'PPLC',
'geonameid': '6094817',
'lat': '45.41117',
'lon': '-75.69812',
'place_name': 'Ottawa'},
'spans': [{'end': 32, 'start': 26}],
'word': 'Ottawa'}]
يتطلب Mordecai خدمة Elasticsearch قيد التشغيل مع Geonames فيه. انظر "التثبيت" أدناه للحصول على التعليمات.
pip install mordecai
ملاحظة : يوصى بشدة بتشغيل مردخاي في بيئة افتراضية. المكتبات التي يعتمد عليها مردخاي ليست دائمًا أحدث الإصدارات واستخدام بيئة افتراضية تمنع من تخفيض المكتبات أو مواجهتها في قضايا أخرى:
python -m venv mordecai-env
source mordecai-env/bin/activate
pip install mordecai
python -m spacy download en_core_web_lg
docker pull elasticsearch:5.5.2
wget https://andrewhalterman.com/files/geonames_index.tar.gz --output-file=wget_log.txt
tar -xzf geonames_index.tar.gz
docker run -d -p 127.0.0.1:9200:9200 -v $(pwd)/geonames_index/:/usr/share/elasticsearch/data elasticsearch:5.5.2
انظر ES-Geonames للحصول على الكود المستخدمة لإنتاج هذا الفهرس.
لتحديث الفهرس ، ما عليك سوى إغلاق الحاوية القديمة ، وإعادة تنزيل الفهرس من S3 ، وإعادة تشغيل الحاوية باستخدام الفهرس الجديد.
إذا كنت تستخدم هذا البرنامج في العمل الأكاديمي ، فيرجى الاستشهاد
@article{halterman2017mordecai,
title={Mordecai: Full Text Geoparsing and Event Geocoding},
author={Halterman, Andrew},
journal={The Journal of Open Source Software},
volume={2},
number={9},
year={2017},
doi={10.21105/joss.00091}
}
يأخذ Mordecai نصًا غير منظم ويعيد المعلومات الجغرافية المنظمة المستخرجة منه.
يستخدم التعرف على الكيان المسمى Spacy لاستخراج أسماء الصياغة من النص.
يستخدم Geonames Gazetteer في فهرس Elasticsearch (مع بعض المنطق المخصص) للعثور على الإحداثيات المحتملة لأسماء الأماكن المستخرجة.
ويستخدم الشبكات العصبية المنفذة في Keras وتدريب على بيانات اللغة الإنجليزية المشروحة الجديدة المسمى مع Prodigy لاستنتاج البلد الصحيح وإدخالات الجريدة الصحيح لكل اسم placename.
تتضمن بيانات التدريب الخاصة بالنموذجين نصًا محميًا بحقوق الطبع والنشر بحيث لا يمكن مشاركته بحرية. يتطلب تطبيق Mordecai على نص اللغة غير الإنجليزية وضع بيانات في اللغة المستهدفة وإعادة التدريب.
عند إنشاء إنشاء وحدة Geoparser() ، يمكن تغيير الخيارات التالية:
es_hosts : قائمة المضيفين حيث تعمل خدمة Geonames Elasticsearch. الإعدادات الافتراضية لـ ['localhost'] ، وهو المكان الذي يتم تشغيله إذا كنت تستخدم إعداد Docker الافتراضي الموضح أعلاه.es_port : ما هو منفذ خدمة Geonames Elasticsearch التي يتم تشغيلها. الافتراضيات إلى 9200 ، وهو المكان الذي يوجد فيه إعداد Dockeres_ssl : ما إذا كان Elasticsearch يتطلب اتصال SSL. الإعدادات الافتراضية إلى False .es_auth : معلمات مصادقة HTTP الاختيارية لاستخدامها مع ES. إذا تم توفيره ، فيجب أن يكون اثنين من (user, password) .country_confidence : قم بتعيين ثقة نموذج البلد الذي لن يتم إرجاعه. إذا كان الأمر منخفضًا حقًا ، فمن المحتمل أن يكون النموذج خاطئًا وسيعود نتائج غريبة. الافتراضات إلى 0.6 .verbose : إرجاع جميع الميزات المستخدمة في نموذج اختيار البلد؟ الإعدادات الافتراضية إلى False .threads : سواء كنت تستخدم مؤشرات الترابط لجعل استعلامات متوازية لقاعدة بيانات Elasticsearch. الافتراضيات إلى True ، والتي تعطي تسريع ~ 6x. geoparse هي نقطة النهاية الأساسية والوحيدة التي سيحتاجها معظم المستخدمين. قد تكون الأساليب الأخرى ، معظمها داخلية ، مفيدة في بعض الحالات:
lookup_city اسم المدينة ، والبلد ، و (اختياريا) ADM1/الدولة/المحافظة ويقوم بإجراء بحث قائم على القواعد للمدينة.infer_country تأخذ وثيقة ومحاولات لاستنتاج البلد الأكثر احتمالا لكل منهما.query_geonames و query_geonames_country لأداء بحث عبر Geonames في Elasticsearch_feature هي طرق داخلية لحساب ميزات اختيار البلد من النص. يأخذ batch_geoparse قائمة من المستندات ويستخدم طريقة nlp.pipe من Spacy لمعالجتها بكفاءة أكبر في خطوة NLP.
يمكن للمستخدمين المتقدمين على الأجهزة الكبيرة زيادة معلمة lru_cache من 250 إلى 1000. هذا سيستخدم المزيد من الذاكرة ولكنه سيزيد من سرعة التحليل.
مردخاي يشمل اختبارات الوحدة. لتشغيل الاختبارات ، cd في دليل mordecai وتشغيله:
pytest
تتطلب الاختبارات الوصول إلى خدمة مرونة/Geonames قيد التشغيل. تفشل الاختبارات حاليًا على Travisci مع segfault غير المبررة ولكنها تعمل بشكل جيد محليًا. تم اختبار مردخاي فقط مع بيثون 3.
تم التبرع في وقت سابق من هذا البرنامج لتحالف بيانات الحدث المفتوح بواسطة Caerus Associates. شاهد الإصدارات أو فرع Docker Legacy لعام 2015-2016 وإصدارات إنتاج 2016-2017 من Mordecai.
تم تمويل هذا العمل جزئيًا من قبل برنامج XDATA الخاص بـ DARPA ، ومختبر أبحاث الجيش الأمريكي ومكتب أبحاث الجيش الأمريكي من خلال مبادرة مينيرفا بموجب رقم المنحة W911NF-13-0332 ، والمؤسسة الوطنية للعلوم تحت رقم الجائزة SBE-SMA-1539302. أي آراء ونتائج واستنتاجات أو توصيات معبر عنها في هذه المادة هي آراء المؤلفين ولا تعكس بالضرورة آراء DARPA أو ARO أو Minerva أو NSF أو حكومة الولايات المتحدة.
المساهمات عبر طلبات السحب موضع ترحيب. يرجى التأكد من أن التغييرات اجتياز اختبارات الوحدة. يمكن الإبلاغ عن أي أخطاء ومشاكل على صفحة قضايا الريبو.