Nlp 如何实现公司名称数据的实体协同引用?

Nlp 如何实现公司名称数据的实体协同引用?,nlp,data-cleaning,Nlp,Data Cleaning,我有公司名称列向量的数据,如下所示: Var1 AEP American Electric Power AEP - Ohio Chase Bank JP Morgan Chase 我试图找出如何解决这个数据集中的共指。我一直在想如何使用Wikipedia miner来解决这个问题,但我不知道它是如何工作的,也不知道如何使用它。是否存在可以查找与同一公司相关的不同名称实例的工具 换句话说,我想合并同一家公司的类似名称(例如AEP、美国电力公司和AEP-Ohio都是一家公司,大通银行、大通和摩根大

我有公司名称列向量的数据,如下所示:

Var1
AEP
American Electric Power
AEP - Ohio
Chase Bank
JP Morgan
Chase
我试图找出如何解决这个数据集中的共指。我一直在想如何使用Wikipedia miner来解决这个问题,但我不知道它是如何工作的,也不知道如何使用它。是否存在可以查找与同一公司相关的不同名称实例的工具


换句话说,我想合并同一家公司的类似名称(例如AEP、美国电力公司和AEP-Ohio都是一家公司,大通银行、大通和摩根大通也是一家公司)。该栏有超过41000家公司的唯一编号。

您可以使用现有的知识图表之一,如

  • :实体名称附加到关系(不确定)和rdf:label
  • :只有一个API
此外,如果您只对实体的可能名称感兴趣,请检查它是否是开源java命名实体消歧(类似于Wikipedia miner)。您只能使用该数据集,因为它为每个实体提供了一组可能的名称和上下文短语。英语资源丰富


可以使用键入系统筛选实体。

您可以使用现有的知识图之一,例如

  • :实体名称附加到关系(不确定)和rdf:label
  • :只有一个API
此外,如果您只对实体的可能名称感兴趣,请检查它是否是开源java命名实体消歧(类似于Wikipedia miner)。您只能使用该数据集,因为它为每个实体提供了一组可能的名称和上下文短语。英语资源丰富


可以使用键入系统筛选实体。

您有41.000个独特的公司,并且希望合并 所有相似的名字。我认为你需要做两件事:

  • 设计一个相似性函数来比较任意两个给定的公司名称
  • 找到一种比较日期集中所有名称的有效方法
对于相似性度量,考虑到您提供的小样本,我注意到3种不同类型的名称:

  • 缩写:“AEP”是“美国电力”的缩写
  • 单一标记名称:“Chase”
  • 多标记名称:“美国电力”
  • 我相信你的指标必须考虑到这些,我会给你 在我文章的最后,我提出了一些建议

    为了进行有效的比较,我建议采用该方法,该方法包括3个步骤:

  • 创建排序键:根据公司名称定义一个键,可以是简单的名称第一个字符串的第一个字母,也可以是由公司名称的子字符串组成的更复杂的键

  • 排序数据:使用第一步中定义的键对名称进行排序

  • 合并:在名称的顺序列表中移动一个固定大小的窗口,以限制将匹配记录与窗口中的记录进行比较。如果窗口的大小为w,则将进入该窗口的每个新名称与以前的w-1名称进行比较,以找到“匹配”的名称

  • 例如,假设您的密钥由第一个字符串的第一个字母定义,则列表的顺序如下:

    AEP
    American Electric Power
    AEP - Ohio
    Chase Bank
    Chase
    JP Morgan
    
    现在使用大小为3的窗口进行比较,您首先只需比较:

    AEP
    American Electric Power
    AEP - Ohio
    
    如果你的相似性函数考虑到了首字母缩略词,它会发现AEP是美国电力公司的首字母缩略词,并将两者合并。现在,您可以保留两个字符串作为同一公司名称的表示形式,或者只选择一个字符串,设想您同时保留这两个字符串:

    ['AEP, 'American Electric Power']
    AEP - Ohio
    Chase Bank
    
    现在,您将“AEP-Ohio”与['AEP',“American Electric Power]”进行比较,再次取决于您定义函数的方式,这可能是一个匹配,例如,您可以看到“AEP-Ohio”与“AEP”的重叠,这将给出0.5(即,假设您放弃了“-”),此外,你还可以检查“AEP-Ohio”中有一个序列,它是“美国电力”的首字母缩略词

    ['AEP', 'American Electric Power','AEP - Ohio'] 
    Chase Bank
    Chase
    
    现在比较下一个应给出Now match,我们推进窗口:

    Chase Bank
    Chase
    JP Morgan
    
    此处的相似性函数应与“Chase”和“Chase Bank”匹配。最后, 你应该:

    ['AEP', 'American Electric Power', 'AEP - Ohio']
    ['Chase Bank', 'Chase']
    JP Morgan
    
    注意,这里有许多Python和Java库,它们实现了其中的一些:


    检测A.S.Schwartz和M.A.Hearst建议的首字母缩写词。Java实现是可用的。我把这个算法应用到英文维基百科上,你可以看到结果。

    你有41.000家独特的公司,你想合并 所有相似的名字。我认为你需要做两件事:

    • 设计一个相似性函数来比较任意两个给定的公司名称
    • 找到一种比较日期集中所有名称的有效方法
    对于相似性度量,考虑到您提供的小样本,我注意到3种不同类型的名称:

  • 缩写:“AEP”是“美国电力”的缩写
  • 单一标记名称:“Chase”
  • 多标记名称:“美国电力”
  • 我相信你的指标必须考虑到这些,我会给你 在我文章的最后,我提出了一些建议

    为了进行有效的比较,我建议采用该方法,该方法包括3个步骤:

  • 创建排序键:根据公司名称定义一个键,可以是简单的名称第一个字符串的第一个字母,也可以是由公司名称的子字符串组成的更复杂的键

  • 排序数据:使用第一步中定义的键对名称进行排序

  • 合并:在名称的顺序列表中移动一个固定大小的窗口,以限制将匹配记录与窗口中的记录进行比较。如果窗口的大小为w,则将进入该窗口的每个新名称与以前的w-1名称进行比较,以找到“匹配”