使用python提取关键字匹配的句子索引

2024-06-16 12:22:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用python正则表达式在文本中提取关键字匹配的句子的索引号。 关键词是“我能帮你” 文本数据是

keyword=[“我可以帮你”]

str1=[nv707g]:代理“nv707g”进入聊天室(作为Sandra)*[nv707g]:嗨。我叫桑德拉。我能帮你什么?*[nv707g]:当然,请不要担心。我可以帮你。***[nv707g]:能给我一个联系电话吗?这样我们就可以联系到你了。你知道吗

str2=[ta250h]:代理“ta250h”进入聊天室(作为Steve)*[ta250h]:嗨。我叫史蒂夫。我能帮你什么?*[ta250h]:我可以帮你。你知道吗

str3=*[virtualAssistant.nina公司]:嗯,你能重新表述一下你的问题吗?虚拟助理最能理解简单的问题。[virtualAssistant.nina公司]:您现在将连接到您的问题的专家。[sv0573]:代理“sv0573”进入聊天室(作为Rosen)代理'virtualAssistant.nina公司'exits chat[sv0573]:你好,我叫罗森。今天我有幸和谁谈话?嗨,杰伦。[sv0573]:很抱歉,您的电子邮件有问题。*[sv0573]:给您带来不便,我深表歉意。我可以帮你。***[sv0573]:能给我一个联系电话吗?这样我们就可以通过电话或短信与您联系,了解您的AT&T服务信息?你知道吗

str4=[sm0036]:代理“sm0036”进入聊天室(作为肖恩)*[sm0036]:嗨。我叫肖恩。我能帮你什么?[sm0036]:我可以看到您正在键入,我正在等待您的答复。[sm0036]:给您带来不便,我深表歉意。我可以帮你。*[sm0036]:我会找出发生了什么,并帮助您解决这个问题。你知道吗

对每个字符串使用for循环,并在匹配关键字时提取句子索引。你知道吗

提前谢谢。你知道吗


Tags: 数据文本代理公司关键字关键词keyword句子
1条回答
网友
1楼 · 发布于 2024-06-16 12:22:35

将对话转换为列表,在*处拆分字符串,然后分析关键字的元素并返回包含关键字的元素的索引:

str1="[nv707g]: Agent 'nv707g' enters chat (as Sandra) * [nv707g]: Hi. My name is Sandra. How can I help you? * [nv707g]: Sure, please don't worry. I can help you with that. *** [nv707g]: Can I have a contact number so that we can reach you."

keyword = "I can help you with that"

a = str1.strip().split('[')

def f(L, key_word):
    for i in L: 
        if key_word in i: 
            return L.index(i)

print f(a, keyword)

>>> 2

如果关键字不在对话中,则返回None。你知道吗

编辑:看到*并没有清晰地出现在所有字符串中以表示一个新的说话者,您可能应该使用“[”来分割字符串。你知道吗

def f_new(convo, key_word, splitter = "["): 
    c = [e for e in convo.strip().split('[') if e != '']
    for i in c:
        if key_word in i: 
            return c.index(i)

默认拆分器现在是“[”,但是您可以在调用函数时随意更改它。你知道吗

至于您的评论,这里有一个指针:清晰地定义所有字符串并将它们放在一个列表中

convos = [str1, str2, str3, str4]

然后简单地在它们上面循环:

for i in convos: 
    print(f_new(i, keyword))

相关问题 更多 >