gpt4 book ai didi

python - 在 Python 中的句子中查找(可能是多个单词的)短语

转载 作者:太空宇宙 更新时间:2023-11-04 02:06:54 27 4
gpt4 key购买 nike

我正在尝试在句子中查找关键字,其中关键字通常是单个词,但也可以是多词组合(例如“cost in euros”)。因此,如果我有一个像 cost in euros of bacon 这样的句子,它会在该句子中找到 cost in euros 并返回 true。

为此,我使用了这段代码:

if any(phrase in line for phrase in keyword['aliases']:

其中 line 是输入,aliases 是一组与关键字匹配的短语(例如,对于 cost in euros,它是 ['cost in euros' , '欧元', '欧元成本']).

但是,我注意到它也在单词部分触发。例如,我有一个匹配短语 y 和一个句子 trippy cake。我不希望它返回 true,但它返回 true,因为它显然在 trippy 中找到了 y。我如何才能让它只检查整个单词?最初我是用一个单词列表做这个关键词搜索(本质上是做 line.split() 并检查那些),但这对多词关键词别名不起作用。

最佳答案

这应该可以满足您的需求:

import re

aliases = [
'cost.',
'.cost',
'.cost.',
'cost in euros of bacon',
'rocking euros today',
'there is a cost inherent to bacon',
'europe has cost in place',
'there is a cost.',
'I was accosted.',
'dealing with euro costing is painful']
phrases = ['cost in euros', 'euros', 'euro cost', 'cost']

matched = list(set([
alias
for alias in aliases
for phrase in phrases
if re.search(r'\b{}\b'.format(phrase), alias)
]))

print(matched)

输出:

['there is a cost inherent to bacon', '.cost.', 'rocking euros today', 'there is a cost.', 'cost in euros of bacon', 'europe has cost in place', 'cost.', '.cost']

基本上,我们使用 python 获取所有匹配项 re模块作为我们的测试,包括多个 phrase 的情况s 出现在给定的 alias 中, 使用化合物 list comprehension , 然后使用 set()list 中删除重复项, 然后使用 list()强制set回到list .

引用:

列表: https://docs.python.org/3/tutorial/datastructures.html#more-on-lists

列表理解: https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions

集: https://docs.python.org/3/tutorial/datastructures.html#sets

re(或正则表达式): https://docs.python.org/3/library/re.html#module-re

关于python - 在 Python 中的句子中查找(可能是多个单词的)短语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54508913/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com