Python 用spaCy对列表中的复杂名词短语进行分块并生成增广列表

Python 用spaCy对列表中的复杂名词短语进行分块并生成增广列表,python,nlp,spacy,Python,Nlp,Spacy,因此,我试图将描述职业的名词短语的“缩写”列表转换为这些名词短语的“完整”列表。它应该是这样的: import spacy nlp = spacy.load("en_core_web_sm") def get_chunks(sentence): res = [] doc = nlp(u'{}'.format(sentence)) for np in doc.noun_chunks: res.append(np.text) return re

因此,我试图将描述职业的名词短语的“缩写”列表转换为这些名词短语的“完整”列表。它应该是这样的:

import spacy
nlp = spacy.load("en_core_web_sm")

def get_chunks(sentence):
    res = []

    doc = nlp(u'{}'.format(sentence))

    for np in doc.noun_chunks:
        res.append(np.text)

    return res
示例(输入-->输出):

  • 总经理和运营经理-->[总经理,运营经理]
  • 公共汽车和卡车机械师和柴油发动机专家-->[公共汽车机械师、卡车机械师、柴油发动机专家]
  • 索赔理算师、评估师和审查员-->[索赔理算师、索赔评估师、索赔审查员]
  • 重型车辆和移动设备维修技术人员和机械师-->[重型车辆维修技术人员、重型车辆机械师、移动设备维修技术人员、移动设备机械师]
我尝试了一种基于规则的方法,但并不符合我的喜好。 我也尝试过使用spaCy进行简单的分块,但最初的结果也并不完美

spaCy代码如下所示:

import spacy
nlp = spacy.load("en_core_web_sm")

def get_chunks(sentence):
    res = []

    doc = nlp(u'{}'.format(sentence))

    for np in doc.noun_chunks:
        res.append(np.text)

    return res
对于上述精确输入,代码返回:

  • [‘运营’、‘经理’]
  • [“公共汽车和卡车机械师”、“柴油发动机专家”]
  • [“索赔理算人”、“评估人”、“审查人”、“调查人”]
  • [‘重型车辆’、‘移动设备维修技师’、‘机械师’]
我正在考虑从这里开始采用基于规则的方法,但也许有人有更好的建议


谢谢,干杯

这个列表有多种形式吗?这仅仅是一个长长的列表吗?大多数表单与我包含的示例非常相似。可以在这里找到:因为您只有一个源,所以无法使用数据量来真正帮助您。您可以尝试使用块计数和排序,但最有可能的情况是,您只需编写代码来正确组合工作。此列表有多种形式吗?这仅仅是一个长长的列表吗?大多数表单与我包含的示例非常相似。可以在这里找到:因为您只有一个源,所以无法使用数据量来真正帮助您。您可以尝试使用块计数和排序,但很可能您只需要编写代码来正确组合工作