Системы NLG, основанные на правилах, такие как SimpleNLG , позволяют изменять лицо и время фразы.Проблема, с которой вы сталкиваетесь, состоит в том, что в вашем корпусе есть описания свободного текста, а не описания, определенные такой формальной грамматикой.
Хотя преобразование ваших описаний в такую грамматику может оказаться возможным, в вашем случае это, возможно, излишне.Если ваши описания относительно просты, вы можете попробовать запустить их через парсер, например spaCy .Это идентифицирует лицо (и время) местоимений в ваших описаниях.Вы можете просто изменить их («я» на «ты», «мой» на «твой» и т. Д.).Кроме того, вы можете отказаться от тех, кто не во втором лице и обучаются на подмножестве корпуса.
Код Python:
import spacy
nlp = spacy.load('en_core_web_sm')
doc = nlp(u'A photo of you beside your car')
for token in doc:
print(token.text, token.lemma_, token.pos_, token.tag_, token.dep_,
token.shape_, token.is_alpha, token.is_stop, nlp.vocab.morphology.tag_map[token.tag_])
Дает вывод:
A a DET DT det X True False {74: 89}
photo photo NOUN NN ROOT xxxx True False {74: 91, 'Number': 'sing'}
of of ADP IN prep xx True True {74: 84}
you -PRON- PRON PRP pobj xxx True True {74: 94, 'PronType': 'prs'}
beside beside ADP IN prep xxxx True True {74: 84}
your -PRON- ADJ PRP$ poss xxxx True True {74: 83, 'PronType': 'prs', 'Poss': 'yes'}
car car NOUN NN pobj xxx True False {74: 91, 'Number': 'sing'}
Вы можете написать несколько простых правил морфологии, чтобы изменить свои описания, заменив каждое местоимение первого и третьего лица соответствующим эквивалентом второго лица.Взгляните на SimpleNLG MorphologyRules для некоторых идей.Это может привести к некоторым ошибкам в корпусе, если есть случаи, когда простой замены местоимения недостаточно, но, не видя некоторых примеров вашего корпуса, трудно комментировать дальше.