시작하기무료로 시작하기

spaCy에서 사용자 지정 개체명 만들기

spaCy에 내장된 개체명만으로 충분하지 않다면 spaCy의 entity_ruler 파이프라인 구성 요소를 사용해 직접 만들 수 있습니다.

entity_ruler 구성 요소를 사용하면 나만의 개체를 만들어 spaCy 파이프라인에 추가할 수 있습니다.

먼저 nlp.add_pipe()를 사용해 기존 파이프라인에 구성 요소를 추가하되, 내가 만든 규칙이 먼저 적용되도록 "ner" 구성 요소보다 before(이전)에 배치합니다. add_pipe()는 추가한 구성 요소를 반환합니다.

그런 다음 이 구성 요소에서 add_patterns()를 호출하고, 개체로 표시하고 싶은 텍스트 pattern이 담긴 딕셔너리를 전달하면 됩니다.

Acme는 기술 기업이므로 "smartphone" 패턴에 "PRODUCT" 개체 태그를 지정하기로 했습니다.

spaCy가 이미 임포트되어 있고 nlp에는 로드된 en_core_web_sm 모델이 들어 있습니다. 파이프라인을 변경해도 이미 존재하는 doc에는 영향을 주지 않으므로, 새 구성 요소를 적용한 후 call_4_channel_2.wav 파일에서 전사된 텍스트로부터 doc을 다시 생성합니다.

이 연습은 강의의 일부입니다

Python으로 배우는 음성 언어 처리

강의 보기

연습 안내

  • "entity_ruler" 구성 요소를 "ner" 구성 요소보다 먼저 오도록 nlp 파이프라인에 추가하고, 이를 ruler에 저장하세요.
  • "pattern" 키의 값으로 "smartphone"을 추가하세요.
  • doc에 포함된 개체 속성을 출력하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# Add an entity_ruler component to the pipeline, before ner
ruler = nlp.add_pipe(____, before=____)

# Define pattern for new entity
ruler.add_patterns([{"label": "PRODUCT", "pattern": ____}])

# Recreate the doc so it uses the updated pipeline
doc = nlp(call_4_channel_2_text)

# Test new entity
for entity in doc.____:
  print(entity.text, entity.label_)
코드 편집 및 실행