Python中的单词替换

时间:2018-10-12 05:42:59

标签: python-3.x text

我正在处理包含客户反馈信息的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用户,您将需要对其进行愚弄。

谢谢。

0 个答案:

没有答案