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。