没有词性标签或任何其他信息的基于规则的命名实体识别器
Rule based named entity recognizer without parts of speech label or any other information
我正在做一个项目,试图从文本构建一个命名实体识别器。所以基本上我想以 3 种不同的方式构建和试验 NER。
首先,我只想使用分段的句子-> 标记化的词来构建它。澄清一下,我只想向系统输入 split/tokenized 个单词。再一次,NER 系统是基于规则的。因此,它只能使用规则来断定哪个是命名实体。在第一个 NER 中,它不会有任何块信息或词性标签。只是标记化的词。在这里,效率不是问题。相反,问题在于比较 3 种不同的 NER,以及它们的表现。 (我问的是第一个)
我想了一会儿,想不出任何规则或想法来解决这个问题。一种天真的方法是将所有以大写字母开头且不跟在句点后面的单词作为命名实体。
我错过了什么吗?任何提示或指南都会有所帮助。
通常,NER 依赖于词性标记(命名实体通常是名词)等预处理,因此没有这些基本信息会使任务变得更加困难,因此更容易出错。您可以寻找某些模式,例如您建议的模式(尽管您如何处理句子开头的命名实体?)。您可以添加带有介词的某些正则表达式模式,例如(Title_case_token)+ 的 (the)? (Title_case_token)+ 将匹配 "Leader of the Free World"、"Prime Minister of the United Kindom" 和 "Alexander the Great"。您可能还想考虑匹配首字母缩略词的模式,例如 "S.N.C.F."、"IBM"、"UN" 等。第一步可能是寻找一些词汇资源(即单词列表),例如国家/地区姓名、名字等,然后从那里构建。
您可以使用 spaCy (Python) or TokensRegex (Java) 进行基于标记的匹配(而不是使用它们添加到标记中的语言特征)。
我正在做一个项目,试图从文本构建一个命名实体识别器。所以基本上我想以 3 种不同的方式构建和试验 NER。
首先,我只想使用分段的句子-> 标记化的词来构建它。澄清一下,我只想向系统输入 split/tokenized 个单词。再一次,NER 系统是基于规则的。因此,它只能使用规则来断定哪个是命名实体。在第一个 NER 中,它不会有任何块信息或词性标签。只是标记化的词。在这里,效率不是问题。相反,问题在于比较 3 种不同的 NER,以及它们的表现。 (我问的是第一个)
我想了一会儿,想不出任何规则或想法来解决这个问题。一种天真的方法是将所有以大写字母开头且不跟在句点后面的单词作为命名实体。
我错过了什么吗?任何提示或指南都会有所帮助。
通常,NER 依赖于词性标记(命名实体通常是名词)等预处理,因此没有这些基本信息会使任务变得更加困难,因此更容易出错。您可以寻找某些模式,例如您建议的模式(尽管您如何处理句子开头的命名实体?)。您可以添加带有介词的某些正则表达式模式,例如(Title_case_token)+ 的 (the)? (Title_case_token)+ 将匹配 "Leader of the Free World"、"Prime Minister of the United Kindom" 和 "Alexander the Great"。您可能还想考虑匹配首字母缩略词的模式,例如 "S.N.C.F."、"IBM"、"UN" 等。第一步可能是寻找一些词汇资源(即单词列表),例如国家/地区姓名、名字等,然后从那里构建。
您可以使用 spaCy (Python) or TokensRegex (Java) 进行基于标记的匹配(而不是使用它们添加到标记中的语言特征)。