Как я могу использовать обработку естественного языка, чтобы разделить предложение пополам? - PullRequest
0 голосов
/ 28 апреля 2020

Я никогда не занимался обработкой естественного языка, поэтому, пожалуйста, извините за неправильную терминологию. Я открыт для использования любого языка / библиотеки, например NLTK или spaCy, но без платного API.

Я пытаюсь создать игру, в которой пользователь должен закончить sh известную цитату своими собственными .

Пример ввода:

Комната без книг похожа на тело без души.

Желаемый результат:

Комната без книг ...

Я бы хотел иметь более сложные предложения, такие как:

Я узнал, что люди забудут то, что вы сказал, что люди забудут то, что вы сделали, но люди никогда не забудут, как вы их чувствовали.

Желаемый результат:

Я узнал, что люди забудут, что ты сказал ...

Другой пример:

Не ходи передо мной ... Я не могу следовать

Не ходи позади я ... я не могу вести

иди рядом со мной ... просто будь моим другом

Желаемый результат:

Не ходи передо мной ... Я не могу следовать ...

Я чувствую, что выделение словосочетаний / фраз - это почти то, что я хочу, но не совсем. Может быть что-то вроде (псевдокод):

phrases = extractAllPhrases(sentence)
middlePhrase = phrases.length / 2
desiredOutuput = sentence.substring(0, sentence.offset(middlePhrase) + middlePhrase.length))

Это слишком сложно, чтобы достичь с помощью НЛП? Не слишком ли много синтаксических переменных в языке Engli sh, чтобы покрыть их, чтобы получить согласованные результаты? Должен ли я просто вручную разделить цитаты? Я открыт для предложений вместо рабочих ответов, таких как «Читай бла-бла», я просто не знаю, с чего начать. Но я хотел бы знать, возможно ли это, прежде чем я потрачу много времени на изучение НЛП, просто чтобы выяснить, что это невозможно.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Вот более короткая форма этого. Вы можете попробовать этот код

sentence = "A room without books is like a body without a soul."
truncate_text = (sentence[:40] + '....') if len(sentence) > 40 else sentence
print(truncate_text)

0 голосов
/ 28 апреля 2020

ну, это можно сделать без использования НЛП. Вот код python.

sentence = "A room without books is like a body without a soul."
sentence_list = sentence.split(" ")
length = len(sentence_list)
output = sentence_list[0:round(length/2)]
print(" ".join(output)+"...")
...