【问题标题】:Information extraction with Spacy with context awareness具有上下文感知的 Spacy 信息提取
【发布时间】:2021-12-28 18:47:39
【问题描述】:

我正在尝试使用 Python+ Spacy 通过网络 scraping 提取项目相关信息,然后构建一个包含少量属性的项目表,我感兴趣的示例短语是:

  • 最后一个是 300 兆瓦 Hardin Solar III 能源中心,位于 Hardin 县的 Roundhead、MarionMcDonald 乡镇
  • 7 月,OPSB 批准了位于麦迪逊县577-MW Fox Squirrel Solar Farm
  • 圣地亚哥机构抽水蓄能项目寻找开发商。
  • 5250 万美元基于特许权使用费收入的特许权使用费投资包括 151MW Old Settler 风电场

在这里,我突出显示了我感兴趣的不同类型的信息,我最终需要一个包含以下列的表格: {project name} , {Location} ,{company} , {Capacity} , {start date} , {end Date} , {$investment} , {fuelType}

我正在使用 Spacy,但是查看依赖树我找不到任何通用规则,所以如果我使用匹配器,我最终会得到 10 个匹配器,并且它们不会捕获文本中的所有可能信息,是有一种系统的方法可以帮助我完成这项任务的一部分(例如:提取容量并将其分配给正确的项目名称)

【问题讨论】:

    标签: python nlp spacy information-retrieval information-extraction


    【解决方案1】:

    您应该能够使用 spaCy 处理此问题。根据您使用的标签,您需要不同的策略。

    • 位置、日期、美元:您应该能够使用默认的 NER 管道来获取这些信息。
    • 容量、燃料类型:您可以为这些编写一个简单的 Matcher(不是 DependencyMatcher)。
    • 公司:您可以使用默认 NER 或为此训练自定义 NER。
    • 项目名称:从您的示例中我不明白这一点。我猜可以使用 Matcher 或 DependencyMatcher 找到“抽水蓄能项目”,但很难。还有哪些其他项目名称示例?

    您遇到的一个更大的问题是,您似乎想要一张漂亮整洁的桌子,但不能保证您的信息结构是这样的。如果一篇文章在同一句话中提到一家公司正在建造两个工厂怎么办?你如何处理多个值?这不是图书馆可以为您解决的问题 - 您必须查看您的数据并决定是否不会发生这种情况,这样您就可以忽略它,或者当它发生时您会做什么。

    【讨论】:

    • 我已经阅读了你提到的建议,关键是我能够找到日期等数据,或公司名称和位置....等等,但我在分配时遇到了问题对其相应项目的某个值(如容量),同样的问题适用于日期和金钱,所以简而言之,我提取数据但无法将值正确分配给各自的所有者。
    • 另请参见此处结合两个项目和一个所有者公司的单句示例:“格洛斯特县的 20 兆瓦茶花和 20 兆瓦冬莓项目,将从 Strata Clean Energy 收购。” , 请注意还提到位置。
    猜你喜欢
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 2018-12-22
    • 1970-01-01
    相关资源
    最近更新 更多