Сап, ананасы. Когда-то давно увлекался морфологией с семантикой, даже хотел сделать свою софтину для подготовки размеченного корпуса (пик 1), да так и забросил. Тут снова решил заняться nlp темой, глянул, что из этого уже есть, оказалось многое, но вот, что мне не нравится - дефолтный формат деревьев, принятый при разметке корпусов.Мне кажется, что предпочтителен был бы формат бинарных деревьев, как на моём пике. Поясню (см. пик 2 - визуализация https://arborator.ilpga.fr/q.cgi выхлопа syntaxnet):В предложении "Большой зелёный воробей сидел на столе" - без запятой после большой - значимо именно то, что сидел зелёный воробей большого размера, а не то, что он был и большой и зелёный одновременно. То есть, эти слова никак не равнозначны - также можно сравнить фразы "Большой белый медведь" vs "Большой, белый медведь" - при текущем раскладе "белый медведь" не будет являться объектом повествования, объектом будет просто медведь, который, до кучи, ещё и белый.Что скажете, филологи мамкины? Зря я заморачиваюсь или есть-таки разница?
Вариант со стрелочками придумали давно, он удобнее на бумаге.Дерево более адекватно отражает структуру предложения. В нём могут присутствовать нетерминальные элементы, за счёт этого в нём может быть больше информации, то есть одинаковым структурам со стрелками могут соответствовать разные деревья.Подозреваю, что на практике такая неоднозначность будет редкостью. В большинстве же случаев ты несложным макросом сможешь однозначно восстановить дерево из стрелок.Но не буду отговаривать тебя это делать, ведь написать свой парсер это самая большая радость в жизни программиста.
Поздравляю тебя, ты изобрел минималистскую теорию Хомского: https://en.wikipedia.org/wiki/Merge_%28linguistics%29