はじめての調香 · 110
はじめての調香 #110:別名欄には9万5千件あり、増えた一致は3件だった
· 9 分
3回続けて同じことにぶつかった。コーパスが使う名前がデータベースの名前と一致しない。今回はデータベースの別名欄を見に行った。そこには25,980の材料、95,214件の別名がある。そして87.9%が欠けた断片だった。ゲラニオールの別名は「(2E)-3,7-」、バニリンは「4-」、リナロールは「3,7-」、メントールは「L-」。切断点は固定文字数ではない。断片の長さは中央値4文字、四分位2から7、最長84。切れているのは命名法の接頭辞と母体名の境界で、断片の95.2%は位置番号、立体記述子、iso や bis といった接頭辞だけでできている。実務上の影響は明快だ。name 欄でコーパスの成分レコードの54.9%に一致し、head_synonym を加えると60.3%、さらにあの95,214件の別名を加えると60.4%になる。名前が3つ、レコードが14件増えた。
読了目安 5 分。
要点だけ
- データベースには
synonyms別名欄がある。25,980の材料(61.5%)、95,214件の別名 - 条目の87.9%が欠けた断片であり、**材料の75.0%**は欄まるごとが断片
- 断片は命名法の接頭辞だ。ゲラニオール
(2E)-3,7-、バニリン4-、リナロール3,7-、メントールL- - 断片の 95.2% は位置番号、立体記述子、iso や bis といった接頭辞だけでできている
- 固定文字数の切断ではない。長さは中央値4、四分位2から7、最長84
- 実務では
nameでコーパスの 54.9%、head_synonymを足して 60.3%、95,214件の別名を足して 60.4% - 9万5千件の別名で、増えた一致は3つの名前。
3回続けて同じことにぶつかった
スチラリルアセテートではコーパスが2つの名前で呼んでいた。
使用量ランキングでは首位が実は dipg と dipropylene glycol の2件だった。
メチルセドリルケトンではコーパスが5つの名前を使っており、
データベースの正式名だけでは60件の処方を取りこぼすとわかった。
3回目にもなれば、問うべきは「他にどんな別名があるか」ではない。 データベース自身が別名表を持っていないのか。
持っている。しかも大きい。
別名欄はどう見えるか
サプライヤー数の順に上位12材料の別名欄の先頭3件を並べる。
| 材料 | 別名の件数 | 先頭3件 |
|---|---|---|
| geraniol | 16 | (2E)-3,7-、(E)-3,7-、2-trans-3,7- |
| vanillin | 15 | 4-、4-、4- |
| linalool | 16 | 3,7-、2,6-、(+/-)-3,7- |
| citral | 9 | (Z)/(E)、(Z+E)、2,6- |
| geranyl acetate | 20 | (E)-、(E)-3,7-、trans-3,7- |
| (Z)-3-hexen-1-ol | 30 | (3Z)-、(Z)-、cis- |
| citronellol | 14 | .beta.-、(.+/-.)-、(+/-)- |
| laevo-menthol | 30 | L-、laevo-、L- |
ゲラニオールの完全な別名は (2E)-3,7-dimethyl-2,6-octadien-1-ol のはずだ。
データベースが保持しているのは (2E)-3,7- である。
名前の接頭辞だけが残り、母体名がまるごと消えている。
どこで切れているか
83,663件の欠けた断片すべてを、あるパターン群と照合した。
位置番号(3,7-)、立体記述子((2E)、cis、L)、そして iso/bis/neo/tert といった非分離接頭辞だ。
断片の95.2%がこれらだけでできている。
残る4.8%の上位10種も見た。p-、m-、2-oxo、1-oxa、oxy、oxo、p-tert-。
**これらも接頭辞だ。**パターンに入れ忘れていただけで、実質的にはほぼ全部である。
固定長の切断ではない。「先頭N文字だけ保存する」なら断片の長さは1つの値に集中するはずだ。実際の分布はこうなる。
| 断片の長さ(文字) | |
|---|---|
| 中央値 | 4 |
| 四分位 | 2 – 7 |
| 最長 | 84 |
| 最頻 | 2文字(28,072件)、4文字(11,211件)、6文字(8,662件) |
切断点は文字数ではなく、名前の構造についていっている。
化学命名法の組版には慣例がある。位置番号と立体記述子はイタリック、母体名はローマン体で組む。
(2E)-3,7- はイタリック、dimethyl-2,6-octadien-1-ol はローマン体だ。
残っているのは、ちょうど組版上イタリックになる部分である。
データを取得したプログラムは見ていないので、これは証拠に合う説明であって結論ではない。
ただしこれは、4-、L-、.beta.- という一見無関係な断片がなぜ同じ欠陥を示すのかも説明する。
組版の上ではそれらは同じ種類のものだからだ。
実務でどれだけ違うか
ここが本題だ。954件の処方コーパスの 2,429個の相異名称(成分レコード17,481件)を データベースと照合し、索引を段階的に足していった。
| 照合に使った欄 | 一致した相異名称 | カバーした成分レコード |
|---|---|---|
name のみ |
894(36.8%) | 9,602(54.9%) |
head_synonym を追加 |
1,050(43.2%) | 10,545(60.3%) |
さらに synonyms(95,214件)を追加 |
1,053(43.4%) | 10,559(60.4%) |
head_synonym は31,480件で、156の名前、943件のレコードを増やした。
synonyms は95,214件で、3つの名前、14件のレコードを増やした。
3倍大きい欄の貢献が50分の1である。
「使える」25%の別名もあまり使えない
6,505の材料(25.0%)は別名欄に断片でない条目を少なくとも1つ持つ。いくつか抜き出した。
| 材料 | 使える別名 |
|---|---|
| amygdalus mira fruit | smooth stone、smooth-pit、tibetan |
| abies alba cone extract | silver |
| afrocarpus falcatus fruit | african、bastard、weeping |
これらは植物の俗名の形容詞部分(silver fir、Tibetan peach)で、
中心語のほうが同じように切られている。欠陥は同一で、切れている場所が化学名ではなく英語の複合語なだけだ。
ではどうすればよいか
| やりたいこと | 使うもの |
|---|---|
| 材料の商品名を調べる | head_synonym。74.6%に値があり、どれも完全 |
| 処方の名前をデータベースに戻す | name + head_synonym。60.3%が上限 |
| 自分の別名表を作る | CASに頼るか自分で維持するしかない。別名欄は役に立たない |
一致しなかった残り 39.6% の成分レコードは、多くが商品名、配合物、表記ゆれだ。 Vertofixの回で1つの材料の5つの名前を手で統合してみせたが、 それは可能でも1本ずつやるしかない。
化学識別子がデータベース間で一致しないのは新しい問題ではない。 Akhondi らは2012年に J Cheminform で複数の小分子データベース間の系統的識別子の一貫性を比較しており(PMID 23237381)、 Mansouri らは2016年にQSARデータセット向けの自動クリーニング手順を書いている(PMID 27885862)。 違いは、ここの欄は「一致しない」のではなく「切り落とされている」という点だ。
この記事が示していないこと
- **「欠けた断片」は私が決めた規則で判定したものだ。**長さ3以下、末尾がハイフンかコンマ、 括弧の中身を除くと英字が4文字未満。規則を変えれば87.9%という数字も変わる。
- **イタリック組版の説明は検証していない。**この欄を生成したプログラムも、元のウェブページも見ていない。 すべての証拠に合うが、結論ではない。
- **60.4%という上限はこの954件のコーパスに対するものだ。**別の処方コーパスなら数字は変わる。
- **あいまい照合でどれだけ救えるかは計算していない。**やったのは完全一致の文字列照合だけだ。 正規化(空白除去、ハイフン除去、cis と (Z) の統一)を加えればさらに上がるはずだが、まだ試していない。
head_synonymの74.6%というカバー率は、それが正しいという意味ではない。 検証したのは「欠けた断片ではない」ことだけで、指している先が正しいかは見ていない。