Как добавить некоторые существительные фразы, которые я уже знал, когда делал noun_chunks в spacy (или np_extractor в textblob)? - PullRequest
0 голосов
/ 21 марта 2019

Я использую noun_chunks в spacy и np_extractor в textblob, чтобы найти все фразы в некоторых статьях. Их некоторые технические термины разобраны неправильно. Пример: «ANOVA также называется анализом дисперсии», и результат показывает, что существительные фразы - это «ANOVA», «анализ», «дисперсия», но я думаю, что правильные словосочетания - «ANOVA», «анализ дисперсии». У меня уже есть список фраз, содержащий некоторые технические фразы, и я думаю, что это может помочь при разборе. Как я могу использовать этот список для переобучения или улучшения экстрактора существительных?

1 Ответ

1 голос
/ 21 марта 2019

Звучит как хороший пример использования сопоставления на основе правил .Это особенно эффективно в сценарии, подобном вашему, где вы можете объединить статистические модели (например, существительные куски, основанные на тегах и зависимостях части речи) с вашими собственными правилами для охвата оставшихся конкретных случаев.

Вотпростой пример:

import spacy
from spacy.matcher import PhraseMatcher

nlp = spacy.load("en_core_web_sm")
matcher = PhraseMatcher(nlp.vocab)
# This is just an example – see the docs for how to do this more elegantly
matcher.add("PHRASES", None, nlp("ANOVA"), nlp("analysis of variance"))

doc = nlp("A text about analysis of variance or ANOVA")
matches = matcher(doc)
for match_id, start, end in matches:
    matched_span = doc[start:end]
    print(matched_span.text)
# analysis of variance
# ANOVA

Индекс совпадений start и end позволяет создать диапазон - так что в итоге вы получите Span объекты, точно так же, как те, которые были возвращены doc.noun_chunks.Если вы хотите решить эту проблему еще более элегантно, вы также можете добавить пользовательский атрибут , такой как doc._.custom_noun_chunks, который запускает сопоставление на Doc и возвращает сопоставленные отрезки или даже сопоставленные отрезки плюс оригинальные куски существительного.

Кстати, doc.noun_chunks основаны на тегах части речи и разборе зависимостей.Вы можете проверить код для того, как они вычисляются на английском языке здесь .В то время как вы могли бы теоретически улучшить фрагменты существительных путем точной настройки тегера и синтаксического анализатора, этот подход кажется излишним и гораздо более умозрительным для вашего варианта использования.Если у вас уже есть список фраз, вы можете сопоставить его напрямую.

...