我需要使用自然语言处理和NER从给定的文本中识别出所有的establishments和facilities。
示例文本:
政府致力于为城外建造新的公园、游泳池和商业综合体,并改善现有的住宅建筑群、学校和联排别墅。
预期要识别的实体:
公园,游泳池,商业综合体,住宅综合体,学校和联排别墅
我确实探索了一些python库,比如Spacy和NLTK,但是结果并不好,只有两个实体被识别出来。我认为这些数据需要进行适当的预处理。
我应该做些什么来改善结果呢?还有其他更适合这个用例的库/框架吗?有没有办法使用现有的db来训练我们的模型?
发布于 2020-10-26 13:40:42
正如@Sergey所提到的,您需要一个自定义的NER模型。如果你有培训数据的话,Spacy对定制的NER来说真的很有用。下面是一个简单的方法,并考虑到你的例子-
import spacy
from tqdm import tqdm
import random
train_data = [
('Government built new parks', {
'entities': [(0, 10, 'ORG'),(21, 26, 'FAC')]
}),
]创建空白模型&添加“NER”管道
nlp=spacy.blank('en')
ner=nlp.create_pipe('ner')
nlp.add_pipe(ner, last=True)训练步骤
n_iter=100
for _, annotations in train_data:
for ent in annotations.get('entities'):
ner.add_label(ent[2])
other_pipes = [pipe for pipe in nlp.pipe_names if pipe != 'ner']
with nlp.disable_pipes(*other_pipes): # only train NER
optimizer = nlp.begin_training()
for itn in range(n_iter):
random.shuffle(train_data)
losses = {}
for text, annotations in tqdm(train_data):
nlp.update(
[text],
[annotations],
drop=0.25,
sgd=optimizer,
losses=losses)
print(losses)
#Test
for text, _ in train_data:
doc = nlp(text)
print('Entities', [(ent.text, ent.label_) for ent in doc.ents])调优超参数,并检查哪一个最适合你.
其他探索的方法-
提供了“最先进的”结果。
干杯!
发布于 2020-11-13 08:41:14
来自@anat的非常好的答案,实际上你必须训练一个模型,除非你找到一个工具能够专注于具有细粒度实体的组织,通过一些类型包括设施作为组织/地点的一个子类型,它可能对建立是一样的。
从技术角度来看,您肯定可以使用Spacy并对其进行培训,或者rasa https://rasa.com也是一个不错的解决方案,在这种情况下,您必须只为实体配置它(不要为意图/故事操心)。
我的贡献将是包括预先培训的嵌入,以方便培训。根据所选择的工具和语言,可能已经包含了它,或者您可能必须指定/实现它。SOTA的作品是BERT,它可以与HuggingFace https://huggingface.co集成,在那里您可以找到许多预先训练过的模型。这将使系统能够识别实体,即使它们没有在您的专用培训语料库中进行注释。从实现的角度来看,它现在是相当标准的,不应成为一个问题。
而且,最重要的是,不要忘记在一个单独的(分裂的)数据集上进行评估!
发布于 2022-08-11 14:50:30
在2022年,你不一定需要为此培养一种新的模式。
相反,您可以使用大型语言模型,如GPT-3、GPT或GPT,并对任何类型的复杂实体执行实体提取,甚至无需为其训练新的模型!
请参阅如何安装GPT并在Python中使用它:https://github.com/kingoflolz/mesh-transformer-jax。如果这个型号对您的机器来说太大了,您也可以使用一个更小的型号,比如这个小版本的OPT (由Facebook编写):https://huggingface.co/facebook/opt-125m
为了了解如何将这些模型用于NER,请参阅这篇关于“很少射击学习:https://nlpcloud.com/effectively-using-gpt-j-gpt-neo-gpt-3-alternatives-few-shot-learning.html”的文章。
还可以看到TDS的这篇关于少有的学习和NER:https://towardsdatascience.com/advanced-ner-with-gpt-3-and-gpt-j-ce43dc6cdb9c的文章。
最后,您可能对这个关于NER与GPT-NeoX : spaCy:https://www.youtube.com/watch?v=E-qZDwXpeY0的视频感兴趣。
https://stackoverflow.com/questions/64495524
复制相似问题