我目前正在开发自定义的命名实体识别器,以便识别4种类型的实体:汽车,设备,日期,问题。
为此,我将sklearn-crfsuite中的rasa_nlu与NER_crf一起使用。但是,在标记数百个句子之前,我问了自己两个问题,但没有找到答案:
我看了CRF如何工作。据我了解,单词w被分类为实体e1的可能性取决于该单词在其他文档中已经被标记为e1的事实,还取决于它跟随单词w2标记为e2的事实,而且我们经常在标记为e2的单词之后看到标记为e1的单词。
然后,问题是:更喜欢实体标记序列还是实体标记内容? 说日期在“开”之后还是由“开”组成以便检测该日期是否更有趣?
提前谢谢
答案 0 :(得分:1)
您似乎对NER的工作方式感到困惑。您正在尝试训练模型,以便可以编写如下功能的函数:
sentence = "On Jan 31st. I went to Neptune, and then on Feb 3rd I went to Pluto."
get_dates(sentence) # => ['Jan 31st', 'Feb 3rd']
get_places(sentence) # => ['Neptune', 'Pluto']
要训练模型,请在函数输出中标记想要的单词。因此,请勿在单词周围标记上下文。如果功能正常,您可以将标签视为函数输出的示例。
标记“ 1月31日”是否更好?或“ 1月31日”。作为约会?
您不希望“打开”,因此请勿对其进行标记。 “开”不是日期的一部分。
更喜欢实体标记序列还是实体标记内容?
您标记内容,以便模型可以学习序列。查看通用NER模型的训练数据。
考虑到它是长描述的结尾,并且我大多数时候只想获取文本中的第一个实体,将“橡胶”标记为设备是否有趣?
这取决于您的应用程序。如果您对程序进行了培训,并要求提供设备清单,那么“橡胶”应该列入清单吗?如果是这样,则应该对其进行标记。