Научное название обычно состоит из трех частей информации: род, вид эпитетон и автор. Простой пример будет следующим:Разделение научных названий
ACANTHUS ilicifolius L.
- рода: ACANTHUS
- Видов epitheton: ilicifolious
- Автор: Л.
Easy. Однако вопрос усложняется, когда мы имеем дело с гибридами, подвидами/разновидностями/формами, несколькими авторами и другими несоответствиями. В этих случаях название вида может выглядеть следующим образом:
ср. Andrographis paniculata (Burm.f.) Стена. ех Nees
- ср .: вид не был определен со 100% уверенностью
- рода: Andrographis
- Видов epitheton: метельчатый
- Автор: (Burm.f.) стена. ех Nees
этом:
ипомеи ПЭС-caprae (L.) DC. подвид. Brasiliensis (L.) Ooststr.f
- Род: Ipomea
- Виды epitheton: ПЭС-caprae
- Виды Автор: (L.) DC.
- подвид epitheton: Brasiliensis
- подвид Автор: (L.) Ooststr.f
Я пытаюсь найти надежный способ деконструировать такие имена. Я мог бы написать какой-то хакерский код, используя тс если if/else, но я ищу что-то более элегантное (и надежное). Я думал о каком-то синтаксическом анализаторе, который анализирует имя подобно калькулятору, анализирующему математическое выражение. К сожалению, я не самый сложный программист, и я даже не написал настоящий парсер раньше, и не знаю, будет ли это иметь смысл в этом случае, поскольку в научных именах существует довольно много вариаций. Как вы думаете, как лучше всего решить эту проблему? Предпочтительным языком является R, возможно, также Julia, если он лучше подходит для этой задачи.
Я бы предложил НЕ пытаться написать синтаксический анализатор для любого биологического типа данных, если только никто не сделал этого раньше. Вы столкнетесь с таким количеством случаев с краями, о которых вы не подумали, когда вы разработали свой парсер. Биологи - это странный вид :) Я бы предложил попробовать найти подходящий парсер, который бы соответствовал вашим потребностям и использовать его вместо того, чтобы изобретать колесо. – cel
Вам нужно будет составить очень точный список правил, которые компьютер мог бы выполнить для анализа этих выражений. Ваши три примера кажутся недостаточными, чтобы полностью определить, как будет работать синтаксический анализ. Мне, как человеку, было бы трудно разобрать их. – MrFlick