【发布时间】:2021-03-14 09:22:50
【问题描述】:
我正在尝试为 .pdf 格式的简历构建搜索应用程序。对于给定的搜索查询,例如“谁精通 Java 并在跨国公司工作”,输出应该是最相似的 CV。我的计划是阅读pdf文本并找到文本和查询之间的余弦相似度。
但是,BERT 存在长文档的问题。它支持的序列长度只有 512,但我所有的 CV 都超过 1000 个单词。我真的被困在这里了。截断文档之类的方法不适合目的。
有没有其他模型可以做到这一点?
我找不到像 Longformer 和 XLNet 这样的模型来完成这项任务的正确方法。
module_url = "https://tfhub.dev/google/universal-sentence-encoder/4"
model = hub.load(module_url)
print ("module %s loaded" % module_url)
corpus = list(documents.values())
sentence_embeddings = model(corpus)
query = "who is profiecient in C++ and has Rust"
query_vec = model([query.lower()])[0]
doc_names = list(documents.keys())
results = []
for i,sent in enumerate(corpus):
sim = cosine(query_vec, model([sent])[0])
results.append((i,sim))
#print("Document = ", doc_name[i], "; similarity = ", sim)
print(results)
results= sorted(results, key=lambda x: x[1], reverse=True)
print(results)
for idx, distance in results[:5]:
print(doc_names[idx].strip(), "(Cosine Score: %.4f)" % (distance))
【问题讨论】:
-
我认为,为您的问题添加一个简单的代码示例会更好。
-
@Nour-AllahHussein 代码已更新
标签: python bert-language-model language-model