gpt4 book ai didi

python - 使用 Python 匹配新闻数据中的公司名称

转载 作者:行者123 更新时间:2023-11-30 09:10:40 24 4
gpt4 key购买 nike

我有一个新闻数据集,其中包含过去 3 年近 10,000 条新闻。我还有一份在纽约证券交易所注册的公司列表(公司名称)。现在我想检查列表中的公司名称列表是否出现在新闻数据集中。示例:

company Name: 'E.I. du Pont de Nemours and Company'
News: 'Monsanto and DuPont settle major disputes with broad patent-licensing deal, with DuPont agreeing to pay at least $1.75 billion over 10 years for rights to technology for herbicide-resistant soybeans.'

现在,如果新闻中有确切的公司名称,我可以找到新闻中包含公司名称,但从上面的示例可以看出,情况并非如此。我还尝试了另一种方法,即我在公司全名中采用了完整名称,即在上面的示例中,“Pont”是一个单词,当调用该公司名称时,它绝对应该是文本的一部分。所以它在大多数情况下都有效,但随后在以下示例中出现问题:

Company Name: Ennis, Inc.
News: L D`ennis` Kozlowski, former chief executive convicted of looting nearly $100 million from Tyco International, has emerged into far more modest life after serving six-and-a-half year sentence and probation; Kozlowski, who became ultimate symbol of corporate greed in era that included scandals at Enron and WorldCom, describes his personal transformation and more humble pleasures that have replaced his once high-flying lifestyle.

现在您可以看到 Ennis 与文本中的 Dennis 匹配,因此它给出了不相关的新闻结果。

有人可以帮忙告诉我这样做的正确方法吗?谢谢。

最佳答案

使用正则表达式 boundaries对于精确匹配,您可以选择全名还是您认为唯一的部分部分取决于您,但使用单词边界 D'ennis' 不会匹配 Ennis :

companies = ["name1", "name2",...]
companies_re = re.compile(r"|".join([r"\b{}\b".format(name) for name in companies]))

根据每个新闻条目的匹配数,您可能需要使用 companies_re.search(artice)companies_re.find_all(article)。对于不区分大小写的匹配,也可以通过 re.I 进行编译。

如果您要检查的唯一行也始终是以公司公司名称:开头的行,您可以缩小搜索范围:

for line in all_lines:
if line.startswith("company Name:"):
name = companies_re.search(line)
if name:
...
break

关于python - 使用 Python 匹配新闻数据中的公司名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39680624/

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