Генератор предложений с использованием тезауруса
Я создаю приложение в .NET.
Я получил запущенное имя приложения http://www.spinnerchief.com/. Он сделал то, что мне было нужно, но я не получил никакой помощи от Google.
Мне нужны функциональные результаты для моего приложения, где пользователи могут дать одно предложение, а затем пользователь может получить одно и то же предложение, но оно сформулировано по-разному.
Вот пример желания, который я хочу.
Предположим, я поставил предложение, которое "Панкай - хороший человек". Результат должен быть похож на следующий:
Панкай - отличный человек. Панкадж - превосходный человек.
Панкадж - приемлемый парень.
Панкай - прекрасный чувак.
Панкай - превосходный мужчина.
Панкадж - хороший человек.
Панкай - великолепный джентльмен.
Ответы
Ответ 1
Чтобы сделать это правильно для любого произвольного предложения, вам понадобится выполнить естественный анализ исходного предложения. Вы можете посмотреть в библиотеку SharpNLP - это бесплатная библиотека инструментов для обработки естественного языка для С#/. NET.
Если вы ищете более простой подход, вы должны быть готовы пожертвовать правильностью в какой-то степени. Например, вы можете создать словарь триггерных слов, которые - когда они появляются в предложении - заменяются синонимами из тезауруса. Проблема с этим подходом заключается в том, чтобы вы заменили слово эквивалентной частью речи. На английском языке для определенных слов возможно, что разные слова речи (глагол, прилагательное, наречие и т.д.) Основаны на их контекстуальном использовании в предложении.
Дополнительное соображение, которое вам необходимо решить (если вы не используете библиотеку НЛП), является следствием. В большинстве языков некоторые части речи сопряжены/модифицированы (глаголы на английском языке) на основе предмета, к которому они относятся (или объекта, говорящего или времени предложения).
Если все, что вы хотите сделать, это заменить прилагательные (как в вашем примере), подход к использованию триггерных слов может работать, но он не будет легко расширяться. Прежде чем что-либо сделать, я бы предложил вам четко определить требования и правила для вашей проблемной области... и использовать это, чтобы решить, какой маршрут принять.
Ответ 2
Для этого лучше всего использовать WordNet и это hyponym/hypernym отношения. Существует библиотека WordNet.Net. Для каждого слова, которое вы хотите чередовать, вы можете либо получить его гиперним (то есть для человека, гиперним означает "человек - это своего рода..." ) или гипоним ( "X - это своего рода человек" ). Затем просто замените слово, которое вы чередуете.
Вы захотите убедиться, что у вас есть правильная часть речи (то есть существительное, прилагательное, глагол...), и есть также проблема чувств, которая может привести к некоторым нежелательным чередованиям (смысл №1 - это наиболее распространенный).
Ответ 3
Я ничего не знаю о .Net, но вы должны изучить функцию словаря (я уверен, что есть одна или, по крайней мере, библиотека, которая упрощает процесс, если нет).
Затем вам придется пройти через строку и пропустить слова типа "есть" или "а". Только взятие слов, для которых вы хотите иметь синонимы.
После этого его довольно просто, чтобы цикл выплевывал ваши предложения.
Удачи.