有没有python函数可以根据公司名称剪切文本



我想在文本中包含公司名称以及与公司名称相关的文本部分,请。。。

text="""Facebook est spécialisé dans les services web, qui permet aux utilisateurs d'échanger par message. Elle est parmi les autres entreprises qui sont spécialisés dans le même domaine. Google est une entreprise aussi spécialisé dans les services informatiques"""
Company=["Facebook","Google","Apple"]
negative_patterns_list = [
"s[A-Z]",
"s[0-9]"
]
split_elements = [           
"[.!?%$-] "
]
split_pattern = "(?<!%s)(%s)" % ("|".join(negative_patterns_list), "|".join(split_elements))
# séparation sur les éléments ponctuations de fin de phrases
text_splitted = re.split(split_pattern, text)
liste_split = [elt for idx, elt in enumerate(text_splitted) if idx % 2 == 0]
sentences = [elt for idx, elt in enumerate(liste_split) if elt != '']

该代码允许将文本拆分为句子("句子"是句子列表(

sentences : ["Facebook est spécialisé dans les services web, qui permet aux utilisateurs d'échanger 
par message",'Elle est parmi les autres entreprises qui sont spécialisés dans le même domaine',
'Google est une entreprise aussi spécialisé dans les services informatiques']

第一句包含";Facebook":它的ok,第三句还包含谷歌的ok。。。但第二个不包含公司名称,所以我想将其与列表中的前一句连接起来,即:

["Facebook est spécialisé dans les services web, qui permet aux utilisateurs d'échanger 
par message, Elle est parmi les autres entreprises qui sont spécialisés dans le même domaine",
"Google est une entreprise aussi spécialisé dans les services informatiques"]

作为输出,我想有:

"Facebook" : "Facebook est spécialisé dans les services web, qui permet aux utilisateurs d'échanger 
par message, Elle est parmi les autres entreprises qui sont spécialisés dans le même domaine"
"Google" : "Google est une entreprise aussi spécialisé dans les services informatiques"

代替:

sentences = [elt for idx, elt in enumerate(liste_split) if elt != '']

下面的暴力解决方案可以为您提供您想要的示例。请注意,这些句子是用标点符号分隔的(而不是你的结果显示的逗号——这个obv可以很容易地调整(。

如果时间复杂性是一个重要因素(即,您使用的是v个大数据集(,则可能会有更优化的解决方案。

sentances = []
prev_comp = ""
sentences = {key: "" for key in Company}
for idx, sentance in enumerate(liste_split):
found = False
for iComp in Company:
if iComp in sentance:
found = True
sentences[iComp] += ' ' + sentance + '.'
prev_comp = iComp

if not found:
sentences[prev_comp] += ' ' + sentance + '.'
elif prev_comp == "" and not found:
raise NotImplementedError
for key, value in sentences.items():
sentences[key] = value.lstrip(" ")

最新更新