Для каждой концепции моего набора данных я сохранил соответствующие категории википедии. Например, рассмотрим следующие 5 концепций и соответствующие им категории википедии.
- гипертриглицеридемия:
['Category:Lipid metabolism disorders', 'Category:Medical conditions related to obesity']
- ингибитор фермента:
['Category:Enzyme inhibitors', 'Category:Medicinal chemistry', 'Category:Metabolism']
- шунтирование:
['Category:Surgery stubs', 'Category:Surgical procedures and techniques']
- Перт:
['Category:1829 establishments in Australia', 'Category:Australian capital cities', 'Category:Metropolitan areas of Australia', 'Category:Perth, Western Australia', 'Category:Populated places established in 1829']
- климат:
['Category:Climate', 'Category:Climatology', 'Category:Meteorological concepts']
Как видите, первые три понятия относятся к медицинской сфере (тогда как остальные два термина не являются медицинскими терминами).
Точнее, я хочу разделить мои понятия как медицинские и немедицинские. Однако очень сложно разделить понятия, используя только категории. Например, хотя две концепции enzyme inhibitor
и bypass surgery
относятся к медицинской сфере, их категории сильно отличаются друг от друга.
Поэтому я хотел бы знать, существует ли способ получения parent category
категорий (например, категории enzyme inhibitor
и bypass surgery
относятся к medical
родительской категории)
В настоящее время я использую pymediawiki
и pywikibot
. Тем не менее, я не ограничен только этими двумя библиотеками и рад иметь решения, использующие и другие библиотеки.
РЕДАКТИРОВАТЬ
По предложению @IlmariKaronen я также использую categories of categories
и я получил следующие результаты (маленький шрифт рядом с category
- categories of the category
).
Однако я все еще не мог найти способ использовать данные категории, чтобы решить, является ли данный термин медицинским или немедицинским.
Более того, как указал @IlmariKaronen, использование деталей Wikiproject
может быть потенциальным. Тем не менее, похоже, что википроект по Medicine
не имеет всех медицинских терминов. Поэтому нам также нужно проверить и другие википроекты.
РЕДАКТИРОВАТЬ: Мой текущий код извлечения категорий из концепций Википедии выглядит следующим образом. Это можно сделать с помощью pywikibot
или pymediawiki
следующим образом.
-
Использование библиотеки
pymediawiki
импортировать mediawiki как pw
p = wikipedia.page('enzyme inhibitor') print(p.categories)
-
Использование библиотеки
pywikibot
import pywikibot as pw site = pw.Site('en', 'wikipedia') print([ cat.title() for cat in pw.Page(site, 'support-vector machine').categories() if 'hidden' not in cat.categoryinfo ])
Категории категорий также можно сделать так же, как показано в ответе @IlmariKaronen.
Если вы ищете более длинный список концепций для тестирования, я привел несколько примеров ниже.
['juvenile chronic arthritis', 'climate', 'alexidine', 'mouthrinse', 'sialosis', 'australia', 'artificial neural network', 'ricinoleic acid', 'bromosulfophthalein', 'myelosclerosis', 'hydrochloride salt', 'cycasin', 'aldosterone antagonist', 'fungal growth', 'describe', 'liver resection', 'coffee table', 'natural language processing', 'infratemporal fossa', 'social withdrawal', 'information retrieval', 'monday', 'menthol', 'overturn', 'prevailing', 'spline function', 'acinic cell carcinoma', 'furth', 'hepatic protein', 'blistering', 'prefixation', 'january', 'cardiopulmonary receptor', 'extracorporeal membrane oxygenation', 'clinodactyly', 'melancholic', 'chlorpromazine hydrochloride', 'level of evidence', 'washington state', 'cat', 'newyork', 'year elevan', 'trituration', 'gold alloy', 'hexoprenaline', 'second molar', 'novice', 'oxygen radical', 'subscription', 'ordinate', 'approximal', 'spongiosis', 'ribothymidine', 'body of evidence', 'vpb', 'porins', 'musculocutaneous']
Для очень длинного списка, пожалуйста, проверьте ссылку ниже. https://docs.google.com/document/d/1BYllMyDlw-Rb4uMh89VjLml2Bl9Y7oUlopM-Z4F6pN0/edit?usp=sharing
ПРИМЕЧАНИЕ. Я не ожидаю, что решение будет работать на 100% (если предложенный алгоритм способен обнаружить многие медицинские концепции, которых мне достаточно)
Я рад предоставить более подробную информацию, если это необходимо.