Spaces:
Sleeping
Sleeping
File size: 4,045 Bytes
461ddce d55a3fa 461ddce d55a3fa 28515db 461ddce 6f2a4ac f7ffbe2 d55a3fa f7ffbe2 d55a3fa 461ddce 28515db 461ddce f7ffbe2 6f2a4ac 28515db 6f2a4ac e454ccf a194399 6f2a4ac e454ccf f7ffbe2 6a8ac6d a194399 8420bc3 d55a3fa a194399 d55a3fa 1ca4016 d55a3fa 28515db 6f2a4ac 28515db d55a3fa 8420bc3 461ddce d55a3fa 461ddce d55a3fa 461ddce d55a3fa 461ddce d55a3fa 461ddce d55a3fa 461ddce f7ffbe2 6f2a4ac f7ffbe2 6f2a4ac 461ddce f7ffbe2 28515db 6f2a4ac 28515db 461ddce |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
import gradio as gr
import re
from sentence_transformers import SentenceTransformer
from sentence_transformers.util import cos_sim
codes = """001 - Vehicle Registration (New)
002 - Vehicle Registration Renewal
003 - Vehicle Ownership Transfer
004 - Vehicle De-registration
005 - Lost Registration Certificate Replacement
006 - Address Change Update
007 - Vehicle Data Correction
008 - Ownership Name Correction
009 - Vehicle Tax Payment
010 - Late Payment Fee Processing
011 - Vehicle Type/Specification Update
012 - BBNKB (Transfer Fee of Vehicle Ownership)
013 - STNK Issuance (Vehicle Registration Certificate)
014 - STNK Renewal
015 - Motor Vehicle Roadworthiness Inspection
016 - Plate Number Renewal
017 - Lost Plate Replacement
018 - Vehicle Export Registration
019 - Vehicle Import Registration
020 - Fleet Vehicle Registration
021 - Bulk Vehicle Registration Update
022 - Vehicle Insurance Assistance
023 - Vehicle Accident Reporting
024 - Vehicle Usage Change Declaration (e.g., personal to commercial)
025 - Legal Document Verification
026 - Ownership Transfer for Inherited Vehicle
027 - STNK Temporary Suspension
028 - Proof of Ownership Document Update
029 - Vehicle Ownership History Check
030 - Vehicle Tax Recalculation Request
031 - Tax Exemption Application (for special cases)
032 - Deceased Owner’s Vehicle Ownership Transfer""".split("\n")
undetected = "099 - Other/Undetected"
model = SentenceTransformer('sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2')
codes_emb = model.encode(codes)
def respond(
message,
history: list[tuple[str, str]],
threshold
):
global codes_emb
global undetected
undetected_code = undetected[:3]
if history and history[-1][-1][21:24] == undetected_code:
list_his = ""
for his in history[::-1]:
if his[-1][21:24] != undetected_code:
break
list_his = his[0] + "\n" + list_his
message += "\n" + list_his
# pattern = r'\b([A-Z]{1,2})\s?(\d{4})\s?([A-Z]{3})\b'
# pattern = r'\b([A-Z]{1,2})\s?(\d{4})\s?([A-Z]{1,3})\b'
pattern = r'\b([A-Za-z]{1,2})\s?(\d{4})\s?([A-Za-z]{1,3})\b'
matches = re.findall(pattern, message)
plate_numbers = ", ".join([" ".join(x) for i,x in enumerate(matches)]).upper()
text_emb = model.encode(message)
scores = cos_sim(codes_emb, text_emb)[:,0]
s_max = scores.argmax()
if scores[s_max] < threshold:
# request_code = "033 - Other/Undetected"
request_code = undetected
else:
request_code = codes[scores.argmax()]
return "Request code number: " + request_code[:3] + "\nRequest detail: " + request_code[6:] + "\n Plate numbers: " + plate_numbers
# for val in history:
# if val[0]:
# messages.append({"role": "user", "content": val[0]})
# if val[1]:
# messages.append({"role": "assistant", "content": val[1]})
# messages.append({"role": "user", "content": message})
# response = ""
# for message in client.chat_completion(
# messages,
# max_tokens=max_tokens,
# stream=True,
# temperature=temperature,
# top_p=top_p,
# ):
# token = message.choices[0].delta.content
# response += token
# yield response
"""
For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface
"""
# demo = gr.ChatInterface(
# respond,
# )
with gr.Blocks() as demo:
# Add header title and description
gr.Markdown("# List of Request Numbers")
gr.Markdown("<br>".join(codes) + "<br>" + undetected)
gr.Markdown("# Valid License Plate Number Criteria:")
gr.Markdown("(1-2 letters) (4 numbers) (1-3 letters)")
# Add chat interface
chat_interface = gr.ChatInterface(
respond,
additional_inputs=[
gr.Number(0.5, label="confidence threshold", show_label=True, minimum=0., maximum=1.0, step=0.1)
]
)
if __name__ == "__main__":
demo.launch()
|