文献1次スクリーニングのためにdoc2vecを試してみる

検索結果のダウンロード、データの取得

touch-sp.hatenablog.com

doc2vecを試してみる

Pythonを使用

import warnings
warnings.filterwarnings(action='ignore', category=UserWarning, module='gensim')

from gensim.models.doc2vec import Doc2Vec
from gensim.models.doc2vec import TaggedDocument
from gensim.utils import simple_preprocess as preprocess
PMID = [
    line.rstrip("\n")
    for line in open("PMID.txt")
]
train_copus = [
    TaggedDocument(preprocess(doc),[PMID[i]])
    for i, doc in enumerate(open("Absts.txt"))
]
#モデル作成
model = Doc2Vec(size = 50)
model.build_vocab(train_copus)
#学習
model.train(train_copus, total_examples = model.corpus_count, epochs=10)
#CQを想定して適当に単語を羅列
cq = "smoking cardiovascular disease CKD risk factor progression development"
result = model.infer_vector(preprocess(cq))
print(model.docvecs.most_similar([result]))

結果

[('10922320', 0.920274019241333), ('27529223', 0.9125033617019653), ('16413372', 0.9093979001045227), ('20586949', 0.903326690196991), ('18264634', 0.8981373906135559), ('8995019', 0.8950796723365784), ('7586787', 0.8943875432014465), ('1959342', 0.8922560214996338), ('24143353', 0.8917223811149597), ('8015652', 0.8913285732269287)]

まったくうまくいっていない。
アブストラクトが短い文献が上位にきている。
CQ同様に短いアブストラクトが似ていると判定?