Фон
В последнем посте я рассказал, как будут работать два параметра функции generateCORRnetwork.
В этом посте я расскажу о том, как мой алгоритм построения графа изменит сегрегацию токенов.
Подход
Мой алгоритм построения проанализированного графа предложений состоит из двух частей: линейной цепочки и проанализированной части зависимостей. Ниже показано, как это выглядит с подлежащим существительным в предложении.
In contrast, the product of the human CDKN2A beta transcript, p14ARF, activates a p53 response manifest in elevated levels of MDM2 and p21CIP1 and cell cycle arrest in both G1 and G2/M.
На картинке выше изображена первая половина примерного предложения. Маркер «активирует» является корнем предложения, все остальные существительные/предложные словосочетания будут «стоять» под ним (т. е. стрелки внизу). Сверху вы видите ссылку, ведущую к началу предложения от токена «активирует», которая образует петлю. И именное словосочетание «продукт бета-транскрипта CDKN2A человека» имеет собственную петлю (т. е. стрелки вверху). Именно эта петлевая структура усиливается в процессе случайного блуждания для создания корреляционной сети. Вторая именная фраза «реакция р53, проявляющаяся в повышенных уровнях MDM2 и p21CIP1 и остановке клеточного цикла как в G1, так и в G2/M» также демонстрирует такую структуру петли с токеном ' активирует» в начале структуры.
Это один из многих способов построения исходного графа зависимостей. Вместо этого можно использовать синтаксический анализ избирательного округа для построения графа зависимостей. По сути, я позаимствовал идею из RNN, в которую будет включено добавление набора единиц контекста, кроме линейной зависимости между соседними токенами, а «контекст» представляет собой синтаксическое отношение [1]. И это приходит цикл обратной связи. Эти обратные циклы также имитируют шаг телепортации в алгоритме PageRank, за исключением того, что этот шаг не является случайным. Он может вернуться только к определенным лексемам, регулируемым грамматическими правилами.
А. Равномерные веса
В двух последних постах я присваиваю «1» всем весам при построении графа предложений. Это означает, что все узлы и ребра одинаково важны для начала.
Например, каждый узел имеет следующее назначение веса.
{'contrast': 1, 'In': 1, 'activates': 1, ',': 1, 'product': 1, 'the': 1, 'transcript': 1, 'of': 1, 'human': 1, 'CDKN2A beta': 1, 'p14ARF': 1, 'G2/M.': 1, 'response': 1, 'a': 1, 'p53': 1, 'manifest': 1, 'levels': 1, 'in': 1, 'elevated': 1, 'MDM2': 1, 'p21CIP1': 1, 'and': 1, 'arrest': 1, 'cycle': 1, 'cell': 1, 'G1': 1, 'both': 1}
Для края это будет так.
{('contrast', 'In'): 1, ('contrast', ','): 1, ('In', 'contrast'): 1, ('activates', 'contrast'): 1, ('activates', ','): 1, ('activates', 'product'): 1, ('activates', 'manifest'): 1, ('activates', 'a'): 1, (',', 'the'): 1, (',', 'p14ARF'): 1, (',', 'activates'): 1, ('product', 'the'): 1, ('product', 'transcript'): 1, ('product', ','): 1, ('product', 'of'): 1, ('the', 'product'): 1, ('the', 'human'): 1, ('transcript', 'of'): 1, ('transcript', 'the'): 1, ('transcript', 'human'): 1, ('transcript', 'CDKN2A beta'): 1, ('transcript', 'p14ARF'): 1, ('transcript', ','): 1, ('of', 'the'): 1, ('of', 'MDM2'): 1, ('human', 'CDKN2A beta'): 1, ('CDKN2A beta', 'transcript'): 1, ('p14ARF', ','): 1, ('G2/M.', 'activates'): 1, ('G2/M.', 'and'): 1, ('response', 'a'): 1, ('response', 'p53'): 1, ('response', 'manifest'): 1, ('a', 'p53'): 1, ('p53', 'response'): 1, ('manifest', 'response'): 1, ('manifest', 'levels'): 1, ('manifest', 'G1'): 1, ('manifest', 'in'): 1, ('levels', 'in'): 1, ('levels', 'elevated'): 1, ('levels', 'MDM2'): 1, ('levels', 'arrest'): 1, ('levels', 'of'): 1, ('in', 'elevated'): 1, ('in', 'both'): 1, ('elevated', 'levels'): 1, ('MDM2', 'of'): 1, ('MDM2', 'p21CIP1'): 1, ('MDM2', 'and'): 1, ('p21CIP1', 'and'): 1, ('and', 'p21CIP1'): 1, ('and', 'cell'): 1, ('and', 'G2/M.'): 1, ('arrest', 'and'): 1, ('arrest', 'cycle'): 1, ('arrest', 'in'): 1, ('cycle', 'cell'): 1, ('cycle', 'arrest'): 1, ('cell', 'cycle'): 1, ('G1', 'in'): 1, ('G1', 'both'): 1, ('G1', 'G2/M.'): 1, ('G1', 'and'): 1, ('both', 'G1'): 1}
И эти назначения весов останутся неизменными на протяжении всей генерации случайных блужданий. И вы видите результат в последнем посте о том, как это повлияет на корреляционную сеть.
B. Смещенные веса
Теперь я собираюсь ввести понятие взвешенного случайного блуждания. Вес узла и ребра будет зависеть от POS-тега токена. Эту идею я позаимствовал из статьи Personalized Page Rank [2][3], где я буду корректировать веса узлов или ребер, которые определяют вероятности телепортации и вероятности перехода в модели случайного блуждания [… ] поэтому случайный блуждающий будет телепортироваться к узлам, связанным с предпочтительными темами (например, персонализированный рейтинг PageRank, взвешенный по узлам), или чаще перемещаться по границам, связанным с предпочтительными темами (например, персонализированный рейтинг PageRank, взвешенный по ребрам) […] [4]. Ниже приведена диаграмма, поясняющая назначение весов.
У меня есть несколько вспомогательных функций, помогающих обновить вес узлов и ребер.
Я уже рассмотрел математику в предыдущем посте, поэтому я не буду повторяться здесь. Вы можете обратиться к следующему сообщению для деталей.
Распечатка относится к биомедицинским объектам, идентифицированным процессором строфы NER.
И после обновления весов я получу следующее переназначение весов.
Вес узлов:
{'contrast': 2.718281828459045, 'In': 1.0, 'activates': 7.38905609893065, ',': 1.0, 'product': 2.718281828459045, 'the': 1.0, 'transcript': 2.718281828459045, 'of': 1.0, 'human': 1.0, 'CDKN2A beta': 20.085536923187668, 'p14ARF': 20.085536923187668, 'G2/M.': 2.718281828459045, 'response': 2.718281828459045, 'a': 1.0, 'p53': 20.085536923187668, 'manifest': 7.38905609893065, 'levels': 2.718281828459045, 'in': 1.0, 'elevated': 7.38905609893065, 'MDM2': 20.085536923187668, 'p21CIP1': 20.085536923187668, 'and': 1.0, 'arrest': 2.718281828459045, 'cycle': 2.718281828459045, 'cell': 2.718281828459045, 'G1': 2.718281828459045, 'both': 1.0}
Вес краев:
{('contrast', 'In'): 1.6487212707001282, ('contrast', ','): 1.6487212707001282, ('In', 'contrast'): 1.6487212707001282, ('activates', 'contrast'): 4.4816890703380645, ('activates', ','): 2.718281828459045, ('activates', 'product'): 4.4816890703380645, ('activates', 'manifest'): 7.38905609893065, ('activates', 'a'): 2.718281828459045, (',', 'the'): 1.0, (',', 'p14ARF'): 4.4816890703380645, (',', 'activates'): 2.718281828459045, ('product', 'the'): 1.6487212707001282, ('product', 'transcript'): 2.718281828459045, ('product', ','): 1.6487212707001282, ('product', 'of'): 1.6487212707001282, ('the', 'product'): 1.6487212707001282, ('the', 'human'): 1.0, ('transcript', 'of'): 1.6487212707001282, ('transcript', 'the'): 1.6487212707001282, ('transcript', 'human'): 1.6487212707001282, ('transcript', 'CDKN2A beta'): 7.38905609893065, ('transcript', 'p14ARF'): 7.38905609893065, ('transcript', ','): 1.6487212707001282, ('of', 'the'): 1.0, ('of', 'MDM2'): 4.4816890703380645, ('human', 'CDKN2A beta'): 4.4816890703380645, ('CDKN2A beta', 'transcript'): 7.38905609893065, ('p14ARF', ','): 4.4816890703380645, ('G2/M.', 'activates'): 4.4816890703380645, ('G2/M.', 'and'): 1.6487212707001282, ('response', 'a'): 1.6487212707001282, ('response', 'p53'): 7.38905609893065, ('response', 'manifest'): 4.4816890703380645, ('a', 'p53'): 4.4816890703380645, ('p53', 'response'): 7.38905609893065, ('manifest', 'response'): 4.4816890703380645, ('manifest', 'levels'): 4.4816890703380645, ('manifest', 'G1'): 4.4816890703380645, ('manifest', 'in'): 2.718281828459045, ('levels', 'in'): 1.6487212707001282, ('levels', 'elevated'): 4.4816890703380645, ('levels', 'MDM2'): 7.38905609893065, ('levels', 'arrest'): 2.718281828459045, ('levels', 'of'): 1.6487212707001282, ('in', 'elevated'): 2.718281828459045, ('in', 'both'): 1.0, ('elevated', 'levels'): 4.4816890703380645, ('MDM2', 'of'): 4.4816890703380645, ('MDM2', 'p21CIP1'): 20.085536923187668, ('MDM2', 'and'): 4.4816890703380645, ('p21CIP1', 'and'): 4.4816890703380645, ('and', 'p21CIP1'): 4.4816890703380645, ('and', 'cell'): 1.6487212707001282, ('and', 'G2/M.'): 1.6487212707001282, ('arrest', 'and'): 1.6487212707001282, ('arrest', 'cycle'): 2.718281828459045, ('arrest', 'in'): 1.6487212707001282, ('cycle', 'cell'): 2.718281828459045, ('cycle', 'arrest'): 2.718281828459045, ('cell', 'cycle'): 2.718281828459045, ('G1', 'in'): 1.6487212707001282, ('G1', 'both'): 1.6487212707001282, ('G1', 'G2/M.'): 2.718281828459045, ('G1', 'and'): 1.6487212707001282, ('both', 'G1'): 1.6487212707001282}
Вы можете вручную рассчитать, согласуются ли эти результаты с приведенной выше диаграммой, показывающей назначение/расчет весов.
Я повторно запускаю функцию для создания графика корреляции на основе этого обновленного взвешенного графика.
Вы можете заметить, что остались два кластера с токенами «activates» и «of», соединяющими два кластера. Ожидается токен активирует, поскольку он является корнем предложения и всегда будет соединять два кластера. При сравнении с предыдущим невзвешенным графиком вы заметите, что токен «MDM2» интегрирован в более крупный кластер вместе с токеном «p21CIP1» и теми, которые принадлежат второй именной группе предложение. Это имеет больше смысла, чем невзвешенный график. Токен «of», вытесняемый из кластера, согласуется с тем, что этот предлог можно найти как в подлежащем существительном, так и в объектном существительном.
In contrast, the product of the human CDKN2A beta transcript, p14ARF, activates a p53 response manifest in elevated levels of MDM2 and p21CIP1 and cell cycle arrest in both G1 and G2/M.
Я даже могу безопасно удалить токен «of» с графика, чтобы лучше представить его.
После удаления предлога «of» подструктуры становятся более заметными. Вы можете видеть, что есть три кластера с высокой степенью связи, каждый из которых представляет собой отдельную концепцию.
In contrast, the product of the human CDKN2A beta transcript, p14ARF [cluster 1], activates a p53 response manifest in elevated levels of MDM2 and p21CIP1 and cell cycle arrest in both G1 and G2/M. In contrast, the product of the human CDKN2A beta transcript, p14ARF, activates a p53 response manifest in elevated levels of MDM2 and p21CIP1 and cell cycle arrest [cluster 2] in both G1 and G2/M. In contrast, the product of the human CDKN2A beta transcript, p14ARF, activates a p53 response manifest in elevated levels of MDM2 and p21CIP1 and cell cycle arrest in both G1 and G2/M [cluster 3].
Эти 3 кластера соответствуют представлениям о том, как человек читает это предложение и интерпретирует его значение. И вы можете заметить, что кластер 1 и кластер 3 напрямую связаны токеном «активирует». Я бы предложил, чтобы эти два кластера соответствовали субъекту и объекту токена «активирует», тогда как кластер 2 (т. е. предложная фраза в предложении) находится там, где кластер 3 обусловлен на.
Антракт
Я рассмотрел шаги по преобразованию предложения в график для дальнейшего анализа и то, как взвешенная сеть повысит информативность графика.
В следующем посте я дополнительно проанализирую свойства графика, чтобы определить, могу ли я стандартизировать и автоматизировать весь процесс, чтобы повысить производительность и проанализировать весь корпус биомедицинских текстов.
Следите за обновлениями.
[1] https://en.wikipedia.org/wiki/Parse_tree
[2] https://www.cs.cornell.edu/~bindel//blurbs/edgeppr.html
[3] https://www.r-bloggers.com/2014/04/from-random-walks-to-personalized-pagerank/