Webvectors は、ベクター セマンティック モデル (特に、 word2vecやELMoなどの予測ベースの単語埋め込み) を Web 上で提供するためのツールキットであり、その能力を一般の人々に簡単に実証できるようにします。 Python >= 3.6 が必要で、内部ではFlask 、 Gensim 、 simple_elmoを使用します。
動作デモ:
このサービスは、WSGI アプリケーションとしてApache Web サーバーに統合することも、 Gunicorn を使用してスタンドアロン サーバーとして実行することもできます (後者のオプションをお勧めします)。
Apache 構成ファイルに次の行を追加します。
WSGIScriptAlias /WEBNAME "PATH/syn.wsgi"
、ここでWEBNAMEはサーバー ルート ( http://example.com/webvectors
の場合は 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
で定義されます。これはタブで区切られたフィールドで構成されます。
モデル識別子は、Web ページのチェックボックスの名前として使用されます。また、 strings.csv
ファイルでモデル名を示すときに同じ識別子が使用されることも重要です。モデルの言語は、lemmatizer 関数に渡される引数として使用されます。これは、言語の名前 (「英語」、「ロシア語」、「フランス語」など) を含む単純な文字列です。
モデルは現在 4 つの形式で使用できます。
WebVectors はモデルの形式を自動的に検出し、すべてをメモリにロードします。ユーザーはロードされたモデルの中から選択できるようになります。
ローカリゼーション
WebVectors は、ローカライズされた文字列のソースとしてstrings.csv
ファイルを使用します。これは、次の 3 つのフィールドを持つカンマ区切りのファイルです。
デフォルトでは、言語 1 は英語、言語 2 はロシア語です。これはwebvectors.cfg
で変更できます。
テンプレート
ユーザーに表示される実際の Web ページは、ファイル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 モデルを実行し、単語セット内の各単語に対して静的に平均化された型埋め込みを生成します。これらは語彙の代替として使用されます。
コンテキスト化されたビジュアライゼーションで使用する頻度辞書をプレーンテキストのタブ区切りファイルとして準備します。最初の列には単語が含まれ、2 番目の列には選択した参照辞書内の単語の頻度が含まれます。このファイルの最初の行には、ワード トークンのコーパスのサイズに一致する 1 つの整数が含まれている必要があります。
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/