簡體   English   中英

使用 BERT 或 LSTM 模型的大型文檔語義相似性的最佳方法

[英]Best approach for semantic similarity in large documents using BERT or LSTM models

我正在嘗試為 .pdf 格式的簡歷構建一個搜索應用程序。 對於給定的搜索查詢,如“誰精通 Java 並在跨國公司工作”,output 應該是最相似的 CV。 我的計划是閱讀 pdf 文本並找出文本與查詢之間的余弦相似度。

但是,BERT 在處理長文檔方面存在問題。 它只支持 512 的序列長度,但我所有的簡歷都超過 1000 字。 我真的被困在這里了。 截斷文檔等方法不適合此目的。

還有其他 model 可以做到這一點嗎?

對於此任務,我找不到使用 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))

我建議您閱讀:Beltagy、Iz、Matthew E. Peters 和 Arman Cohan。 “Longformer:長文檔轉換器。” arXiv 預印本 arXiv:2004.05150 (2020)。

本文的主要目標是它能夠接收長文檔序列標記作為輸入,並且能夠以線性計算成本處理跨文檔的長期跨分區上下文。

在這里,滑動 window 注意力機制使用n = 512標記,而不是 BERT model 中已知的將N=512標記作為輸入序列長度。


Longformer:長文檔轉換器

GitHub: https://github.com/allenai/longformer

論文: https://arxiv.org/abs/2004.05150

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM