Перейти к содержанию
Форум химиков на XuMuK.ru

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


podkashey

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

🚑 Решение задач, контроши, рефераты, курсовые и другое! Онлайн сервис помощи учащимся. Цены в 2-3 раза ниже!

Вроде как пока не существует программы или онлайн сервиса по однозначному переводу названия вещества в его структурную формулу (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 и т.п.

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

Ссылка на комментарий

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

 

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

 

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

Ссылка на комментарий

Я довольно внимательно читал документацию ИЮПАК. Давайте я приведу пример неоднозначности. Пожалуйста, назовите по ИЮПАК следующие эфиры кислот: 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-пентахлор пентанол

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

Ссылка на комментарий

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...