Разрыв после первой последовательности PER, найденной с помощью SpacyPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Разрыв после первой последовательности PER, найденной с помощью Spacy

Сообщение Anonymous »

Я пытаюсь извлечь только имя первого говорящего из списка текстов с помощью SpaCy. В настоящее время моя функция возвращает все теги «PER», но я хочу уменьшить накладные расходы и получить только первую непрерывную последовательность объектов «PER». Вот пример вывода, который я получаю:

Код: Выделить всё

Detected Names in Text: ['garcía', 'lópez']
Detected Names in Text: ['j. jesus orozco alfaro']
Detected Names in Text: ['josé guadarrama márquez', 'josé guadarrama']
Detected Names in Text: ['pedro sánchez', 'josé manuel albares', 'pablo iglesias']
Но я хочу, чтобы результат был:

Код: Выделить всё

Detected Names in Text: ['garcía']
Detected Names in Text: ['j. jesus orozco alfaro']
Detected Names in Text: ['josé guadarrama márquez']
Detected Names in Text: ['pedro sánchez']
Вот код, который я сейчас использую:

Код: Выделить всё

import spacy
from spacy.matcher import Matcher

nlp = spacy.load("es_core_news_lg")

texts = [
"El Sr. García habló en la sesión. También estuvo presente el Senador López y la Diputada Martínez.",
"PRESIDENCIA DEL C. SENADOR J. JESUS OROZCO ALFARO",
"            -ER C. José Guadarrama Márquez: el contrabando del dia, José Guadarrama Márquez",
"El presidente Pedro Sánchez y el Ministro de Asuntos Exteriores José Manuel Albares se reunieron con el Senador Pablo Iglesias."
]
texts = [text.lower() for text in texts]

matcher = Matcher(nlp.vocab)

patterns = [
[{"LOWER": "el"}, {"LOWER": "c"}],
[{"LOWER": "el"}, {"LOWER": "sr"}],
[{"LOWER": "el"}, {"LOWER": "sra"}]
]

matcher.add("LEGISLATIVE_TITLES", patterns)

# Function to find a sequence of PER entities allowing one MISC
def find_per_sequence(doc, start_idx=0):
per_entities = []
misc_count = 0

for ent in doc[start_idx:].ents:
if ent.label_ == "PER":
per_entities.append(ent.text)
elif ent.label_ == "MISC" and misc_count < 1:
misc_count += 1
per_entities.append(ent.text)
else:
break  # Should stop if any other entity or second MISC is encountered

return per_entities

for text in texts:
doc = nlp(text)

# Find matches
matches = matcher(doc)

# Extract the first match and its position
title_start = None
title_end = None
for match_id, start, end in matches:
title_start = start
title_end = end
break

# If a title was found, start searching for PER entities from that position
if title_start is not None:
names = find_per_sequence(doc, start_idx=title_end)
else:
names = find_per_sequence(doc)

# Output the detected names for each text
print(f"Detected Names in Text: {names}")
Что я ищу:
Я хочу изменить функцию find_per_sequence так, чтобы она возвращала только первую непрерывную последовательность объектов «PER». в тексте, игнорируя любые последующие объекты «PER» после обнаружения объекта другого типа. Предоставленная функция возвращает несколько имен или частей имен, и мне нужен способ гарантировать, что будет включено только имя или последовательность. Как мне этого добиться?

Подробнее здесь: https://stackoverflow.com/questions/789 ... with-spacy
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Spacy nlp = spacy.load("en_core_web_lg")
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Почему Presidio с Spacy NLP Engine не распознает организации и Pesel, пока Spacy делает?
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Можно ли переносить старые модели Spacy в будущие версии Spacy?
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Обнаружение ошибки несоответствия формы при реализации DDQN с помощью T-Soft Update и PER
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Предотвратить разрыв слова на последовательности ++
    Anonymous » » в форуме CSS
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous

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