是否有任何python函数允许根据公司名称剪切文本?

2024-06-28 20:18:16 发布

您现在位置: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']

第一句包含“脸谱”: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"

Tags: textwebfacebookservicegooglespsplitles
1条回答
网友
1楼 · 发布于 2024-06-28 20:18:16

而不是:

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(" ")

相关问题 更多 >