Не так просто ^^
Сначала вы должны использовать фильтр стоп-слов, чтобы извлечь из него слова, не содержащие информации. Вот несколько хороших
Тогда вы хотите обработать синонимы. Это на самом деле очень сложная тема, потому что для этого вам нужна некая двусмысленность слов. И большинство современных методов немного лучше, чем самое простое решение. Это значит, что вы принимаете наиболее употребляемое значение слова. Что вы можете сделать с WordNet . Вы можете получить синтаксис для слова, в котором есть все синонимы. Затем вы можете обобщить это слово (оно называется гиперонимом), принять наиболее часто используемое значение и заменить им поисковый термин.
Проще говоря, обработка синонимов довольно сложна в НЛП. Если вы просто хотите работать с различными формами слов, такими как, например, добавление и добавление, вы можете использовать стеммер, но ни один стеммер не поможет вам перейти от сложения к сумме (wsd - единственный выход)
И тогда в ваших предложениях есть разные порядки слов, которые не следует игнорировать, если вы хотите получить точные ответы (x + y = z отличается от x + z = y). Итак, вам также нужны зависимости от слов, чтобы вы могли видеть, какие слова зависят друг от друга. Stanford Parser на самом деле лучше для этой задачи, если вы хотите использовать английский язык.
Возможно, вам следует просто извлечь из предложения существительные и глаголы, выполнить всю предварительную обработку и запросить зависимости в вашем поисковом индексе.
Зависимость будет выглядеть как
x (sum, y)
y (sum, x)
sum (x, y)
который вы можете использовать для поиска
Таким образом, для получения результата вам нужно токенизировать, обобщать, получать зависимости, фильтровать неважные слова. И если вы хотите сделать это на немецком языке, вам также понадобится слово decompounder.