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

Python 改进非英语文本上的NER标签结果,python,machine-learning,classification,spacy,Python,Machine Learning,Classification,Spacy,我正在研究一些中世纪的拉丁语文本,并使用了各种NER方法,如CLTK(拉丁模式)、Spacy(多语言、意大利语、西班牙语模式)和斯坦福德纳(西班牙语模式)。当我使用非拉丁语模型时,我使用了原始拉丁语文本,因为翻译的文本没有任何意义 幸运的是,Spacy多语言模型成功地提取了样本文档中的所有人员和位置,但添加了我不认为它们是实体的附加词。此外,标签是不正确的 以下是一个示例输出: {'LOC': ['Artali', 'Artalis', 'Bruges', 'Unde'], 'MISC': ['

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

幸运的是,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']}
地点应为:帕诺米、布鲁日、梅利特和人名应为除Unde、Apoca、Coram、Testamur、Renunciando以外的所有其他人,这些人既不是地点也不是人名


我想忽略标签,做一些分类ML算法。问题是我没有任何可用的训练数据,我认为唯一可能有用的语料库是Proiel树库,它将专有名词标记为NE。你怎么处理这样的问题

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

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

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

这只是一个基本的想法,我不知道它会有多精确。我一直在使用它进行快速分类,没有任何训练数据集(但原始文本),并且它在我的任务中表现良好,有大量的类别。这在很大程度上取决于每个类的示例以及word2vec tho的质量。而且它处理一词多义的能力也很差

另外:也许可以看看,因为这并不完全与代码相关,而是关于使用的方法