Ищите автоматизированный способ создания таксономий для глоссария - PullRequest
0 голосов
/ 25 марта 2019

Я действительно не уверен, где разместить этот вопрос, так как это скорее вопрос управления данными, чем вопрос программирования, а также несколько субъективный. Я удалю / перепишу в другом месте, если это не то место.

Я создаю глоссарий терминов, используя восходящий подход. А именно, я изначально генерирую термины из всех уникальных имен логических столбцов из разных баз данных и объединяю их в одно центральное место - глоссарий. Очистка и создание отношений оказывается чрезвычайно сложным и ручным процессом до сих пор. Этот конкретный пост посвящен автоматизации создания таксономий / иерархических группировок в большом списке терминов глоссария.

Допустим, у меня есть список из десяти терминов в глоссарии ниже. Термины в моем глоссарии, которые, как я знаю, связаны, не обязательно объединены каким-либо соглашением об именах, поэтому я имитирую это с помощью этого списка:

['term a',
 'second term',
 'term 3',
 'term d',
 'term number five',
 'sixth term',
 'seventh term',
 'term eight',
 'ninth term',
 'term 10']

Я точно знаю, что sixth term является родительским термином term a, term number five и term 10, и в идеале я хотел бы создать эту ассоциацию в чем-то вроде словаря списков Python, как показано ниже:

{'sixth term': ['term a', 'term number five', 'term 10']}

Итак, моя проблема в том, что:

  • У меня есть ряд терминов, которые, как я знаю, связаны иерархически
  • Соответствующие термины не обязательно соответствуют стандартному соглашению об именах

Мои первые мысли о том, как с этим бороться:

  • Попытка использовать сопоставление строк в определениях этих терминов
  • Нахождение какой-либо общей терминологии, которая существует существует между связанными терминами и начиная с этого
  • Использование библиотеки, такой как difflib, для сопоставления последовательностей терминов и их определений

Проблема с использованием определений в качестве входных данных заключается в том, что определения не всегда так хороши, и попытка обнаружить семантическое сходство может не дать полезных результатов. И я скептически отношусь к выполнению сопоставления последовательности, поскольку, как я уже упоминал, связанные термины не обязательно соответствуют одному и тому же соглашению об именах, и сопоставление последовательности может не дать хороших результатов.

При необходимости я могу просто создать ассоциации вручную, но, поскольку глоссарий очень большой (около 9 000 терминов), я действительно хочу этого избежать. Я также подозреваю, что есть способ сделать это с машинным обучением, поскольку это кажется проблемой классификации, но я буду честен, говоря, что я действительно новичок в ML и действительно не знаю, какой алгоритм будет способен делать то, что я ищу.

По сути, у меня есть проблема, которая несколько уникальна в том смысле, что это проблема управления, которая перешла в программную, и сейчас я могу думать только о создании этих ассоциаций вручную. Не столько для поиска кода, сколько для библиотек, инструментов или общих советов о том, как справиться с такой проблемой, как эта.

...