在对Medline/PubMed进行Biopython搜索时,我找不到有关如何控制术语爆炸的文档。
例如,如果我在PubMed上搜索surgery, oral [MH],它会找到69,926个匹配的出版物。(据说PubMed可以自动分解术语。)
https://pubmed.ncbi.nlm.nih.gov/?term=surgery%2C+oral+%5BMH%5D&sort=date&show_snippets=off
但下面的代码仅返回8561个发布的计数。更令人费解的是,输出中的翻译堆栈似乎声称该术语已爆炸。
import Bio.Entrez as Entrez
import pprint
search_handle = Entrez.esearch(
db = "pubmed",
term = "surgery, oral [MH]",
rettype = 'uilist',
retmax = 1,
)
search_results = Entrez.read(search_handle)
search_handle.close()
pprint.pprint( search_results.items() )下面是输出:
[(u'Count', '8561'),
(u'RetMax', '1'),
(u'IdList', ['33499855']),
(u'TranslationStack',
[{u'Count': '8561', u'Field': 'MeSH Terms', u'Term': '"surgery, oral"[MeSH Terms]', u'Explode': 'Y'}, 'GROUP']),
(u'TranslationSet',
[{u'To': '"surgery, oral"[MeSH Terms]', u'From': 'surgery, oral[MH]'}]),
(u'RetStart', '0'),
(u'QueryTranslation', '"surgery, oral"[MeSH Terms]')]如何强制Biopython要求Medline分解该术语?这是Biopython 1.75。我只能使用Python 2.7。
谢谢。
发布于 2021-02-27 20:46:05
解决方案出奇的简单:
只需去掉搜索词中的逗号,:使用term="surgery oral [MH]"而不是term="surgery, oral [MH]"执行搜索。
使用前一个搜索,我现在得到的计数是69945 -与我在PubMed网页上搜索surgery,oralmh时得到的数字相同。
后一个搜索词导致当前的计数为8561。
如果仔细查看输出,就会发现原来的搜索词被翻译成了"surgery, oral"[MeSH Terms]。在PubMed上输入该字符串(包括"引号)也会给出8561个结果- MeSH术语只是mh的长形式。
https://stackoverflow.com/questions/66345454
复制相似问题