WebVectors는 웹을 통해 벡터 의미 모델(특히 word2vec 또는 ELMo 와 같은 예측 기반 단어 임베딩)을 제공하여 일반 대중에게 해당 기능을 쉽게 보여줄 수 있는 툴킷입니다. Python >= 3.6이 필요하며 내부적으로 Flask , Gensim 및 simple_elmo를 사용합니다.
작업 데모:
이 서비스는 WSGI 애플리케이션으로 Apache 웹 서버에 통합되거나 Gunicorn을 사용하여 독립형 서버로 실행될 수 있습니다(후자 옵션 권장).
Apache 구성 파일에 다음 줄을 추가합니다.
WSGIScriptAlias /WEBNAME "PATH/syn.wsgi"
, 여기서 WEBNAME 은 서버 루트( http://example.com/webvectors
의 경우 웹벡터)를 기준으로 한 서비스의 별칭이고 PATH 는 WebVectors 디렉터리에 대한 파일 시스템 경로입니다.
WebVectors 디렉터리의 모든 *.wsgi
및 *.py
파일에서 config.read('webvectors.cfg')
문자열의 webvectors.cfg
webvectors.cfg
파일의 절대 경로로 바꿉니다.
webvectors.cfg
구성 파일을 사용하여 서비스를 설정합니다. 가장 중요한 설정은 다음과 같습니다.
태그
모델은 단어에 할당된 임의의 태그를 사용할 수 있습니다(예: boot_NOUN 과 같은 품사 태그). 모델이 태그가 있는 단어에 대해 훈련된 경우 webvectors.cfg
( use_tags
변수)에서 이를 켜야 합니다. 그런 다음 WebVectors를 사용 하면 사용자가 태그별로 쿼리를 필터링할 수 있습니다. 또한 허용된 태그 목록( webvectors.cfg
의 tags_list
변수)과 사용자에게 표시될 태그 목록( tags.tsv
파일)을 지정해야 합니다.
모델 데몬
WebVectors는 백그라운드에서 실행되고 실제로 모든 임베딩 관련 작업을 처리하는 데몬을 사용합니다. 원한다면 다른 컴퓨터에서도 실행할 수 있습니다. 따라서 webvectors.cfg
에서 이 데몬이 수신할 host
와 port
지정해야 합니다. 그런 다음 실제 데몬 스크립트 word2vec_server.py
를 시작합니다. 모델을 로드하고 청취 소켓을 엽니다. 이 데몬은 영구적으로 활성화되어야 하므로 screen 등을 사용하여 실행할 수 있습니다.
모델
사용하려는 모델 목록은 models.tsv
파일에 정의되어 있습니다. 탭으로 구분된 필드로 구성됩니다.
모델 식별자는 웹 페이지의 확인란 이름으로 사용되며, strings.csv
파일에서 모델 이름을 표시할 때 동일한 식별자를 사용하는 것도 중요합니다. 모델의 언어는 lemmatizer 함수에 전달되는 인수로 사용되며 언어 이름이 포함된 간단한 문자열입니다(예: "english", "russian", "french").
모델은 현재 4가지 형식이 될 수 있습니다.
WebVectors는 자동으로 모델 형식을 감지하고 모든 모델을 메모리에 로드합니다. 사용자는 로드된 모델 중에서 선택할 수 있습니다.
현지화
WebVectors는 strings.csv
파일을 현지화된 문자열의 소스로 사용합니다. 3개의 필드가 있는 쉼표로 구분된 파일입니다.
기본적으로 언어 1은 영어이고 언어 2는 러시아어입니다. 이는 webvectors.cfg
에서 변경할 수 있습니다.
템플릿
사용자에게 표시되는 실제 웹페이지는 templates/*.html
파일에 정의되어 있습니다. 원하는 대로 조정하세요. 기본 메뉴는 base.html
에 정의되어 있습니다.
통계 파일
애플리케이션이 정적 파일(부트스트랩 및 js 스크립트)을 찾지 못하는 경우 run_syn.py
에서 static_url_path
변수를 편집하세요. 거기에 data
폴더의 절대 경로를 입력해야 합니다.
쿼리 힌트
쿼리 힌트가 작동하도록 하려면 고유한 힌트 목록(JSON 형식)을 컴파일하는 것을 잊지 마십시오. 이러한 목록의 예는 data/example_vocab.json
에 나와 있습니다. 이 목록의 실제 URL은 data/hint.js
에 명시되어야 합니다.
WebVector 실행
작업 흐름에 따라 모든 설정을 수정하고 템플릿이 적합한지 확인한 후 모델 데몬을 시작하면 실제로 서비스를 시작할 준비가 된 것입니다. Apache 통합을 사용하는 경우 Apache를 다시 시작하거나 다시 로드하면 됩니다. 독립 실행형 옵션을 선호하는 경우 프로젝트의 루트 디렉터리에서 다음 명령을 실행합니다.
gunicorn run_syn:app_syn -b address:port
여기서 address 는 서비스가 활성화되어야 하는 주소(localhost일 수 있음)이고 port는 수신할 포트(예: 9999)입니다.
상황화된 임베딩 지원 상황화된 임베딩 모델에 대한 지원을 켤 수 있습니다(현재 ELMo가 지원됨). 그렇게 하려면:
simple_elmo 패키지 설치
원하는 ELMo 모델을 다운로드하세요(예: 여기).
ELMo 모델과 참조 자료를 사용하여 제한된 단어 집합(예: 10,000개)에 대해 word2vec
형식의 유형 기반 프로젝션을 만듭니다. 이를 위해 우리가 제공하는 extract_elmo.py
스크립트를 사용하십시오:
python3 extract_elmo.py --input CORPUS --elmo PATH_TO_ELMO --outfile TYPE_EMBEDDING_FILE --vocab WORD_SET_FILE
제공된 코퍼스에 대해 ELMo 모델을 실행하고 단어 세트의 각 단어에 대해 정적 평균 유형 임베딩을 생성합니다. 이는 어휘 대체물로 사용됩니다.
일반 텍스트 탭으로 구분된 파일로 상황별 시각화와 함께 사용할 빈도 사전을 준비합니다. 여기서 첫 번째 열에는 단어가 포함되고 두 번째 열에는 선택한 참조 사전의 빈도가 포함됩니다. 이 파일의 첫 번째 줄에는 단어 토큰의 말뭉치 크기와 일치하는 하나의 정수가 포함되어야 합니다.
webvectors.cfg
구성 파일의 [Token]
섹션에서 use_contextualized
True로 전환하고 token_model
(사전 훈련된 ELMo), type_model
(스크립트로 생성한 유형 기반 프로젝션) 및 freq_file
에 대한 경로를 지정합니다. 주파수 사전.
ref_static_model
필드에서 상황별 시각화 페이지에 있는 단어의 하이퍼링크 대상으로 사용하려는 정적 단어 임베딩 모델(이름만)을 지정합니다.
ELMo 어휘 대체 페이지는 http://YOUR_ROOT_URL/contextual/에서 확인할 수 있습니다.
문제가 있는 경우 언제든지 저희에게 연락해 주십시오:
http://www.aclweb.org/anthology/E17-3025
http://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf
http://flask.pocoo.org/
http://radimrehurek.com/gensim/
http://gunicorn.org/