2025年1月10日
- 如何提取客服和顾客历史对话中的后四条顾客消息
- 假如有这样的客服和顾客的历史对话字符串。
assistant: Вы можете попробовать связаться с почтовым отделением, чтобы подтвердить проблему с доставкой. Телефон почтового отделения: 154, MTC: +375. 3330001 54, А1: +375 4459001 54; сайт почтового отделения: https://belpost.by /. \\n\\n user: The other day I was at the post office and asked where my parcel was. They said that it was not on the territory of the Republic of Belarus because customs had not received it. \\n\\n assistant: Уважаемый клиент, Пожалуйста, помогите нам подождать еще 2 недели. Почти все посылки наконец-то могут быть успешно доставлены. Пожалуйста, будьте терпеливы, вы скоро получите свои посылки. Надеюсь на ваше любезное понимание. С наилучшими пожеланиями. \\n\\n user: I'm waiting. If anything arrives, I'll let you know. I have no malicious intent. I've been a user of this trading platform for a long time. \\n\\n assistant: .Надеюсь, вы скоро получите свою посылку и хорошего вам дня. \\n\\n user: Good day. Finally the parcel arrived. It was lost in the region of Kazakhstan. I am not a fraudster, I am an honest buyer, what should I do next? \\n\\n user: <img src=\\"https://ae01.alicdn.com/kf/A975bcd2b0eed41e4baf90f5f960111486.jpg\\" /> \\n\\n assistant: Дорогой, что я могу для тебя сделать? [Обнять] \\n\\n user: nothing, I mean that everything got through \\n\\n assistant: Хорошо user: Good day, please tell me where my order is? Since December 9th has long passed. \\n\\n assistant: Здравствуйте, не могли бы вы сообщить мне номер вашего заказа? И тогда мы решим проблему за вас, спасибо. \\n\\n user: 5464 9585 8522 5051 \\n\\n a assistant: <img src=\\"https://ae01.alicdn.com/kf/S949cb0ce581f4559ba1b601391972c02T.png\\" /> \\n\\n assistant: Прибыл в офис магистрального транспорта, дорогая. \\n\\n user: She had to fly from China to Kazakhstan, and then from Kazakhstan to Belarus, since there is no direct cargo connection between our countries. \\n\\n user: Most likely she got lost somewhere in Kazakhstan(
- 代码为
messages = text.split('user: ') messages = [msg.split('assistant: ')[0].strip() for msg in messages if msg] # 获取最后4条消息 last_four_messages = messages[-4:] # 拼接成一个新的字符串 result = ' '.join(last_four_messages) print(result)
- 解释为
text.split('user: '):
- 这行代码使用split方法将字符串text按照’user: '进行分割。
- 结果是一个列表,其中每个元素都是分割后的一部分。每一部分通常包含一个用户的提问(可能后面跟着助理的回答)。
- 这行代码的作用是将原始的对话文本分解成一个个独立的用户消息段。
[msg.split('assistant: ')[0].strip() for msg in messages if msg]:
- 这是一个列表推导式,用于进一步处理分割后的用户消息段。
for msg in messages if msg
部分遍历列表messages
中的每个元素msg
,并且只处理非空的消息段(即if msg
确保不处理空字符串)。msg.split('assistant: ')[0].strip():
msg.split('assistant: ')
将每个消息段按照’assistant: '再次分割。- 结果是一个包含两个部分的列表,第一个部分是用户的消息,第二个部分是助理的回复(如果有的话)。
[0]
选择这个列表的第一个元素,即用户的消息。.strip()
方法去除字符串两端的空白字符(如空格、换行等),使消息更加整洁。整个列表推导式的作用是从每个用户消息段中提取出用户的消息,并去除这些消息两端的空白字符。
- 假如有这样的客服和顾客的历史对话字符串。
- split函数作用是什么?
- text.split('user: ') 的用法是将 text 字符串按照 'user: ’ 这个分隔符进行分割。这意味着,每当 text 字符串中出现 'user: ’ 这个子字符串时,text 就会被分割成一个新的部分。分割后得到的每个部分都会作为一个元素放入一个列表中。
- 举个例子,假设你有以下字符串:
text = "user: Привет, мир! assistant: Как дела? user: Отлично, спасибо!"
- 当你使用 text.split('user: ') 时,结果会是一个列表:
['', 'Привет, мир! assistant: Как дела?', 'Отлично, спасибо!']
- 注意,第一个元素是空字符串,因为在原始字符串开头就出现了 'user: ’ 分隔符。