识别印度名字的 NER 模型
NER model to recognize Indian names
我打算使用命名实体识别 (NER) 技术从给定文本中识别人名(大部分是印度人名)。我已经探索了来自 Stanford NLP 的基于 CRF 的 NER 模型,但是它在识别印度名字方面不太准确。因此,我决定通过监督训练创建自己的自定义 NER 模型。我很清楚如何使用斯坦福 NER CRF 创建自己的 NER 模型,但是我想避免创建带有手动注释的大型训练语料库,因为这对个人来说是一项巨大的工作,其次要获得不同的人名来自印度不同邦的人也是一个挑战。有人可以建议任何 automation/programmatic 方法来准备至少包含 10 万个印度名字的带标签的训练语料库吗?
我已经研究过 Facebook 和 LinkedIn API,但没有找到从给定位置(例如印度)提取 10 万用户全名的方法。
提议:你可以尝试利用印度版维基百科进行训练或自动创建地名词典。
我不知道这是否是 efficient/quick 解决方案,但很多研究利用了维基百科及其半结构化内容(例如,每个页面都注释了几个类别)。
您可以看看这些文章,找到适合您的有趣想法:
https://scholar.google.fr/scholar?q=named+entity+recognition+using+wikipedia&btnG=&hl=fr&as_sdt=0%2C5
我最终执行了以下操作来创建 NER 模型来识别印度名字。这对于任何想要创建自定义 NER 模型以识别非英语人名的人来说可能很有用,因为大多数公开可用的 NER 模型(例如来自斯坦福 NLP 的模型)都是用英文名字训练的,因此在识别英语方面更准确( British/American) 名字。
- 寻找一位拥有 Twitter 帐户并在 Twitter 上拥有大量粉丝的印度名人(就我而言,我选择了 Sachin Tendulkar)。
- 用您选择的语言创建一个程序来调用 Twitter REST API (GET followers/list) 以获取名人所有关注者的姓名并保存到文件中。我们可以放心地假设大多数追随者都是印度人。请注意,存在 API 速率限制(每 15 分钟 30 个请求 window),因此应内置程序来处理该问题。对于我们的案例,我们将该程序开发为每 15 分钟运行一次的 Windows 服务。
- 由于某些 Twitter 用户的姓名可能不是有效的人名,因此建议添加一些基于规则的逻辑(如 RegEx)来过滤看似真实的姓名并仅将其添加到文件中。
- 生成具有真实姓名的文件后,创建另一个程序来创建包含这些名称 labelled/annotated 作为 PERSON 以及注释为 OTHER 的非实体名称的训练数据文件。如果您使用的是 Stanford NER CRF 分类器,该程序应生成一个包含两列的训练 (TSV) 文件 - 一列包含单词 (token),第二列提及标签。
- 以编程方式生成训练语料库后,您可以按照以下 link 创建自定义 NER 模型以识别印度名字:
http://nlp.stanford.edu/software/crf-faq.shtml#a
这个网站已经为我们做到了!它为这些问题提供了解决方案:
印度语言 NER 的挑战
印度语言属于几个语系,主要是印欧语系、印度-雅利安语系和德拉威语系。
NER 中的挑战源于多种因素。下面列出了一些主要因素
形态丰富 - 根的识别很困难,需要使用形态分析仪
无大写功能 - 在英语中,大写是主要功能之一,而在印度语言中则没有
歧义——普通名词和专有名词之间的歧义。例如:常用词如 "Roja" 意思是 Rose flower 是一个人的名字
拼写变体 - 在网络数据中,我们发现不同的人对同一个实体的拼写不同 - 例如:在泰米尔语中,人名 -Roja 拼写为 "rosa"、"roja"。
提供了整个语料库。
Named Entity Recognition for Indian Languages and English
祝您获得 zip 文件的密码!
干杯!
我打算使用命名实体识别 (NER) 技术从给定文本中识别人名(大部分是印度人名)。我已经探索了来自 Stanford NLP 的基于 CRF 的 NER 模型,但是它在识别印度名字方面不太准确。因此,我决定通过监督训练创建自己的自定义 NER 模型。我很清楚如何使用斯坦福 NER CRF 创建自己的 NER 模型,但是我想避免创建带有手动注释的大型训练语料库,因为这对个人来说是一项巨大的工作,其次要获得不同的人名来自印度不同邦的人也是一个挑战。有人可以建议任何 automation/programmatic 方法来准备至少包含 10 万个印度名字的带标签的训练语料库吗?
我已经研究过 Facebook 和 LinkedIn API,但没有找到从给定位置(例如印度)提取 10 万用户全名的方法。
提议:你可以尝试利用印度版维基百科进行训练或自动创建地名词典。
我不知道这是否是 efficient/quick 解决方案,但很多研究利用了维基百科及其半结构化内容(例如,每个页面都注释了几个类别)。
您可以看看这些文章,找到适合您的有趣想法: https://scholar.google.fr/scholar?q=named+entity+recognition+using+wikipedia&btnG=&hl=fr&as_sdt=0%2C5
我最终执行了以下操作来创建 NER 模型来识别印度名字。这对于任何想要创建自定义 NER 模型以识别非英语人名的人来说可能很有用,因为大多数公开可用的 NER 模型(例如来自斯坦福 NLP 的模型)都是用英文名字训练的,因此在识别英语方面更准确( British/American) 名字。
- 寻找一位拥有 Twitter 帐户并在 Twitter 上拥有大量粉丝的印度名人(就我而言,我选择了 Sachin Tendulkar)。
- 用您选择的语言创建一个程序来调用 Twitter REST API (GET followers/list) 以获取名人所有关注者的姓名并保存到文件中。我们可以放心地假设大多数追随者都是印度人。请注意,存在 API 速率限制(每 15 分钟 30 个请求 window),因此应内置程序来处理该问题。对于我们的案例,我们将该程序开发为每 15 分钟运行一次的 Windows 服务。
- 由于某些 Twitter 用户的姓名可能不是有效的人名,因此建议添加一些基于规则的逻辑(如 RegEx)来过滤看似真实的姓名并仅将其添加到文件中。
- 生成具有真实姓名的文件后,创建另一个程序来创建包含这些名称 labelled/annotated 作为 PERSON 以及注释为 OTHER 的非实体名称的训练数据文件。如果您使用的是 Stanford NER CRF 分类器,该程序应生成一个包含两列的训练 (TSV) 文件 - 一列包含单词 (token),第二列提及标签。
- 以编程方式生成训练语料库后,您可以按照以下 link 创建自定义 NER 模型以识别印度名字: http://nlp.stanford.edu/software/crf-faq.shtml#a
这个网站已经为我们做到了!它为这些问题提供了解决方案: 印度语言 NER 的挑战 印度语言属于几个语系,主要是印欧语系、印度-雅利安语系和德拉威语系。 NER 中的挑战源于多种因素。下面列出了一些主要因素 形态丰富 - 根的识别很困难,需要使用形态分析仪 无大写功能 - 在英语中,大写是主要功能之一,而在印度语言中则没有 歧义——普通名词和专有名词之间的歧义。例如:常用词如 "Roja" 意思是 Rose flower 是一个人的名字 拼写变体 - 在网络数据中,我们发现不同的人对同一个实体的拼写不同 - 例如:在泰米尔语中,人名 -Roja 拼写为 "rosa"、"roja"。 提供了整个语料库。
Named Entity Recognition for Indian Languages and English
祝您获得 zip 文件的密码!
干杯!