
ข้อความแบบเต็มรูปแบบ geoparsing เป็นไลบรารี Python แยกชื่อสถานที่จากข้อความภาษาอังกฤษเป็นภาษาแก้ไขให้พวกเขาไปยังสถานที่ที่ถูกต้องและส่งคืนพิกัดและข้อมูลทางภูมิศาสตร์ที่มีโครงสร้าง
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
หมายเหตุ : ขอแนะนำ อย่างยิ่ง ให้คุณเรียกใช้ Mordecai ในสภาพแวดล้อมเสมือนจริง ห้องสมุดที่ 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 เพื่อแยกชื่อ placename ออกจากข้อความ
มันใช้ Geonames Gazetteer ในดัชนี Elasticsearch (พร้อมตรรกะที่กำหนดเอง) เพื่อค้นหาพิกัดที่มีศักยภาพของชื่อสถานที่ที่แยกออกมา
มันใช้เครือข่ายประสาทที่นำมาใช้ใน Keras และได้รับการฝึกฝนเกี่ยวกับข้อมูลภาษาอังกฤษที่มีคำอธิบายประกอบใหม่ที่ติดฉลากด้วยอัจฉริยะเพื่ออนุมานประเทศที่ถูกต้องและแก้ไขรายการ gazetteer สำหรับแต่ละชื่อ
ข้อมูลการฝึกอบรมสำหรับทั้งสองรุ่นมีข้อความที่มีลิขสิทธิ์ดังนั้นจึงไม่สามารถแชร์ได้อย่างอิสระ การใช้ Mordecai กับข้อความภาษาที่ไม่ใช่ภาษาอังกฤษจะต้องมีข้อมูลการติดฉลากในภาษาเป้าหมายและการฝึกอบรมใหม่
เมื่อสร้างโมดูล Geoparser() อินสแตนซ์ตัวเลือกต่อไปนี้สามารถเปลี่ยนแปลงได้:
es_hosts : รายการโฮสต์ที่บริการ Geonames Elasticsearch กำลังทำงานอยู่ ค่าเริ่มต้นเป็น ['localhost'] ซึ่งเป็นที่ที่มันทำงานหากคุณใช้การตั้งค่านักเทียบท่าเริ่มต้นที่อธิบายไว้ข้างต้นes_port : พอร์ตอะไรที่บริการ Geonames Elasticsearch กำลังทำงานอยู่ ค่าเริ่มต้นเป็น 9200 ซึ่งเป็นที่ที่การตั้งค่า Docker มีอยู่es_ssl : Elasticsearch ต้องการการเชื่อมต่อ SSL หรือไม่ ค่าเริ่มต้นเป็น Falsees_auth : พารามิเตอร์ HTTP Auth ที่เป็นตัวเลือกที่จะใช้กับ ES หากมีให้ควรเป็นสองเท่าของ (user, password)country_confidence : ตั้งค่าความเชื่อมั่นของประเทศด้านล่างซึ่งจะไม่มีการส่งมอบตำแหน่งทางภูมิศาสตร์ ถ้ามันต่ำจริงๆโมเดลอาจผิดและจะส่งคืนผลลัพธ์แปลก ๆ ค่าเริ่มต้นเป็น 0.6verbose : ส่งคืนคุณสมบัติทั้งหมดที่ใช้ในรูปแบบการเลือกประเทศหรือไม่? ค่าเริ่มต้นเป็น Falsethreads : ไม่ว่าจะใช้เธรดเพื่อทำการสืบค้นแบบขนานไปยังฐานข้อมูล 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 เป็น 1,000 สิ่งนี้จะใช้หน่วยความจำมากขึ้น แต่จะเพิ่มความเร็วในการแยกวิเคราะห์
Mordecai รวมถึงการทดสอบหน่วย ในการเรียกใช้การทดสอบ cd ลงในไดเรกทอรี mordecai และเรียกใช้:
pytest
การทดสอบจำเป็นต้องมีการเข้าถึงบริการยืดหยุ่น/geonames เพื่อให้เสร็จสมบูรณ์ การทดสอบกำลังล้มเหลวใน Travisci ด้วย segfault ที่ไม่ได้อธิบาย แต่ทำงานได้ดีในท้องถิ่น Mordecai ได้รับการทดสอบกับ Python 3 เท่านั้น
Verion ก่อนหน้าของซอฟต์แวร์นี้ได้รับการบริจาคให้กับ Open Event Data Alliance โดย Caerus Associates ดูรุ่น Leases หรือสาขา Legacy-Docker สำหรับปี 2015-2016 และรุ่นการผลิตปี 2016-2017 ของ Mordecai
งานนี้ได้รับการสนับสนุนบางส่วนจากโครงการ XDATA ของ DARPA ห้องปฏิบัติการวิจัยกองทัพสหรัฐฯและสำนักงานวิจัยกองทัพสหรัฐฯผ่าน Minerva Initiative ภายใต้หมายเลขทุน W911NF-13-0332 และมูลนิธิวิทยาศาสตร์แห่งชาติภายใต้หมายเลขรางวัล SBE-SMA-1539302 ความคิดเห็นการค้นพบและข้อสรุปหรือคำแนะนำที่แสดงในเนื้อหานี้เป็นของผู้เขียนและไม่จำเป็นต้องสะท้อนมุมมองของ DARPA, ARO, Minerva, NSF หรือรัฐบาลสหรัฐฯ
ยินดีต้อนรับการมีส่วนร่วมผ่านคำขอดึง โปรดตรวจสอบให้แน่ใจว่าการเปลี่ยนแปลงผ่านการทดสอบหน่วย ข้อบกพร่องและปัญหาใด ๆ สามารถรายงานได้ในหน้าปัญหาของ repo