Asanaly commited on
Commit
75464af
·
verified ·
1 Parent(s): 94d767f

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +56 -0
app.py ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # app.py
2
+
3
+ import gradio as gr
4
+ import torch
5
+ import numpy as np
6
+ from transformers import AutoTokenizer, AutoModelForTokenClassification
7
+
8
+ # ============================
9
+ # 1. Модель мен токенизаторды жүктеу
10
+ # ============================
11
+ # Мысалы, мультилингвалды BERT (қазақ тілін қолдайды)
12
+ model_checkpoint = "bert-base-multilingual-cased"
13
+ tokenizer = AutoTokenizer.from_pretrained(model_checkpoint)
14
+ model = AutoModelForTokenClassification.from_pretrained(model_checkpoint, num_labels=7)
15
+
16
+ # Қазақ NER үшін label тізімі
17
+ label_list = ["O", "B-PER", "I-PER", "B-ORG", "I-ORG", "B-LOC", "I-LOC"]
18
+
19
+ # ============================
20
+ # 2. NER функциясы
21
+ # ============================
22
+ def predict_ner(text):
23
+ # Токенизация
24
+ tokens = tokenizer(text.split(), return_tensors="pt", is_split_into_words=True)
25
+ outputs = model(**tokens).logits
26
+ predictions = np.argmax(outputs.detach().numpy(), axis=2)[0]
27
+
28
+ word_ids = tokens.word_ids(batch_index=0)
29
+ results = []
30
+ already_seen = set()
31
+ for idx, word_idx in enumerate(word_ids):
32
+ if word_idx is not None and word_idx not in already_seen:
33
+ label = label_list[predictions[idx]]
34
+ word = text.split()[word_idx]
35
+ if label != "O":
36
+ results.append(f"{word} → {label}")
37
+ already_seen.add(word_idx)
38
+ if not results:
39
+ return "Атаулар табылған жоқ"
40
+ return "\n".join(results)
41
+
42
+ # ============================
43
+ # 3. Gradio интерфейсі
44
+ # ============================
45
+ iface = gr.Interface(
46
+ fn=predict_ner,
47
+ inputs=gr.Textbox(lines=5, placeholder="Мәтінді осында енгізіңіз..."),
48
+ outputs=gr.Textbox(label="Анықталған атаулар (NER)"),
49
+ title="Қазақ тіліндегі NER",
50
+ description="Бұл құрал қазақ мәтіндеріндегі адам, ұйым және орын атауларын анықтайды"
51
+ )
52
+
53
+ # ============================
54
+ # 4. Іске қосу
55
+ # ============================
56
+ iface.launch()