如何使用Python NLP从句子列表中提取特定单词这些词是医疗设备的一部分

问题描述

我想从句子列表中提取医疗设备零件名称。 这些句子是对支持请求采取的记录操作,可能包括更换零件或确认零件状态不佳。

这是例句-

@H_502_4@
  • 发现双方的[某些设备部件]无法正常工作。
  • 将问题缩小到[某些设备部分]。
  • 需要更换[某些设备零件]。
  • 在进行故障排除的过程中,发现[某些设备零件]很可能坏了。
  • [某些设备零件]不会掉下来,将订购零件。
  • 我想从以上句子中提取“ [某些设备零件]”。

    我已经尝试过的事情- 首先,我使用情感分析过滤了句子。只考虑那些带有负面情绪或带有“替换”文字的人。

    @H_502_4@
  • 在定义的语法上使用RegexpParser进行POS标记后,使用NLTK =“ NP:{> > + > + | > > +}“
  • 使用Spacy,经过POS标记和依赖性后,基于动词,名词关系进行过滤-['dobj']中的token.dep_和token.pos_ =='NOUN'
  • 以上方法给了我很多无意义的输出。 请让我知道是否有什么可以帮助的。

    解决方法

    听起来您将从命名实体识别(NER)中受益。我很好奇SpaCy是否能够将它们选为PRODUCT实体。

    ,

    您可能需要训练Spacy Named Entity Recognition,将标记标记为“医疗设备”。这样,您可以解析文本并根据NER标签定位设备。

    这将要求您使用指定的医疗设备实体生成一些培训数据。通过查找PRODUCT实体可以跳过此步骤,但是您可能会错过实体,因为您的用例比通用产品的spacy受过检测的更加具体。

    一旦您对模型进行了训练以识别新的医疗设备实体,就可以通过以下方式找到它们

    import spacy
    nlp = spacy.load('en_core_medicalner')
    doc = nlp('some text')
    
    for token in doc:
      if token.label_ == 'Medical Equipment':
        print('token {} is Medical Equipment'.format(token.text))