Преобразование текста от первого лица ко второму человеку с проблемами игнорирования текста в кавычках - PullRequest
2 голосов
/ 07 января 2020

Я пытаюсь преобразовать истории / предложения / слова / 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()

Выходной текст: Суть в том, что если вы собираетесь рассказать кому-нибудь о лягушке, это будет Сой. Вы решили, что наша прогулка домой будет самым подходящим временем. «Вы видели что-нибудь снаружи сегодня во время математики?»? » Я спросил Сой, когда мы начали идти. " " Что вы имеете в виду? Как в небе? » спросил он, перепрыгивая через трещины на тротуаре. «Я имею в виду прямо за окном. Как прямо против этого », - ответил я. «Как человек?»? спросил он, все еще прыгая. Сой сидел в ряду, наиболее удаленном от окна, поэтому было возможно, но маловероятно, чтобы кто-то прошел мимо, не заметив его.

Проблема: Таким образом, код преобразует текст от первого лица в второе лицо, кроме слов в цитатах. Однако после определения цитат он добавляет «к тексту, когда видит». Он также добавляет дополнительную пунктуацию, когда видит пунктуацию (?!.,). Мне нужна помощь с этим вопросом.

...