从字符串中提取职位和时间段
我正在用Python从路透社提取一些公司的信息。我已经能够从这个页面获取到高管的名字、简历和薪酬。
现在,我想从简历部分提取以前的职位名称和公司名,简历的内容大致是这样的:
唐纳德·T·格里姆斯先生自2008年5月起担任Wolverine World Wide, Inc.的高级副总裁、首席财务官和财务主管。在2007年至2008年期间,他是Keystone Automotive Operations, Inc.的执行副总裁和首席财务官,该公司是一家汽车配件和设备的分销商。在加入Keystone之前,格里姆斯先生在Brown-Forman Corporation担任了一系列高级企业和部门财务职位,该公司是优质葡萄酒和烈酒的制造和营销商。在Brown-Forman工作期间,格里姆斯先生曾于2006年至2007年担任饮料财务副总裁、2003年至2006年担任企业规划与分析副总裁,以及1999年至2003年担任Brown-Forman Spirits America的高级副总裁和首席财务官。
我可以用简单的正则表达式来获取年份,但我不知道怎么写正则表达式来提取职位和公司名称。我知道字符串的格式不一致,所以我希望能找到一个至少能处理70%情况的解决方案。以下是我想要的输出:
2007-2008, executive vice president and chief financial officer, Keystone Automotive operations
2 个回答
我觉得这件事可能找不到一个简单的正则表达式来解决,除非情况非常复杂。我认为解决这个问题的方法可能是自然语言处理。当然,有一些相关的工具包可以使用,但使用起来可能不太简单。
基本上,你想要处理的句子像是“X 是/曾经是 Y”,然后要搞清楚哪些部分是名字,哪些部分是职位名称,还有哪些部分是无关紧要的。也许可以寻找一些单词组合,这些单词要么是大写的,要么是像“和”和“的”这样的常见小词?
(?:\u\w+)( (?:\u\w*)|(?:of)|(?:and))* #Note the space
\u
表示接下来的单个字符(\w+
组的第一个字符)是大写字母。我还没测试过,但看起来应该可以用。这可能是个不简单的问题。
你想解决的问题是一个大家都知道并且研究得很透彻的问题。如果你在网上搜索“命名实体提取”和“关系提取”,会找到很多相关的研究论文,里面有各种方法和算法。以下是一些不错的起点:
书籍《用Python进行自然语言处理》的第七章,实际上整本书对你可能都有帮助。这里可以在线查看第七章
这篇论文“关系挖掘的新算法”,里面提到的一个例子是挖掘职位名称和组织。
这些只是我觉得有趣的一些链接,还有很多其他的,可能更好的资源,但这些应该能帮助你入门。