Перейти к публикации
Форум химиков на XuMuK.ru
podkashey

Программа для получения структуры вещества по его названию

Рекомендованные сообщения

Вроде как пока не существует программы или онлайн сервиса по однозначному переводу названия вещества в его структурную формулу (SMILES). Это и не удивительно, так как расшифровку номенклатуры ИЮПАК бывает самому несколько проблематично сделать, а не то что научить этому компьютер. А с учетом того, что одни пишут сначала букавки, а потом циферки, другие наоборот, третии вообще приставки используют. С одной стороны все трое понимают о каком веществе идет речь и оно только одно (как и хотело ИЮПАК), но с другой стороны - сложно объяснить компьютеру все возможные варианты названий. Так что я задумался о несколько другом подходе к решению задачи вместо традиционного if then else. Может здесь применимы нейронные сети?

Кому интересно, можно почитать здесь: https://ru.wikipedia.org/wiki/%D0%98%D1%81%D0%BA%D1%83%D1%81%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F_%D0%BD%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B5%D1%82%D1%8C, но если вкратце, то это такая штука, которая не программируется, а обучается. Например, при помощи них распознаются картинки (капчи), предназначенные для защиты от роботов. В такую сеть засовывается, например, много-много картинок с буквой А, но с разным ее написанием. И говорится, что все эти картинки соответствуют именно букве А. Потом тоже самое с буквой Б итд. То есть происходит "обучение" сети. Потом дается произвольная картинка и спрашивается, что на ней нарисовано. Сама нейронная сеть не думает, как обычная программа - типа, слева вертикальная палочка, наверху горизонтальная и справа вертикальная, значит это буква П. В ней вообще нет никаких алгоритмов. Грубо говоря, она просто сравнивает - на какую из букв похож представленный рисунок. Или вообще ни на что не похож. При достаточном количестве обучающих примеров качество ее работы должно быть хорошее. Настройка и прочее управление сводится к подбору некоторых параметров. Например, изображение буквы является ничем иным как квадратом Н на М, где каждая точка имеет свой цвет. Программа, понятное дело, не может понять, что это. Грубо говоря, для нее это НхМ значений цветов для каждрй точки (строго говоря зависит от формата, но так проще). Как они идут - образуют квадрат или что-то в объеме или просто длинная вытянутая линия, для нее значения не имеет. Собственно, настройка нейронной сети и подразумевает подбор каких-то параметров, которые будут лучше работать именно для данных такого вида (квадрат с нарисованной буквой).

Ну и основная мысль: взять нейронную сеть, настроить по возможности параметры и долго-долго обучать ее всевозможными примерами, вбивая ИЮПАК и ставя в соответствие структурную формулу. Начинать с простых примеров, постепенно усложняя. Типа, гидроксид водорода, дигидрогена монооксид, оксид(II) водорода(I), вода - 0 (если юзать smiles). метилкарбонол, этанол, этиловый спирт - cco итд. Сама настройка сети будет сводиться к обучению ее нормальному трактованию всякого рода ди, три, изо, цис, транс и прочих водородов.

Что получится из этого всего на самом деле я не знаю, но думается, что что-то получиться должно. Может кто-то разбирается в нейронных сетях, или где-то давно есть такая программа, или я полный бред несу и спать пора идти, вобщем любые мысли по существу будут интересны.

Поделиться сообщением


Ссылка на сообщение

Вообще-то создавать по названию вещества структурную формулу сейчас умеют многие программы, например Marvin Sketch, Accerlys и т.п.

Поделиться сообщением


Ссылка на сообщение

Вообще-то создавать по названию вещества структурную формулу сейчас умеют многие программы, например Marvin Sketch, Accerlys и т.п.

На русском тоже? Если верить википедии, то каждая страна вносит некоторые поправки в ИЮПАК, ибо там не все так однозначно.

Поделиться сообщением


Ссылка на сообщение

... каждая страна вносит некоторые поправки в ИЮПАК, ибо там не все так однозначно.

 

Думаю, большинство преподавателей, которые это говорят (а также пишут в книжках) никогда не читали документацию ЮИПАК. Поэтому получаются неоднозначности.

 

Кроме того, большинство названий переводятся на русский простой транслитерацией.

Поделиться сообщением


Ссылка на сообщение

Я довольно внимательно читал документацию ИЮПАК. Давайте я приведу пример неоднозначности. Пожалуйста, назовите по ИЮПАК следующие эфиры кислот: ClCOOCH3, O2NCOOCH3, N3COOCH3, FCOOCH3, HCOOCH3, NC-COOCH3.

Поделиться сообщением


Ссылка на сообщение

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

Но конечно, такие задачи не решаются при помощи if-else.

При реализации своего онлайн-сервиса, генерирующего структурные формулы из названий

http://easychem.org/ru/name-formula

я использовал метод информационной доски, который применяется в криптоанализе.

Честно говоря, сервис я не доделал. Он умеет распознавать названия довольно ограниченного множества веществ.

Но тем не менее, различает разные формы описания. Например: 2-гексанол, гексанол-2 и гексан-2-ол.

Даже 2-пентенол-3, причём я даже точно не знаю, правильная ли формула из этого получается.

Или вот интересный пример: 1,2,3,4,5-пентахлор пентанол

Тут одна лексема "пента" используется дважды в разном значении.

Поделиться сообщением


Ссылка на сообщение

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...