Создание грамматически правильных предложений является сложной задачей при обработке естественного языка. Алгоритм должен генерировать предложения не только из существующих примеров, но и новые возможные предложения из существующих примеров. В противном случае работа будет эвристическим поиском, а не обучением или интеллектом.

Если предположить, что предложение представляет собой последовательность слов, следующих графической модели, то мы можем использовать графические алгоритмы для создания новых предложений. Но это упирается в непреодолимую проблему клики, которую еще предстоит решить.

Предполагая, что грамматика является проблемой клики, нам нужны направленные клики вместо неориентированных клик. Если поиск неориентированных клик — более сложная задача, то поиск направленных клик — самая сложная задача. Наш текущий алгоритм пытается решить эту проблему, генерируя новые последовательности слов путем создания направленных клик.

Показанные здесь результаты не являются общим доказательством проблемы клики, поскольку я не тестировал текущий алгоритм на других проблемных областях, таких как данные социальных сетей. Это показывает, как новые предложения могут быть сгенерированы с использованием графических рассуждений, которые могут решить проблему клики в грамматике естественного языка и других областях.

Взгляните на приведенные ниже рисунки.

Сгенерированные предложения

I would warmly
I warmly welcome
I would welcome
I welcome
I would warmly
I warmly for
I would for
I for
I would warmly
I warmly encourage
I would encourage
I encourage
I would warmly
I warmly support
I would support
I support
I would warmly
I warmly thank
I would thank
I thank

какие новые предложения вытекают из этого???

I would warmly thank
I would warmly for
I would warmly encourage
I would warmly support
I would warmly welcome

Все ли выводы найдены в исходном тексте? Нет. Некоторые из них верны в самом тексте, а другие грамматически верны вне исходного текста.

В этом примере «Я бы тепло за» может быть грамматически неправильным. Почему он генерируется? Потому что римская буква I и местоимение I в исходном тексте не различаются. Пример: «предложение «SIS I для всех»» . Таким образом, это также генерирует ошибки вида «Я есть».

«Я» также генерируется, потому что «Мои коллеги и я» — это строки в исходном тексте. Это можно исправить, используя другой алгоритм, проверяющий глобальную грамматику.

Total number of words in the text : 40723
Total number of inferences made : 3075
Number of unique words in inferences : 369
Time taken : 13 secs

Таким образом, анализируя 40 000 слов, мы делаем 3 000 новых выводов за 13 секунд. Это для того, чтобы взять слово как корневое слово. Теоретически все слова в тексте могут быть проанализированы для создания новых предложений.

Проверьте все сгенерированные последовательности здесь. Ключи от Key1 до Key 4 извлекаются из графика. Key5 — это сгенерированный вывод.

Поскольку это предложение состоит из четырех слов, его можно расширить до 5, 6, 7… слов.

Data used : Random text from EU parliament transcript
Database :  custom developed General Purpose database as Graph Database
Graph Algorithm :  custom developed Graph Framework
Hardware Details : Intel i7 8 core, 16 GB RAM. 
Execution Details : Pure Python based single thread execution

Я не проверял все выводы вручную из-за нехватки времени. Я проверил примеры случайным образом, чтобы проверить грамматическую правильность. С удовольствием поправлю, если кто опровергнет.