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_)