ASReviewで重複文献を削除する方法

ASReview (エイエスレビュー)は文献選定作業を大幅に効率化できる、有力なツールであることを以前紹介しました。今回は、重複文献を削除する deduplicateの方法を紹介します。PubMed, Cochrane CENTRAL, Embase, その他の複数のデータベースを用いると、研究論文が重複していることは当然起きます。これらを自動的に除去する方法の一つです。この投稿のPDFのスライドはこちらです。

① まず、文献情報(No, Reference ID, Citation, Title, Abstractなどの情報を含む)のExcel のxlsxファイルを用意します。一行一文献で、一行目にラベルを入力します。

② コマンドプロンプトを起動します。ツールバーの検索フィールドにコマンドプロンプトと書き込むと、アイコンが表示されるので、それをクリックして起動します。

③ ASReviewをインストールします。 以下のコードをコマンドプロンプトに書き込んでEnterキーを押します。Ruquirement already satisfied:・・・・・と出力され、次のコードを待機する状態になります。

pip install asreview

もし、pythonをインストールしていない場合は、ダウンロード、インストールはこちらのサイトから。

④ Pythonを起動します。そのために、以下のコードをコマンドプロンプトに書き込んでEnterキーを押します。

python

⑤ ASReviewData関数を読み込みます。そのために、以下のコードをコマンドプロンプトに書き込んでEnterキーを押します。

from asreview import ASReviewData

⑥ 元のExcelファイルのパスを取得します。一つの方法はファイルのアイコンを右クリックしてパスのコピーを選択します。それにより、パスがクリップボードに格納されます。

⑧ 元のExcelファイルを変数datに読み込みます。まず、以下のコードをメモ帳などのテキストエディターに貼り付けて、”ファイルPath”の部分を選択して貼り付け(Ctr+V)でクリップボードに格納されているパスに置き換えます。

dat = ASReviewData.from_file("ファイルPath")


メモ帳に貼り付けてクリップボードの内容に”ファイルPath”を置き換えた例。ファイルまでのパスはそれぞれのPCによって異なります。ファイル名dce-36-with-dup.xlsx:

さらに、¥の部分を¥¥に置き換えます。編集メニューから置換を利用すると簡単です。修正したコードをコマンドプロンプトに書き込んで(コピー・貼り付け)、Enterキーを押します。これで、変数datにExcelの内容が書き込まれます。

⑨ Deduplicateを実行し結果を変数dedup_datに格納します。以下のコードをコマンドプロンプトに書き込んで、Enterキーを押します。

dedup_dat = dat.drop_duplicates()

⑩ dedup_datをExcelファイルとして保存します。

以下のコードをメモ帳に貼り付けて、”ファイルPath”を元ファイルのパスに置き換えて、ファイル名の部分を書き換えます。

dedup_dat.to_excel("ファイルPath")

例:メモ帳に貼り付けてクリップボードの内容に”ファイルPath”を置き換え、ファイル名を書き換えた例。ファイル名dce-36-without-dup.xlsx:

これで、重複文献を除外したExcelファイルが元のExcelファイルのフォルダ内にできました。

-------

コマンドプロンプトで実行するコードは以下の通りです。これらを1行ずつ実行しますが、全部を一度メモ帳にコピペして、ファイルパスの部分を書き換えてから、1行ずつコマンドプロンプトにコピペして実行するのがいいと思います。

pip install asreview
python
from asreview import ASReviewData
dat = ASReviewData.from_file("ファイルPath\\ファイル名-with-dup.xlsx")
dedup_dat = dat.drop_duplicates()
dedup_dat.to_excel("ファイルPath\\ファイル名-without-dup.xlsx")

Excelファイルを読み込むコードとExcelファイルに保存するコードの部分は、あらかじめファイルパスの部分を書き換えてから、コマンドプロンプトにコピペして実行するようにします。Excelファイルとして保存する際にファイル名を変えないと、元ファイルに上書きされるので、気を付けましょう。ファイルパスをファイルアイコンの右クリックでクリップボードに格納されたパスは区切り文字が¥(または\と表示される)一個ですが、それを¥¥二個にする必要があります。また¥は半角文字です。

重複の判定は、タイトル、抄録の類似性から行うわけですが、デフォルトでは95%の一致で除去する設定だそうです。

RISmedを用いたPubMed検索

RISmedはPubMed検索のためのRのパッケージです。作者はStephanie Kovalchik氏です。ASReview https://asreview.nl/ を用いた文献選定の際には、Title, Abstractのデータを用います。書誌情報と合わせて、これらのデータを含むExcelファイル、またはCSVあるいはRISファイルを用意する必要があります。その際に、RISmedを使うのがひとつの方法です。

PubMedではGETメソッドで直接データベースにアクセスして、検索結果をダウンロードできるe-utilitiesというサービスがあります。MeSHへのAutomatic Term Mappingは適用されません。https://www.ncbi.nlm.nih.gov/books/NBK25501/

それを利用するRのパッケージです。pmSearchも同じサービスを利用しています。

RISmedとtcltk2のパッケージをThe Comprehensive R Archive Network (CRAN)(https://cran.r-project.org/)からRにインストールしておきます。tcltk2は検索結果をCSVファイルとして保存する際のインターフェースとして用います。
Stephanie Kovalchik: RISmed https://cran.r-project.org/web/packages/RISmed/index.html
Philippe Grosjean: tcltk2 https://cran.r-project.org/web/packages/tcltk2/index.html

パッケージがまだインストールされていない場合は、以下のスクリプトをRで実行してください。
#Install the packages.
packneed=c(“RISmed”,”tcltk2″);current=installed.packages();addpack=setdiff(packneed,rownames(current));url=”https://ftp.yz.yamagata-u.ac.jp/pub/cran/”;if(length(addpack)>0){install.packages(addpack,repos=url)};if(length(addpack)==0){print(“Already installed.”)}

以下のRでスクリプトを実行すると検索結果をCSVファイルとして保存できます。SearchWordsと言う変数に検索式search queryを格納しますので、””で囲んであるところを書き換えて使用してください。すべてを選択して、実行すると、ファイル保存のダイアログまで実行されます。ResultsData=EUtilsGet(Results, type=”efetch”, db=”pubmed”)の実行に時間がかかります。

保存したCSVファイルを直接開くのではなく、Excelを起動して、データメニューからテキストまたはCSVファイルからインポートします。元のファイルはUTF-8でエンコードされており、Shift JISがデフォルトのExcelでは文字化けするので、そのような手順を取ります。ファイル保存の際は.xlsxにすることもできます。

また、CSVファイルはテキストファイルなので、Notepad++ https://notepad-plus-plus.org/ などで一度開いて、エンコーディングをUTF-8-BOMに変換するとExcleで直接開いても文字化けしません。

図 Excleで取り込んで.x.sxファイルとして保存したPubMed検索結果。

以下にR用のスクリプトを示します。
library(“RISmed”)
library(“tcltk2”)

#Make a search query for PubMed. Write your query in ” “.

SearchWords=”(junior doctor OR young doctor OR resident physician OR intern) AND mindfulness AND humans[mh] AND (english[la] OR japanese[la]) AND hasabstract[tw] AND 2024[dp]”

#Connect and retrieve a list of PubMed IDs. You can change retmax and set years asmindate=2000, maxdate=2024, retmax=2000

Results=EUtilsSummary(SearchWords, type=”esearch”, db=”pubmed”, retmax=2000)

#Show the number of citations retrieved and get title, abstract and other data. This step takes time.

QueryCount(Results)
ResultsData=EUtilsGet(Results, type=”efetch”, db=”pubmed”)

#Make publication year list.

year=YearEntrez(ResultsData)

#Make a list of authors (Last name + initials) for each citation and a list of reference id (first author + year).

au=Author(ResultsData)
refn=length(au)
auv=rep(“”,refn)
refidv=rep(“”,refn)
for(i in 1:refn){
authors=cbind(au[[i]]$LastName,au[[i]]$Initials)
ma=nrow(authors)
authors[1,]
paste(authors[1,1],authors[1,2])

aul=””
for(j in 1:ma){
aut=paste(authors[j,1],authors[j,2])
aul=paste(aul,aut,sep=”, “)
}
aul=substr(aul,3,nchar(aul))
auv[i]=aul
refidv[i]=paste(authors[1,1],authors[1,2],year[i])
}

#Make citation list. No formatting. Including DOI information.
refer=Citations(ResultsData)

cite=rep(“”,refn)
for(i in 1:refn){
cite[i]=refer[[2]][[i]]
}

#Create a data frame of PMID, Reference_ID,Citation,Year, Title,Abstract. Citation format is not modified.

pubmed_data=data.frame(‘PMID’=PMID(ResultsData),’Reference_ID’=refidv,’Citation’=cite, ‘Year’=YearEntrez(ResultsData), ‘Title’=ArticleTitle(ResultsData), ‘Abstract’=AbstractText(ResultsData))

#Save the frame work as a CSV file with a save file dialogue. Add file extension “.csv”.

filnam=tclvalue(tkgetSaveFile(initialfile=”export.csv”,filetypes=”{{CSV Files} {.csv}} {{All files} *}”));if(filnam!=”.csv”){write.csv(pubmed_data,filnam,row.names=FALSE)}

#Do not open the file directly to avoid character encoding trouble. Launch Excel, then from Data menu use import text/csv file.
#The saved file is a text file with UTF-8. You can change encoding from UTF-8 to UTF-8-BOM using Notpad++, and you can directly open the file with Excel without garbles.

ASReview(エイエスレビュー)を用いた文献選定

システマティックレビューの際には、Clinical Question (CQ), Healthcare Question (HcQ), Health Question (HQ)に回答するために必要な文献を検索しますが、数百、数千という数の候補文献から、目的に合う文献を選定する作業は時間と労力を要します。

Large Language Model (LLM)を用いたArtificial Intelligence (AI)で、例えばChatGPT turboが有用だという報告もありますが、現時点では、ハルシネーションの問題など、全面的に頼れるところまで来ていないと思います。

一方で、機械学習で標的文献サンプルRelevantとそれ以外Irrelevant文献を分類する方法を用いたASReviewは高性能で時間と労力がセーブできます。実際の文献選定のプロセスを支援する方式です。

ASReviewの使い方の解説を書いたので試してみてください[2024.11.23 Exportについての解説を追加しました]→ASReviewを用いた文献検索 PDF ASReviewへのリンクは文献欄に付けてあります↓

ASReviewはPythonというプログラミング言語を用いていますが、ユーザインタフェースはブラウザで、非常に使いやすくなっています。また、データ管理はクラウドではなく、ローカルなので、自分の作成したデータの漏洩の心配はありません。

文献
Yao X, Kumar MV, Su E, Flores Miranda A, Saha A, Sussman J: Evaluating the efficacy of artificial intelligence tools for the automation of systematic reviews in cancer research: A systematic review. Cancer Epidemiol. 2024;88:102511. doi: 10.1016/j.canep.2023.102511 PMID: 38071872

ASReview  https://asreview.nl/

van Dijk SHB, et al: Artificial intelligence in systematic reviews: promising when appropriately used. BMJ Open. 2023;13:e072254. doi: 10.1136/bmjopen-2023-072254 PMID: 3741964

Oami T, Okada Y, Nakada TA: Performance of a Large Language Model in Screening Citations. JAMA Netw Open 2024;7:e2420496. doi: 10.1186/s13643-018-0707-8 PMID: 38976267

Oami T, Okada Y, Sakuraya M, Fukuda T, Shime N, Nakada TA: Efficiency and Workload Reduction of Semi-automated Citation Screening Software for Creating Clinical Practice Guidelines: A Prospective Observational Study. J Epidemiol 2024;34:380-386. doi: 10.1002/cesm.12021 PMID: 38105001

Cowie K, Rahmatullah A, Hardy N, Holub K, Kallmes K: Web-Based Software Tools for Systematic Literature Review in Medicine: Systematic Search and Feature Analysis. JMIR Med Inform. 2022;10:e33219. doi: 10.2196/33219 PMID: 35499859

Cierco Jimenez R, Lee T, Rosillo N, Cordova R, Cree IA, Gonzalez A, Indave Ruiz BI: Machine learning computational tools to assist the performance of systematic reviews: A mapping review. BMC Med Res Methodol. 2022;22:322. doi: 10.1186/s12874-022-01805-4 PMID: 36522637

GammaでPowerPointスライド作成

文章からPowerPointのスライドを作成してくれるGammaというAIサイト (https://gamma.app/ja)もかなりすごいです。たとえば、”Important points of literature search for systematic reviews.”と書き込むだけで、”システマティックレビューにおける文献検索の重要性”というタイトルで8枚のスライドを作ってくれました。タイトルを「システマティックレビューにおける文献検索のキーポイント」に書き換えたり、その他一部修正しましたが、自分で図を描くことを考えると非常に効率的です。

また、MapifyというAIサイト(https://mapify.so/ja)は動画ファイルからマインドマップを作成してくれます。例えば、私のIZ statの動画「診療ガイドライン作成におけるシステマティックレビュープロセスのエッセンス」からPowerPointのスライド「システマティックレビューのプロセス」を作成してみました。やはりある程度の手直しが必要でしたが、非常に効率的です。(無料の範囲ではスライド枚数に制限があります。)

IZ stat(https://www.youtube.com/channel/UCqzzJbfQwKDvValptCAM4gg
「診療ガイドライン作成におけるシステマティックレビュープロセスのエッセンス」(https://youtu.be/dEqvQg1ljI4)

作成したPPTのファイルはこちらです:
「システマティックレビューにおける文献検索のキーポイント」 Link
「システマティックレビューのプロセス」 Link