Spaces:
Sleeping
Sleeping
import streamlit as st | |
from transformers import AutoTokenizer, AutoModelForTokenClassification, pipeline | |
# โหลด Tokenizer และ Model | |
model_name = "Nucha/Nucha_ITSkillNER_BERT" | |
tokenizer = AutoTokenizer.from_pretrained(model_name) | |
model = AutoModelForTokenClassification.from_pretrained(model_name) | |
# สร้าง NER Pipeline | |
ner_pipeline = pipeline("ner", model=model, tokenizer=tokenizer) | |
# UI ด้วย Streamlit | |
col1, col2, col3 = st.columns([4, 4, 4]) | |
with col1: | |
st.header("Input") | |
default_text="""Job Description: | |
We are seeking a talented Software Engineer to join our dynamic team at Tech Innovations Inc. You will be responsible for designing, developing, and maintaining software applications that meet the needs of our clients. | |
Key Responsibilities: | |
Develop high-quality software design and architecture | |
Identify, prioritize, and execute tasks in the software development life cycle | |
Review and debug code | |
Collaborate with other developers and engineers to ensure software quality | |
Required Qualifications: | |
Bachelor’s degree in Computer Science or related field | |
Proven experience as a Software Engineer or similar role | |
Familiarity with Agile development methodologies | |
Proficiency in programming languages such as Java, Python, or C# | |
Strong problem-solving skills and the ability to work in a team | |
Preferred Qualifications: | |
""" | |
text = st.text_area("Enter text for NER analysis:", value=default_text, height=400, max_chars=None, key=None, help=None, placeholder=None) | |
analyze_button = st.button("Analyze") | |
st.write("""**Example Inputs:** | |
- Experience with cloud services (AWS, Azure) | |
- Knowledge of databases (SQL, NoSQL) | |
- Familiarity with front-end technologies (HTML, CSS, JavaScript)""") | |
with col2: | |
st.header("Result") | |
# ใช้ st.markdown กับ CSS เพื่อปรับขนาดฟอนต์ | |
st.markdown("<span style='font-size: 14px;'>Press button [Analyze]</span>", unsafe_allow_html=True) | |
if analyze_button: | |
ner_results = ner_pipeline(text) | |
# Display results in a structured output block | |
if ner_results: | |
output_data = [{"Entity": entity['word'], "Label": entity['entity'], "Score": f"{entity['score']:.4f}"} for entity in ner_results] | |
st.table(output_data) # Display as a table | |
else: | |
st.write("No entities found.") | |
# ใช้ st.markdown กับ CSS เพื่อปรับขนาดฟอนต์ | |
st.markdown("<span style='font-size: 14px;'>JSON</span>", unsafe_allow_html=True) | |
st.write(ner_results) | |
with col3: | |
# สร้าง NER Pipeline | |
ner_pipeline = pipeline("ner", model=model, tokenizer=tokenizer) | |
st.title("NER Annotation Tool") | |
st.write("Highlight Named Entities and display them in a structured format.") | |
def annotate_text(text): | |
ner_results = ner_pipeline(text) | |
# สร้าง Annotation Output | |
annotations = [] | |
highlighted_text = text | |
for entity in ner_results: | |
word = entity['word'] | |
entity_label = entity['entity'] | |
score = round(entity['score'], 4) | |
# สร้าง Dictionary ของ Entity | |
annotations.append({"Entity": word, "Label": entity_label, "Score": score}) | |
# Highlight คำที่เป็น Entity | |
highlighted_text = highlighted_text.replace(word, f'<mark style="background-color: yellow">{word} ({entity_label})</mark>') | |
return highlighted_text, annotations | |
text = st.text_area("Enter text for NER analysis:", height=200) | |
if st.button("Analyze"): | |
highlighted_text, entities = annotate_text(text) | |
# แสดงผลลัพธ์แบบ HTML | |
st.markdown(highlighted_text, unsafe_allow_html=True) | |
# แสดง Entities เป็น JSON | |
st.json(entities) | |