NLP命名实体识别

时间:2020-03-21 06:33:01

标签: machine-learning nlp stanford-nlp named-entity-recognition

我是NLP的新手。我想使用命名实体识别算法从文本中提取名称和位置,而不使用任何库。

示例:

美国航空表示将开通飞往班加罗尔的直航。

答案:

Entity: American Airlines
Location: Bengaluru

命名实体的最佳做法是什么?就像将所有名称和位置存储在CSV文件中并与句子进行比较吗?

2 个答案:

答案 0 :(得分:0)

您可以通过多种方式实现命名实体识别:

  1. 可以将这个问题视为多类分类问题,其中命名实体是我们的标签,因此我们可以应用不同的分类算法。这种方法的问题是我们错过了句子中单词的上下文。识别和标记单词需要彻底理解句子中的单词。

  2. 要构建最先进的NER,我们需要深入研究深度学习方法。我们知道单词的上下文起着重要的作用,考虑到文本是顺序数据格式Long Short Term Memory (LSTM)起着重要的作用。并非任何类型的LSTM都能提供最佳结果。我们需要使用双向 LSTM,因为标准LSTM在文本序列中使用过去信息进行预测。对于NER,由于上下文依次覆盖了过去和将来的标签,因此我们需要同时考虑过去和将来的信息。 双向 LSTM是两个LSTM的组合-一个从右向左向前运行,另一个从左向右向后运行。< / p>

答案 1 :(得分:0)

正如Manjur所说,如今最好的选择是深度学习。最常见的是BERT,用于理解语言和变体的深层双向变压器的预训练。这些是Transformers编码器的变体,比GPT等解码器更适合提取信息。

这些模型对NER之类的任务进行微调。实际上,它们已经是本地化和人员的微调版本。例如,您可以在Spacy中找到实现。但是,如果您希望获得更高的准确性,并且拥有pytorch或tensorflow,预处理语料库的经验,并且已经标记了要使用的数据(它们也仅存在于这些实体中,则存在数据集),那么您可以自己对其进行微调。

图书管理员:https://medium.com/@b.terryjack/nlp-pretrained-named-entity-recognition-7caa5cd28d7b#:~:text=

不同的方法和SOTA:https://primer.ai/blog/a-new-state-of-the-art-for-named-entity-recognition/

使用CSV的NER与BERT的整个实现(来自Kaggle,因此您也可以下载数据集):https://www.kaggle.com/abhishek/entity-extraction-model-using-bert-pytorch