bertsearch
1.0.0
下面是一個求職範例:
BERT-Base,無殼 | 12層、768隱藏、12頭、110M參數 |
BERT-Large,無殼 | 24層、1024隱藏、16頭、340M參數 |
BERT-Base,附盒 | 12層,768個隱藏,12個頭,110M參數 |
BERT-Large,附盒 | 24層、1024隱藏、16頭、340M參數 |
BERT-Base,多語言案例(新) | 104種語言,12層,768個隱藏,12個頭,110M參數 |
BERT-Base,多語言案例(舊) | 102種語言,12層,768個隱藏,12個頭,110M參數 |
BERT-Base,中文 | 簡體中文、繁體中文、12層、768個隱藏、12個頭、110M參數 |
$ wget https://storage.googleapis.com/bert_models/2018_10_18/cased_L-12_H-768_A-12.zip
$ unzip cased_L-12_H-768_A-12.zip
您需要將預先訓練的 BERT 模型和 Elasticsearch 的索引名稱設定為環境變數:
$ export PATH_MODEL=./cased_L-12_H-768_A-12
$ export INDEX_NAME=jobsearch
$ docker-compose up
注意:如果可能,請為 Docker 的記憶體配置分配高記憶體(大於8GB
),因為 BERT 容器需要高記憶體。
您可以使用建立索引 API 將新索引新增至 Elasticsearch 叢集。建立索引時,您可以指定以下內容:
例如,如果要建立包含title
、 text
和text_vector
欄位的jobsearch
索引,可以透過下列命令建立索引:
$ python example/create_index.py --index_file=example/index.json --index_name=jobsearch
# index.json
{
" settings " : {
" number_of_shards " : 2,
" number_of_replicas " : 1
},
" mappings " : {
" dynamic " : " true " ,
" _source " : {
" enabled " : " true "
},
" properties " : {
" title " : {
" type " : " text "
},
" text " : {
" type " : " text "
},
" text_vector " : {
" type " : " dense_vector " ,
" dims " : 768
}
}
}
}
注意: text_vector
的dims
值必須與預先訓練的 BERT 模型的 dims 相符。
建立索引後,您就可以為某些文件建立索引了。這裡的重點是使用 BERT 將文檔轉換為向量。產生的向量儲存在text_vector
欄位中。讓我們將資料轉換為 JSON 文件:
$ python example/create_documents.py --data=example/example.csv --index_name=jobsearch
# example/example.csv
" Title " , " Description "
" Saleswoman " , " lorem ipsum "
" Software Developer " , " lorem ipsum "
" Chief Financial Officer " , " lorem ipsum "
" General Manager " , " lorem ipsum "
" Network Administrator " , " lorem ipsum "
腳本完成後,可以得到如下的JSON文件:
# documents.jsonl
{ "_op_type" : "index" , "_index" : "jobsearch" , "text" : "lorem ipsum" , "title" : "Saleswoman" , "text_vector" : [...]}
{ "_op_type" : "index" , "_index" : "jobsearch" , "text" : "lorem ipsum" , "title" : "Software Developer" , "text_vector" : [...]}
{ "_op_type" : "index" , "_index" : "jobsearch" , "text" : "lorem ipsum" , "title" : "Chief Financial Officer" , "text_vector" : [...]}
...
將資料轉換為 JSON 後,您可以將 JSON 文件新增至指定索引並使其可搜尋。
$ python example/index_documents.py
請造訪http://127.0.0.1:5000。