Ваша идея интересна, если только немного наивна (но не беспокойтесь, наивные вопросы полезны в области НЛП).
Оставляя в стороне другие практические вопросы (например, парсинг, POS-тегирование, прохождение и, конечно, саму проблему идентификации / отображения данного слова ... Я их очень кратко обсуждаю после этого), есть несколько трудности с самим принципом вашего предложения [числовой шкалы, где семантически близкие слова кодируются в непосредственной близости]:
- Polysemy (причудливое слово, обозначающее тот факт, что некоторые слова могут иметь множественное, несвязанное значение)
- Семантика многомерна. Например, существительное «gumption» передает как идею «энергии», так и идею «энтузиазма»
- Некоторые понятия совершенно не связаны с другими, например, говорят, что «чай» и «ковер» принадлежат двум разным наборам слов, но попытка поместить их в линейный масштаб неявно лишает идеи, что расстояние в этом масштабе (другое чем, может быть, очень маленькие расстояния) имеют какое-либо отношение к семантике.
- Выражения: внутри предложения определенное понятие иногда переносится выражением, а не отдельными словами. Например, «Человек Ренессанса» или «Содержание».
- Семантика иногда (часто) происходит из контекста. Например, «босс» часто ссылается на чьего-либо руководителя, это также прозвище Брюса Спрингстина.
В двух словах
а) значение (или « определение », как его называют в вопросе, или « семантика », как его называют лингвисты) - хитрая вещь, которая не поддается отображению на линия или даже дерево. Можно использовать и другие графы, такие как сети, но даже тогда все может стать немного сложнее, если применить его за пределами относительно ограниченных областей.
и
б) ассоциировать слова со значениями также сложно из-за многозначности, выражений и т. д.
Тем не менее, если вы хотите попробовать тип отображения, предложенный в вопросе, возможно, в контексте определенной области (скажем, спортивного комментария или ремонта механики) и / или понимания того, что некоторые слова просто должны быть произвольно нанесены на карту, перед «погружением» вы можете ознакомиться со следующими дисциплинами и ресурсами НЛП (обработка естественного языка) :
Что касается вашего интереса к использованию инструментов, написанных на C ++ , вы, вероятно, найдете несколько из них для различных целей (и различного качества!). Вы также можете обнаружить, что, хотя они иногда связываются с примитивами, написанными на C / C ++ по соображениям производительности, многие современные фреймворки и инструменты NLP, как правило, используют Java или даже языки сценариев, такие как Python. У меня нет прямого опыта работы с программным обеспечением НЛП на C ++. Если вы не можете найти то, что вам нужно (в C ++), я настоятельно рекомендую вам попытаться реализовать что-то самостоятельно, по крайней мере, до того, как вы ранее подробно рассмотрели предыдущее искусство и хорошо разбираетесь в основных трудностях.