【问题标题】:Extract business titles and time periods from string从字符串中提取业务名称和时间段
【发布时间】:2011-12-07 03:18:53
【问题描述】:

我正在使用 Python 从路透社提取有关某些公司的信息。我已经能够从this page获得官员/高管的姓名、传记和报酬

现在,我想从传记部分提取以前的职位头衔和公司,如下所示:

先生。 Donald T. Grimes 自 2008 年 5 月起担任 Wolverine World Wide, Inc. 的高级副总裁、首席财务官兼财务主管。从 2007 年到 2008 年,他担任 Keystone Automotive Operations, Inc. 的执行副总裁兼首席财务官。汽车配件和设备的经销商。在加入 Keystone 之前,Grimes 先生曾在优质葡萄酒和烈酒的制造商和营销商 Brown-Forman Corporation 担任一系列高级企业和部门财务职务。在 Brown-Forman 任职期间,Grimes 先生于 2006 年至 2007 年担任副总裁兼饮料财务总监;副总裁,2003年至2006年公司规划与分析总监; 1999 年至 2003 年担任 Brown-Forman Spirits America 的高级副总裁兼首席财务官。

我可以使用简单的正则表达式来获取 from 和 to 年份,但我不知道如何编写 regex 来获取标题和公司名称。我知道字符串格式不一致,所以我会选择一个适用于至少 70% 情况的答案。这是我想要的输出:

2007-2008, executive vice president and chief financial officer, Keystone Automotive operations

【问题讨论】:

    标签: python regex nlp


    【解决方案1】:

    您尝试解决的问题是众所周知的并且经过研究,如果您在 Google 上搜索“命名实体提取”和“关系提取”这两个术语,您会发现大量描述方法和算法的研究论文 一些很好的起点是:

    这些只是我发现有趣的几个链接,还有很多,可能比这些更好,但这应该可以帮助您入门。

    【讨论】:

    • bdk,非常感谢您周到而详细的回复。我也是这么想的。我已经使用模式库来提取形容词。我也会为此而努力。 [clips.ua.ac.be/pages/pattern]
    【解决方案2】:

    我认为不会有一个单一的正则表达式可以用于此,除非它真的很讨厌。我认为这个问题的解决方案可能是Natural Language Processing。当然有这方面的包,但使用它们可能并不简单。

    基本上你想用“X is/was Y”这样的句子,找出哪个部分是名字,哪个部分是职位列表,以及哪些部分是不相关的。也许寻找大写的单词序列或像“and”和“of”这样的小词?

    (?:\u\w+)( (?:\u\w*)|(?:of)|(?:and))*  #Note the space
    

    \u 表示下一个字符(\w+ 组的第一个字符)是大写的。还没有测试它,但它似乎应该工作。这可能是个不小的问题。

    【讨论】:

    • andronikus,感谢您的回复。你是对的:正则表达式不是解决这个问题的正确方法,而且正如 bdk 所建议的那样,这是一个不平凡的问题。
    猜你喜欢
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 2022-08-12
    • 1970-01-01
    相关资源
    最近更新 更多