
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에는 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을 추출합니다.
Elasticsearch Index (일부 사용자 정의 논리 포함)에서 Geonames Gazetteer를 사용하여 추출 된 장소 이름의 잠재적 좌표를 찾습니다.
Keras에서 구현 된 신경망을 사용하고 Prodigy로 표시된 새로운 주석이 달린 영어 데이터에 대해 훈련하여 올바른 국가를 유추하고 각각의 자료에 대한 올바른 가제트 항목을 사용합니다.
두 모델의 교육 데이터에는 저작권이있는 텍스트가 포함되어 있으므로 자유롭게 공유 할 수 없습니다. 영어가 아닌 언어 텍스트에 Mordecai를 적용하려면 대상 언어 및 재교육의 라벨링 데이터가 필요합니다.
Geoparser() 모듈을 인스턴스화 할 때 다음 옵션을 변경할 수 있습니다.
es_hosts : Geonames Elasticsearch Service가 실행중인 호스트 목록. ['localhost'] 로 기본값은 위에서 설명한 기본 Docker 설정을 사용하는 경우 실행됩니다.es_port : Geonames Elasticsearch Service가 진행되는 포트 Docker 설정이있는 9200 으로 기본값es_ssl : elasticsearch에 SSL 연결이 필요한지 여부. 기본값으로 False .es_auth : ES와 함께 사용할 HTTP AUTH 매개 변수 옵션. 제공된 경우 (user, password) 의 2 튜플이어야합니다.country_confidence : 지리적 위치가 반환되지 않을 국가 모델 신뢰를 설정하십시오. 실제로 낮다면 모델이 잘못되었고 이상한 결과를 반환 할 것입니다. 기본값은 0.6 입니다.verbose : 국가 선택 모델에 사용 된 모든 기능을 반환합니까? 기본값으로 False .threads : 스레드를 사용하여 Elasticsearch 데이터베이스에 병렬 쿼리를 만들지 여부. 기본값은 True 에서 ~ 6 배 속도를 제공합니다. geoparse 기본 엔드 포인트이며 대부분의 사용자가 필요로하는 유일한 엔드 포인트입니다. 다른 주로 내부의 다른 방법은 어떤 경우에는 유용 할 수 있습니다.
lookup_city 도시 이름, 국가 및 (선택적으로) ADM1/State/Goveraling을 취하며 규칙 기반 조회를 수행합니다.infer_country 문서를 작성하고 각각에 가장 가능성이 높은 국가를 추론하려고 시도합니다.query_geonames 및 query_geonames_country Elasticsearch에서 Geonames를 검색하는 데 사용할 수 있습니다._feature 접두사가있는 메소드는 텍스트에서 국가 선택 기능을 계산하는 내부 방법입니다. batch_geoparse 문서 목록을 가져 와서 Spacy의 nlp.pipe 메소드를 사용하여 NLP 단계에서보다 효율적으로 처리합니다.
대형 기계의 고급 사용자는 lru_cache 매개 변수를 250에서 1000으로 증가시킬 수 있습니다. 이는 더 많은 메모리를 사용하지만 구문 분석 속도를 증가시킵니다.
Mordecai에는 단위 테스트가 포함됩니다. 테스트를 실행하려면 mordecai 디렉토리로 cd 사용하여 실행하십시오.
pytest
테스트는 달리기 탄성/Geonames 서비스에 대한 액세스가 필요합니다. 테스트는 현재 설명 할 수없는 segfault로 Travisci에서 실패하고 있지만 로컬에서 잘 작동합니다. Mordecai는 Python 3으로 만 테스트되었습니다.
이 소프트웨어의 초기 Verion은 Caerus Associates가 Open Event Data Alliance에 기부했습니다. 2015-2016 및 2016-2017 년 Mordecai의 릴리스 또는 레거시 도커 지점을 참조하십시오.
이 작업은 부여 번호 W911NF-13-0332에 따라 Minerva 이니셔티브를 통해 DARPA의 XDATA 프로그램, 미 육군 연구소 및 미 육군 연구소와 수상 번호 SBE-SMA-1539302에 따라 National Science Foundation이 부분적으로 자금을 지원했습니다. 이 자료에 표현 된 모든 의견, 발견 및 결론 또는 권장 사항은 저자의 의견이며 반드시 DARPA, ARO, MINERVA, NSF 또는 미국 정부의 견해를 반영하지는 않습니다.
풀 요청을 통한 기부금을 환영합니다. 변경 사항이 단위 테스트를 통과했는지 확인하십시오. Repo의 문제 페이지에서 모든 버그 및 문제 가보고 될 수 있습니다.