Может ли модель SpaCy распознавания именованных объектов (NER) или любой другой код, например, линейка объектов вокруг нPython

Программы на Python
Anonymous
Может ли модель SpaCy распознавания именованных объектов (NER) или любой другой код, например, линейка объектов вокруг н

Сообщение Anonymous »

Анонимизация объектов, обнаруженных с помощью модели NER
Я пытаюсь анонимизировать файлы с помощью модели NER для немецкого текста, который иногда может содержать несколько английских слов. Если я возьму модели spaCy NER для немецкого и английского языков, такие как de_core_news_sm и en_core_web_sm, они найдут названия городов или людей, и, по крайней мере, английская модель найдет «Декабрь 2022», но не найдет полную дату, например «15. Декабрь 2022».
Изменение распознавания объекта
Я не могу изменить совпадения модели. Я думал, что могу использовать линейку объектов, чтобы изменить модель NER, но модель NER кажется фиксированной, и я не знаю, как моя собственная линейка объектов может перевесить модель SpaCy NER, а также, как я могу получить любую линейку объектов. работать вообще, даже если я отключу модель NER. Я сместил линейку сущностей перед моделью NER в конвейере spaCy, но новых замен в выводе не вижу.

Простой пример, в основном из основного руководства по SpaCy в разделе «Использование линейки объектов»:

из spacy.lang.de импортировать на немецком языке нлп = немецкий() линейка = nlp.add_pipe("entity_ruler") узоры = [ {"метка": "ДАТА", "шаблон": [ {"lower": {"regex": "(?:0?[1-9]|[12][0-9]|3[01])[\.\s]{1,2}?(jan (?:uar)?|февраль(?:ruar)?|мар(?:z)?|апрель(?:il)?|май|июнь(?:i)?|июль(?:i)?|август (?:ust)?|sep(?:t(?:ember)?)?|okt(?:ober)?|nov(?:ember)?|dez(?:ember)?)\.?\s ?['`]?\d{0,4}"}}, {"shape": {"regex": "(?:0?[1-9]|[12][0-9]|3[01])[\.\s]{1,2}?(0 ?[1-9]|1[0-2])\.?\s?['`]?\d{0,4}"}}, {"lower": {"regex": "(?:jan(?:uar)?|feb(?:ruar)?|mär(?:z)?|apr(?:il)?|mai|jun( ?:i)?|июл(?:i)?|август(?:уст)?|сентябрь(?:t(?:ember)?)?|okt(?:ober)?|ноябрь(?:ember) ?|dez(?:ember)?)\.?\s?['`]?\d{2,4}"}}, {"lower": {"regex": "(?:januar|feb(?:ruar)?|mär(?:z)?|apr(?:il)?|mai|jun(?:i)?| jul(?:i)?|aug(?:ust)?|sep(?:t(?:ember)?)?|okt(?:ober)?|nov(?:ember)?|dez(?: уголек)?\.?)"}}, {"форма": "дд"}, {"ТЕКСТ": {"в": ["15"]}} ]}, {"label": "ORG1", "pattern": {"LOWER": "apple"}}, {"label": "GPE1", "pattern": {"LOWER": "san"}}, {"label": "DATE1", "pattern": {"TEXT": [{"regex": "^(?:0?[1-9]|[12][0-9]|3[01] )$"}]}} ] правитель.add_patterns(шаблоны) # Берем немецкий декабрь для проверки немецкого RegEx doc = nlp("Apple eröffnet ein Büro в Сан-Франциско, 15 декабря 2022 г.") Выход:

[] Вопрос Могу ли я использовать в коде модель spaCy распознавания именованных объектов (NER), чтобы улавливать дальнейшие шаблоны дат также как объекты DATE, чтобы это перевешивало выбор модели NER?

Цель состоит в том, чтобы полное значение «15. Декабрь 2022 г.» находилось как один объект DATE.
ПС Дубликат?
Я нашел способ добавить шаблоны в существующую линейку Entity? это говорит мне переобучить пользовательскую линейку объектов и не добавлять шаблоны, поскольку спрашивающий обучил модель NER:

У меня есть обученная пользовательская модель NER с NER и Entity Ruler. трубы. Я хочу обновить и переобучить существующий конвейер.

Вопрос: «Как добавить шаблоны в существующую линейку Entity?» спрашивает более или менее то же самое, что и я здесь. Но поскольку модель NER является пользовательской, в ответах вам предлагается переобучить модель NER с использованием этих шаблонов. Вот почему этот вопрос, надеюсь, не является дубликатом: я не могу переобучить модель NER, поскольку она уже готова для загрузки из spaCy.
Катастрофическое забвение?
Имейте в виду, что ответы там говорят вам никогда не добавлять линейку объектов в модель NER, если вы можете переобучить свою модель NER, поскольку это может привести к «катастрофическому забвению» уже обученной модели NER, читайте там больше . Если это так, то мне интересно, что я здесь вообще делаю, поскольку это будет означать, что я не могу объединить распознавание сущностей, на котором обучается модель SpaCy NER, с другой линейкой сущностей. Я очень сомневаюсь, что это правда. Почему я не могу проверить текст на наличие шаблонов некоторых объектов, а затем запустить поверх этого модель spaCy NER, а затем позволить первым найденным объектам перевесить вторые? Почему это должно привести к катастрофическому забвению, если мы говорим о двух моделях? Катастрофическое забывание означает, что модель NER переобучается только на новом тексте, который я принимаю за линейку сущностей. Мой новый входной текст будет состоять из одного предложения с датой. Тогда было бы легко выяснить, происходит ли вообще катастрофическое забывание. Я могу просто запустить конвейер для предложения с большим количеством сущностей, кроме дат, и посмотреть, что произойдет. Тем не менее, я думаю, что мои мысли здесь неверны, поэтому у нас есть не две модели, а одна модель распознавания объектов, которая представляет собой слияние линейки объектов и модели NER. Именно так я вообще понимал правителя сущности. Но даже в этом случае я все равно могу легко проверить это на катастрофическом забывании: если распознавание объектов в большом файле становится намного хуже, то я знаю, что происходит катастрофическое забывание. Если вы спросите меня, это звучит слишком странно, чтобы быть правдой. Я сомневаюсь, что ответы на другой вопрос верны.

Вернуться в «Python»