Комплексные фразы со сложными именами в списках с помощью spaCy и создание расширенного списка - PullRequest
1 голос
/ 03 апреля 2019

Итак, я пытаюсь преобразовать «сокращенный» список фраз существительных, описывающих занятия, в «полный» список этих фраз. Это должно выглядеть примерно так:

Примеры (вход -> выход):

  • Генеральный и операционный менеджеры -> [Генеральный менеджер, операционный менеджер]
  • Специалисты по ремонту автобусов и грузовиков, а также специалисты по дизельным двигателям -> [Специалисты по ремонту автобусов и грузовиков, специалисты по дизельным двигателям]
  • Составители претензий, оценщики и эксперты -> [Установщики претензий, оценщики претензий, эксперты по искам]
  • Техники и механики по обслуживанию тяжелой техники и мобильной техники -> [Техники по обслуживанию тяжелой техники, механики по тяжелой технике, техники по обслуживанию мобильной техники, механики мобильной техники]

Я попробовал тяжелый подход, основанный на правилах, но мне это не понравилось. Я также попробовал простое разделение на части с помощью 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

Для точных входных данных, как указано выше, код возвращает:

  • ['операции', 'менеджеры']
  • [«Механики автобусов и грузовиков», «Специалисты по дизельным двигателям»]
  • [«Органы по урегулированию претензий», «оценщики», «эксперты», «следователи»]
  • ['Тяжелая техника', 'Техники по обслуживанию мобильной техники', 'Механики']

Я подумываю перейти к подходу, основанному на правилах, но, возможно, у кого-то есть лучшее предложение?

Спасибо и ура!

...