Select 个句子标记列表中的相关字符串,不改变它们的顺序
Select relevant strings from a list of sentence tokens without changing their order
我正在寻找 select 文本中的相关句子标记。如果列表 'keywords' 中的字符串存在并且列表 'avoid' 中的字符串不存在于句子标记中,则必须创建 selection。但是,如果存在列表 'essentials' 中的字符串,则必须对包含列表 'avoid' 中的字符串的句子标记进行 selected。
这是我试过的代码 运行:
#sentences 是包含句子标记的列表
facts = []
for sent in sentences:
for keyword in keywords:
if keyword in sent:
facts.append(sent)
for fact in facts[:]:
for i in avoid[:]:
for essential in essentials[:]:
if i in fact and essential not in fact:
facts.remove(fact)
然而,这不包括第二类句子标记,即具有基本字符串的句子标记以及要避免的句子标记。
我做错了什么,有更好的方法吗?提前致谢
我尝试了另一种方式,但它打乱了句子标记的顺序。它是这样的:
for sent in sentences:
for keyword in keywords:
if keyword in sent:
facts.append(sent)
relevant_facts = [fact for fact in facts if not (i in fact for i in avoid)]
for sent in facts:
for essential in essentials:
if essential in sent:
relevant_facts.append(sent)
所以我用了另一种方法。
它在复杂性方面可能不是最优的,但它更容易理解。
所以我创建了 3 个函数,如果句子有关键字、avoid 或 essential 就会返回。
然后对于每个句子,如果它有一个Essential,我们添加它,如果它有一个关键字但没有避免,我们也添加它。否则我们就跳过它。
这是代码:
facts = []
def hasKeyword(sentence):
for keyword in keywords:
if keyword in sentence:
return True
return False
def hasAvoid(sentence):
for avoid in avoids:
if avoid in sentence:
return True
return False
def hasEssential(sentence):
for essential in essentials:
if essential in sentence:
return True
return False
for sent in sentences:
if hasEssential(sent):
facts.append(sent)
elif hasKeyword(sent) and not hasAvoid(sent):
facts.append(sent)
我正在寻找 select 文本中的相关句子标记。如果列表 'keywords' 中的字符串存在并且列表 'avoid' 中的字符串不存在于句子标记中,则必须创建 selection。但是,如果存在列表 'essentials' 中的字符串,则必须对包含列表 'avoid' 中的字符串的句子标记进行 selected。
这是我试过的代码 运行:
#sentences 是包含句子标记的列表
facts = []
for sent in sentences:
for keyword in keywords:
if keyword in sent:
facts.append(sent)
for fact in facts[:]:
for i in avoid[:]:
for essential in essentials[:]:
if i in fact and essential not in fact:
facts.remove(fact)
然而,这不包括第二类句子标记,即具有基本字符串的句子标记以及要避免的句子标记。
我做错了什么,有更好的方法吗?提前致谢
我尝试了另一种方式,但它打乱了句子标记的顺序。它是这样的:
for sent in sentences:
for keyword in keywords:
if keyword in sent:
facts.append(sent)
relevant_facts = [fact for fact in facts if not (i in fact for i in avoid)]
for sent in facts:
for essential in essentials:
if essential in sent:
relevant_facts.append(sent)
所以我用了另一种方法。
它在复杂性方面可能不是最优的,但它更容易理解。 所以我创建了 3 个函数,如果句子有关键字、avoid 或 essential 就会返回。
然后对于每个句子,如果它有一个Essential,我们添加它,如果它有一个关键字但没有避免,我们也添加它。否则我们就跳过它。
这是代码:
facts = []
def hasKeyword(sentence):
for keyword in keywords:
if keyword in sentence:
return True
return False
def hasAvoid(sentence):
for avoid in avoids:
if avoid in sentence:
return True
return False
def hasEssential(sentence):
for essential in essentials:
if essential in sentence:
return True
return False
for sent in sentences:
if hasEssential(sent):
facts.append(sent)
elif hasKeyword(sent) and not hasAvoid(sent):
facts.append(sent)