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 로 삭제한다. 맨 끝에 은 그 뒤 어떤 단어가 와도 찾아서 삭제한다는 뜻이다.