streamlit 실습(프레임워크 spacy, 터미널에서 모델 삭제하기)

JI YEON KIM·2024년 5월 9일

자습 및 특강 노트

목록 보기
4/4

spacy는 25개 언어 에 대해 훈련된 84개 파이프라인을 가지고 있으며 PyTorch , TensorFlow 및 기타 프레임워크 에서 사용자 정의 모델 지원한다.

nlp 모델로 "en_core_web_lg"을 사용했다.

import streamlit as st
import spacy


@st.cache_resource
def load_model(model_name):
    model = spacy.load(model_name)
    return model

nlp = load_model("en_core_web_lg")
print(nlp._path)

def extract_entities(ent_types, text):
    doc = nlp(text)
    entities = [(ent.text, ent.label_) for ent in doc.ents if ent.label_ in ent_types ]
    return entities

st.title("Forms")

form = st.sidebar.form(key="옵션")  #form
form.header("Rarameters")
ent_types = form.multiselect("추출하고 싶은 entity 타입을 선택하세요",
                                  ["PERSON", "ORG", "GPE"]) #사용자 정의가 들어간 entity type 리스트
text = form.text_area("텍스트를 입력하세요")
button = form.form_submit_button("제출")
if button:
    hits = extract_entities(ent_types, text)
    st.write(hits)


if "counter" not in st.session_state:
    st.session_state.counter = 0 #세션에 저장함 카운터를.

if st.button("Up"):
    st.write(st.session_state.counter)
    st.session_state.counter += 1

if st.button("Reset"):
    st.session_state.counter = 0

en_core_web_lg이 메모리의 상당량을 차지한다고 해서 지웠는데,
지우는 과정에서 에러가 났다. "queue" has attribute ~~ 와 같은 문장이었는데, 알고보니 디렉토리 내에 해당 이름을 갖고 있는 파일 때문에 에러가 난 것이었다.

print(nlp._path)
를 해서 발견한 경로로 'cd + 경로' 이동해 주고, m -rf en_core_web_lg 로 삭제한다. 맨 끝에 은 그 뒤 어떤 단어가 와도 찾아서 삭제한다는 뜻이다.

profile
안녕하세요. 김지연입니다.

0개의 댓글