Создание грамматически правильных предложений является сложной задачей при обработке естественного языка. Алгоритм должен генерировать предложения не только из существующих примеров, но и новые возможные предложения из существующих примеров. В противном случае работа будет эвристическим поиском, а не обучением или интеллектом.
Если предположить, что предложение представляет собой последовательность слов, следующих графической модели, то мы можем использовать графические алгоритмы для создания новых предложений. Но это упирается в непреодолимую проблему клики, которую еще предстоит решить.
Предполагая, что грамматика является проблемой клики, нам нужны направленные клики вместо неориентированных клик. Если поиск неориентированных клик — более сложная задача, то поиск направленных клик — самая сложная задача. Наш текущий алгоритм пытается решить эту проблему, генерируя новые последовательности слов путем создания направленных клик.
Показанные здесь результаты не являются общим доказательством проблемы клики, поскольку я не тестировал текущий алгоритм на других проблемных областях, таких как данные социальных сетей. Это показывает, как новые предложения могут быть сгенерированы с использованием графических рассуждений, которые могут решить проблему клики в грамматике естественного языка и других областях.
Взгляните на приведенные ниже рисунки.
Сгенерированные предложения
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
Я не проверял все выводы вручную из-за нехватки времени. Я проверил примеры случайным образом, чтобы проверить грамматическую правильность. С удовольствием поправлю, если кто опровергнет.