我正在处理包含客户反馈信息的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转换为乘积x,则转换的时间为90%。
在某些记录中,它仍然是xxxx。
有时我将xxxx转换为xroductX。有些是yyyy,有时我会得到yroduct Y。
我已经尝试过使用'xxxx'->'xxxx','xxxx'和'xxxx'的替代方法,但无济于事。
我已经查看了需要转换的单词在测试字符串中的位置(例如开始,中间,结束),并且没有提示为什么代码不能在所有实例中都起作用。
如果xxxx在字符串中出现两次,则有时两者都被转换,有时被转换,有时都没有转换。
任何帮助将不胜感激。在您的回复中,请考虑我是20岁的SAS用户,4周的Python用户,您将需要对其进行愚弄。
谢谢。