MeSH
MeSHとは
Medical Subject Headingsの略。PubMedやMEDLINEなどNIHが管理する生命医学文書を表現する語彙をコントロールするために作られたシソーラスです。MeSH Vocabularyには4つのタイプの専門用語が含まれます。
- Headings (Descriptors): 生命医学文書で使われる概念(e.g. 体重, 腎臓, )
- Subheadings (Qualifiers): Descriptorsに対して付与される概念(e.g. 副作用, 治療)
- Supplementary Concept Records: MeSHとは切り離されたシソーラス
- Publication Characteristics (or Types): 出版形態(e.g. レビュー, 臨床報告)
Supplementaryはひとまず置いておきます。Publication Typesも容易に理解できるでしょう。
DescriptorsとQualifiersの関係性については以下のファーストネスとセカンドネスの話に当てはめるとわかるかもしれません。
ファーストネス(それ自身が定義可能な概念:人間, 鉄など), セカンドネス(他の存在物を参照しなければ定義できない概念:妻, 母など)
溝口理一郎 (2004) オントロジー工学
腎臓やアルツハイマー病はそれ単体で定義可能な概念(ファーストネス)であり、一方で副作用や治療は「何」に関する副作用, 治療なのか何かしら他の存在を参照しなければならない概念(セカンドネス)です。
詳しくはNIHから教材が出ています。
MeSHの階層構造
Descriptorsはただの辞書ではなく木構造で構成されたシソーラスです(概念同士に上下関係がある)。
DescriptorカテゴリーにSubheadingsカテゴリーやPublication Typeカテゴリーなどを含めて19のカテゴリーが存在します。
各ブランチは何階層にもわたってサブブランチを有します。
いくつかの用語は複数のブランチに出現します。
PubMedやMEDLINEに登録されている文書はindexorと呼ばれる専門家によってもっともその文書を特徴づける10~20のMeSH Termsが付与されます。これは検索の効率化に役立ちます。例えば文献間の表記揺れをMeSH Termsが吸収することができます。
また上位概念を使った検索はその下位概念でタグづけされた文書にもヒットします。上の例でいうと「Ear」で検索すれば「Ear, External」, 「Ear, Middle」, 「Ear, Inner」でタグづけされた文書にもヒットします(明示的にEarでタグづけされていなくても)。
indexorがタグ付けを行うときのプロセスは以下にまとめられています。私はてっきり機械的にタグ付けされていると思っていましたし、専門家が行なっていることを知った後もAbstractしか読んでないと思っていました。。。
MeSHの恩恵
「Alzheimer disease(アルツハイマー病)」で検索した論文を1つ開いてみます。下の方のMeSH termsという部分を展開します。
MeSH Termsを眺めるだけでなんとなくの内容が伝わります。
この論文は「Alzheimer Disease」について論じていて、「Antioxidants(抗酸化物質)」や「Cholinesterase Inhibitors(アセチルコリンエステラーゼ阻害剤)」を用いた実験をしたっぽいですね。実験対象は「Animals」で、より詳細には「Rats」や「Zebrafish」などを使ったようです。
なお末尾にアスタリスクがついているのはメイントピックとみなされたものです。スラッシュはDescriptorsのQualifiersを特に指定してより狭い範囲のタグ付けを行う意図があります。同様にカンマ区切りで2つのDescriptorsを記述することもあります(下の例にはありません)。
DescriptorsはそれぞれユニークなIDを持ちます。例えばAlzheimer DiseaseはD000544というIDを持ちます。
このDescriptorはMental Disorders(精神障害)、Nervous System Diseases(神経系疾患)という2つの枝の構成要素でもあります。それぞれに異なるTree Numberが振られていることに注意です。
また逆にTree Numberが振られていないDescriptorもあります。性別を表すMale, Femaleはどのブランチにも属していません。
ユーザがもっともMeSH Termsの恩恵を受ける点は表記揺れや同義語のカバーです。Alzheimer DiseaseにはAlzheimer‘s Diseaseを始めとして様々な表記のバリエーションがあります。
文献内で表記揺れがあり、単純に文字列として検索をかけた時取りこぼすことがあるものもPubMedの検索エンジンはMeSHベースでの検索を行うことで網羅します。
実際にPubMedでalzheimer‘s diseaseで検索すると自動的に対応するMeSH Termであるalzheimer diseaseで検索がかけられています。
この機能が存在しなかった場合のことを実験してみました。
TitleとAbstractに「alzheimer disease」を含む論文は16,491件、「alzheimer‘s disease」は111,054件。実に6.7倍も検索結果に差が出ました。
以下の動画を見ればMeSHを使いこなすと文献調査が楽になることがわかるでしょう。
ただし必ずしも全ての文献(特に新しい文献)にMeSHが付与されているとは限らない点には注意です。
MeSHをダウンロード
以下のリンクからXML, ASCII, MARC 21, RDFファイルをダウンロードできます。RDFはN-Triples形式です。
あるいはBioPortalからTutle形式のRDFファイルを入手できます。
XMLファイルを入手して簡単に中身を見ます。
- desc2019.xml: 29,351種のdescriptorのリスト
- qual2019.xml: 76種のqualifierのリスト
- supp2019.xml: 249,016種のSupplementary Conceptのリスト
- pa2019.xml: 541種のPharmacological Actionリスト
主な関心対象はdesc2019.xmlです。
XMLの構造についてはこちらを参照。
特定の概念の下位概念を全て取得する
MeSHは前述の通りシソーラスになっているので、特定の概念の下位概念を取得することができます。
試しにAge Groupsに何が含まれるか調べましょう。
ちなみにPubMedのサイト上ではAges Filterがありますが、そこでは14種類使われています。
わかりやすく可視化してみました。MECEじゃないのが個人的にはすごく気持ち悪いです。
MeSHのAge Groupsを検索すると以下のような木構造になっています。上のPubMedのフィルターと一致していないのが気持ち悪い。
こちらを可視化したのがこれ。ちょっとスッキリ。
検索する人にとっての需要(PubMedの実装)とMeSHのdescriptorが一致していないことが混乱の原因でした。
さてダウンロードしたdesc2019.xmlからAge Groups下の概念のDescriptorUIを取得しましょう(今回はせいぜい10種類なのでMeSH browserから手作業でとっても良いですが)。
Age GroupsのTree NumberはM01.060です。その直下にあるAdultはTreeNumber M01.060.116です。従って、M01.060.*というTree NumberをもつDescriptorのUIとNameを取得すれば良さそうです。
<DescriptorRecord DescriptorClass = "1">
<DescriptorUI>D000328</DescriptorUI>
<DescriptorName>
<String>Adult</String>
</DescriptorName>
...
<TreeNumberList>
<TreeNumber>M01.060.116</TreeNumber>
</TreeNumberList>
...
こんな感じで。
するとこんな感じでUIと名前、同義語がゲットできます。
Infant, Low Birth WeightのようにInfant, Newbornの下の年齢区分ではないものまで取れてしまいました。このようにMeSHの階層構造は想定と異なるものが含まれるので気をつけましょう。
論文のメタデータとしてMeSHはどのように付与されているでしょうか。以前の紹介した方法で論文を取得します。XMLファイルを見ると各論文に以下のような形でMeSHが付与されています。
<MeshHeading>
<DescriptorName UI="D000328" MajorTopicYN="N">Adult</DescriptorName>
</MeshHeading>
DescriptorClass
余談ですが、Descriptorには以下のDescriptoClassが割り振られています。
1 = Topical Descriptor.
2 = Publication Types, for example, 'Review'.
3 = Check Tag, e.g., 'Male' (no tree number)
4 = Geographic Descriptor (Z category of tree number).
大抵は1のTopical Descriptorなので意識しなくても問題ないですが、2~4は多少構造が異なるので注意しましょう。
詳細はこちら。
所感
MeSHについて大まかに理解することができました。各種データの場所もわかったのでアプリケーションに活用できそうです。
今回はXMLを使いましたが、RDFも習得できるよう頑張ります。