В принципе, я хочу создать программу, которая принимает предложение/абзац как пользовательский ввод, ищет синоним для каждого слова и заменяет слово синоним. Программа, которую я создал до сих пор, работает отлично, но есть некоторые ошибки/ошибки пользователя/ошибки. Вот что я получил прямо сейчас:Программа Python, которая заменяет каждое слово в предложении синонимом
response=input("Enter what you want to thesaurize")
orig=response #puts user input into a string
num=orig.count(" ")+1 #finds number of words in the sentence
orig=orig.split(" ") #turns the sentence into a list of its words
new=[] #creates a new list to put the new words in, in case I'd want to go back to the original sentence for any reason
for i in range (num):
if orig[i] not in badWords: #makes sure that the word is not a no-synonym word like "the" or "be"
new.insert(i, myFuncs.replace(orig[i])) #the replace function (which I put in a separate module for neatness purposes) looks up the word on thesaurus.com and replaces it with a synonym
else:
new.insert(i, orig[i]) #If the word is an excluded word, it simply leaves it alone and keeps it in the new sentence
final="" #creates an empty string to put the new words in
for j in range(0,num):
final=final+new[j]+" " #turns the list of new words into a string that can be printed
print(final)
Опять же, это работает отлично, но есть некоторые проблемы. В основном я уменьшил его до 4 основных проблем, которые возникают:
1) Слово не имеет синонима, но все еще не было в списке исключенных слов;
2) Вводится неправильное значение слова или возвращается значение, которое не имеет смысла в контексте ввода пользователя;
3) Неправильно напряженный глагол возвращаются и
4) Когда существительное вводятся глагол этого слова возвращается, или наоборот (то есть «Я гриль курица» превращается в " Я буду стрелять из курицы "или что-то в этом роде).
В принципе, я могу исправить все эти проблемы вручную, попросив пользователя пройти каждое слово, которое не имеет смысла, а затем с помощью вложенных if-else и других структур управления, чтобы направлять их путем выбора правильного слова, но Я думаю, что это будет утомительно для пользователя и разрушит весь смысл, особенно если они войдут во что-то с большим количеством слов.
Так что в основном я спрашиваю, какие из этих проблем я могу автоматизировать? То есть, есть ли способ написать код, чтобы компьютер мог распознать любую из этих проблем? Фиксация их - легкая часть, но на самом деле получение программы для распознавания логических ошибок вместо того, чтобы заставить пользователя иметь дело с ней, является трудной частью.
Это сложная проблема в области семантического разбора. Некоторые из нас не могут быть разрешены на SO. Если вы не знакомы, взгляните на обработку естественного языка и машинное обучение. – erip
Чтобы проверить правильность замены, вы можете использовать любое программное обеспечение для перевода начального и измененного сообщений на другой язык. Если результаты перевода обоих расценок совпадают, ваша замена была правильной. Речь идет о проблемах (2) и (4). – Ilya
Вы можете взглянуть на NLTK (Natural Language ToolKit), предоставляя ['WordNet'] (http://www.nltk.org/_modules/nltk/corpus/reader/wordnet.html), которые поддерживают поиск синонимов. – albert