改善非英语文本上的NER标签结果

时间:2018-08-08 09:53:41

标签: python machine-learning classification spacy

我正在研究一些中世纪的拉丁文字,并使用了NER的各种方法,例如CLTK(拉丁语模型),Spacy(多语种,意大利语,西班牙语模型)和StanfordNER(西班牙语模型)。当我使用非拉丁模型时,我使用的是原始拉丁文本,因为翻译后的文本没有任何意义。

幸运的是,Spacy多语言模型成功地提取了示例文档的所有“人物和地点”,但使用了其他单词,我认为它们不是实体。而且,标签不正确。

以下是示例输出:

{'LOC': ['Artali', 'Artalis', 'Bruges', 'Unde'],
'MISC': ['Marianum lu Tignusu'],
 'PER': ['Simone de Mazara',
  'Artalem de Alagona',
  'Apoca',
  'Coram',
  'Pero de Naso',
  'Pero Caruana',
  'Bartholomeo Xacara',
  'Testamur',
  'Artalis de Alagona',
  'Melite',
  'Simonis de Mazara',
  'Simonem',
  'Simone',
  'Mariano',
  'Artalis',
  'Artalem',
  'Simoni',
  'Panormi',
  'Renunciando']}

位置应为:Panormi,布鲁日,梅利特和个人名称应为所有人,但Unde,Apoca,Coram,Testamur,Renunciando既不是地点,也不是个人名称。

我当时正在考虑忽略标签并执行一些分类ML算法。问题是我没有任何可用的训练数据,并且我认为可能有用的唯一可能的可用语料库是Proiel树库,该树库将专有名词标记为NE。你怎么会遇到这样的问题?

1 个答案:

答案 0 :(得分:1)

也许如果您有足够的原始文本,则可以尝试训练自定义Word2vec模型(或嵌入其他单词,甚至可以使用spacy中的单词...)。

这样,您可以构建基本的映射词->向量,并使用它来比较提取的术语。从理论上讲,具有较近语义含义的术语(城市与城市,名称与名称)应具有更多相似的向量(余弦通常是比较这些向量的好方法)。

然后,如果您将一些术语归类为城市,将一些术语归类为名称,则可以尝试进行一些自定义分类(例如:要分类的每个新术语,在城市和名称之间的前n个最接近的元素:如果前n个最类似的元素在“城市”组中,那么您的用语很可能在城市组中。

这只是一个基本概念,我不知道它的精确程度。我一直在使用它进行快速分类,而没有任何训练数据集(但原始文本),并且在我的任务类别不多。它在很大程度上取决于您为每个班级提供的示例以及您的word2vec tho的质量。而且它对多义性的处理也很差。

也许可以看看https://datascience.stackexchange.com,因为它与代码不完全相关,而与使用方法有关