Если не считать полного морфологического анализатора, вы можете обойти это с помощью списков исключений и самого длинного сопоставления.
Например: вы предполагаете, что un- выражает отрицание. Сначала найдите более длинные префиксы (например, uni- ) и сравните их сначала, прежде чем смотреть на un- . Будет несколько исключений, например неинтересно , которые вы можете проверить отдельно. Это будет довольно небольшой список sh. Затем, когда все слова uni- будут обработаны, все, что начинается с un- , является кандидатом, хотя также будут исключения, такие как под .
Немного лучшее решение возможно, если у вас есть базовый список c слов: вырезать un- с начала строки и проверить, находится ли остаток в вашем слове список. Университет станет iversity , которого нет в вашем списке, и, следовательно, это не префикс un- . Однако неинтересно превратится в интересно , то есть здесь вы нашли действительный префикс. Все, что вам нужно для этого, - это список неотрицательных слов. Конечно, вы также можете использовать это для других префиксов, таких как альфа-приватный , как в нетипичный остаток типичный будет в вашем списке.
Если у вас нет такого списка, просто разделите свой текст на лексемы, отсортируйте и определите их уникальность, а затем просканируйте строку слов, начинающуюся с префиксов кандидатов. Это немного утомительно, но количество релевантных слов невелико. Это то, что мы все делали в НЛП 30 лет go ...:)