Поэтому мои друзья и я создаем несколько языков для удовольствия, и я решил, что это будет хороший шанс практиковать питон и сделать переводчика. Язык очень прост, поэтому в этот момент я думал, что могу сделать отдельные словари для размещения всех разных частей речи, а затем связать их вместе в строку. Вначале я начал с местоимения dict, и глагол dict начал только для того, чтобы получить переводную часть. Это то, что у меня есть сейчас, хотя оно не работает
pro = {"I":"ii"}
verb = {"am":"esti"}
noun = {"theatre":"trieto"}
adj = {"red":"reada"}
sentence = input("translate: \n")
for word in sentence.split(" "):
print(pro.get(word, word)+ verb.get(word, word))
Я хочу сделать переводчика, который в основном включает слова в конкретную часть речи в строке.
Если есть совершенно другой способ сделать это, это облегчит мне все уши. Также мне сложно учиться nltk для этого, поэтому, если вы знаете, как использовать nltk для этого, я был бы очень благодарен за то, что вы узнаете.
Если вы хотите рассматривать каждое слово как потенциально какую-либо часть речи, у вас нет необходимости в отдельных словарях для каждой части речи, просто в одном большом словаре.
Итак, пусть их слить:
translate = {}
for d in pro, verb, noun, adj:
translate.update(d)
... и теперь то, что вы хотите сделать, тривиально:
for word in sentence.split(" "):
print(translate.get(word, word))
Если, с другой стороны, у вас есть логика, чтобы выбрать часть речи, основанную, скажем, на позиции, вам нужно написать эту логику.
Например, возможно, первое слово всегда является местоимением, затем глаголом, затем 0 или более прилагательными, а затем существительным. (Это довольно глупая грамматика для английского, но это пример для начала.) Итак:
p, v, *aa, n = sentence.split()
print(pro.get(p, p))
print(verb.get(v, v))
for a in aa:
print(adj.get(a, a))
print(noun.get(n, n))
Чтобы начать, вы можете просто проверить, появляется ли слово в каждом словаре, и распечатать перевод, если это произойдет.
pro = {"I":"ii"}
verb = {"am":"esti"}
noun = {"theatre":"trieto"}
adj = {"red":"reada"}
sentence = input("translate: \n")
for word in sentence.split(" "):
if word in pro:
print(pro[word] + " ")
elif word in verb:
print(verb[word] + " ")
elif word in noun:
print(noun[word] + " ")
elif word in adj:
print(adj[word] + " ")
else:
print(word + " ")
else if
), но, кроме того, это чрезмерно усложняет вещи.