Я пытаюсь преобразовать истории / предложения / слова / et c из первого лица в грамматику второго лица, но пытаюсь не преобразовывать текст в кавычки "" или "".
Читает файл с Google Drive и делает его строкой. 'forms = {..}' - список слов для преобразования. Он преобразует слова и игнорирует слова в кавычках.
import nltk
import re
from google.colab import drive
from nltk.tokenize.treebank import TreebankWordDetokenizer
drive.mount('/content/drive')
sent = open('/content/drive/My Drive/storyuno.txt', 'r', encoding="utf8")
quote_re = re.compile(r'["“”]')
forms = {"am" : "are", "are" : "am", 'i' : 'you', 'my' : 'yours', 'me' : 'you', 'mine' : 'yours', 'you' : 'I', 'your' : 'my', 'yours' : 'mine'} # More?
def translate(word):
if word.lower() in forms: return forms[word.lower()]
return word
translated = []
quote_mode = False
for word in nltk.wordpunct_tokenize(sent.read()):
if quote_mode:
translated.append(word)
if quote_re.search(word): quote_mode = False;
if not quote_mode:
translated.append(translate(word))
if quote_re.search(word): quote_mode = True;
result = ' '.join(translated)
detokenizer = TreebankWordDetokenizer()
result = detokenizer.detokenize(translated)
print(result)
sent.close()
Выходной текст: Суть в том, что если вы собираетесь рассказать кому-нибудь о лягушке, это будет Сой. Вы решили, что наша прогулка домой будет самым подходящим временем. «Вы видели что-нибудь снаружи сегодня во время математики?»? » Я спросил Сой, когда мы начали идти. " " Что вы имеете в виду? Как в небе? » спросил он, перепрыгивая через трещины на тротуаре. «Я имею в виду прямо за окном. Как прямо против этого », - ответил я. «Как человек?»? спросил он, все еще прыгая. Сой сидел в ряду, наиболее удаленном от окна, поэтому было возможно, но маловероятно, чтобы кто-то прошел мимо, не заметив его.
Проблема: Таким образом, код преобразует текст от первого лица в второе лицо, кроме слов в цитатах. Однако после определения цитат он добавляет «к тексту, когда видит». Он также добавляет дополнительную пунктуацию, когда видит пунктуацию (?!.,). Мне нужна помощь с этим вопросом.