Фон

В последнем посте я рассказал, как будут работать два параметра функции 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/

[4] https://dl.acm.org/doi/10.1145/2783258.2783278