Я работаю с 4000 символьными текстовыми строками, содержащими информацию обратной связи с клиентом.Информация подготовлена сотрудником и заполнена жаргоном, таким как коды продуктов.Мне нужно расширить эти коды продуктов.В настоящее время я использую некоторый код, используемый в Sarkar (2016), который расширил сокращения.
Большую часть времени код работает, хотя будут случаи, когда он не работает.Лучше всего показать код, чтобы объяснить, что происходит.
ABBREVIATION_MAP = {
"xxxx" : "Product X",
"yyyy" : "Product Y",
"zzzz" : "Product Z"
}
def expand_abbreviations(sentence, abbreviation_mapping):
abbreviations_pattern = re.compile('({})'.format('|'.join(abbreviation_mapping.keys())),
flags=re.DOTALL)
def expand_match(abbreviation):
match=abbreviation.group(0)
first_char = match[0]
expanded_abbreviation = abbreviation_mapping.get(match)\
if abbreviation_mapping.get(match)\
else abbreviation_mapping.get(match.lower())
expanded_abbreviation = first_char+expanded_abbreviation[1:]
return expanded_abbreviation
expanded_sentence = abbreviations_pattern.sub(expand_match, sentence)
return expanded_sentence
df1['after'] = df1['before'].apply(lambda x: expand_abbreviations(x, ABBREVIATION_MAP))
Если мы посмотрим на преобразование xxxx в Product x, 90% времени, когда оно работает.
Однако в некоторых записях оно остаетсяxxxx.
Иногда я получаю xxxx, преобразованный в xroduct X. Что-то для yyyy, иногда я получаю y.
Я экспериментировал с использованием альтернатив 'xxxx' -> 'xxxx',«xxxx» и «xxxx» безрезультатно.
Я рассмотрел расположение слова, требующего преобразования в тестовой строке (например, начало, середина, конец), и нет никаких подсказок относительно того, почемукод не работает во всех случаях.
Если xxxx встречается дважды в строке, иногда оба преобразуются, иногда один, иногда ни один.
Любая помощь приветствуется.В своем ответе, пожалуйста, учтите, что я 20-летний пользователь SAS, 4-недельный пользователь Python, вам нужно будет его замять.
Спасибо.