Udhëzues për klasifikimin e tekstit për Python

Detyra MediaPipe Text Classifier ju lejon të klasifikoni tekstin në një grup kategorish të përcaktuara, të tilla si ndjenja pozitive ose negative. Kategoritë përcaktohen modeli që përdorni dhe si është trajnuar ai model. Këto udhëzime ju tregojnë se si të përdorni Klasifikuesin e Tekstit me Python.

Ju mund ta shihni këtë detyrë në veprim duke parë demonstrimin në ueb . Për më shumë informacion rreth aftësive, modeleve dhe opsioneve të konfigurimit të kësaj detyre, shihni Përmbledhjen .

Shembull kodi

Shembulli i kodit për Klasifikuesin e Tekstit ofron një zbatim të plotë të kësaj detyre në Python për referencën tuaj. Ky kod ju ndihmon të testoni këtë detyrë dhe të filloni ndërtimin e aplikacionit tuaj të klasifikimit të tekstit. Mund të shikoni, ekzekutoni dhe modifikoni kodin e shembullit të Klasifikimit të Tekstit duke përdorur vetëm shfletuesin tuaj të internetit.

Nëse po zbatoni Klasifikuesin e Tekstit për Raspberry Pi, referojuni shembullit të aplikacionit Raspberry Pi .

Konfigurimi

Ky seksion përshkruan hapat kryesorë për konfigurimin e mjedisit tuaj të zhvillimit dhe projekteve të kodit në mënyrë specifike për të përdorur Klasifikuesin e Tekstit. Për informacion të përgjithshëm mbi konfigurimin e mjedisit tuaj të zhvillimit për përdorimin e MediaPipe Tasks, duke përfshirë kërkesat e versionit të platformës, shihni udhëzuesin e konfigurimit për Python .

Paketat

Klasifikuesi i tekstit përdor paketën mediapipe pip. Ju mund t'i instaloni këto varësi me sa vijon:

$ python -m pip install mediapipe

Importet

Importoni klasat e mëposhtme për të hyrë në funksionet e detyrave të Klasifikimit të Tekstit:

from mediapipe.tasks import python
from mediapipe.tasks.python import text

Model

Detyra MediaPipe Text Classifier kërkon një model të trajnuar që është në përputhje me këtë detyrë. Për më shumë informacion mbi modelet e trajnuara të disponueshme për Klasifikuesin e Tekstit, shihni seksionin Modelet e përmbledhjes së detyrave.

Zgjidhni dhe shkarkoni një model dhe më pas ruajeni në një direktori lokale:

model_path = '/absolute/path/to/text_classifier.tflite'

Specifikoni shtegun e modelit me parametrin e objektit BaseOptions model_asset_path , siç tregohet më poshtë:

base_options = BaseOptions(model_asset_path=model_path)

Krijo detyrën

Detyra MediaPipe Text Classifier përdor funksionin create_from_options për të vendosur detyrën. Funksioni create_from_options pranon vlera për opsionet e konfigurimit për të vendosur opsionet e klasifikuesit. Ju gjithashtu mund të inicializoni detyrën duke përdorur funksionin e fabrikës create_from_model_path . Funksioni create_from_model_path pranon një shteg relative ose absolute drejt skedarit të modelit të trajnuar. Për më shumë informacion mbi opsionet e konfigurimit, shihni Opsionet e konfigurimit .

Kodi i mëposhtëm tregon se si të ndërtohet dhe konfigurohet kjo detyrë.

base_options = python.BaseOptions(model_asset_path=model_path)
options = text.TextClassifierOptions(base_options=base_options)

with python.text.TextClassifier.create_from_options(options) as classifier:
  classification_result = classifier.classify(text)

Opsionet e konfigurimit

Kjo detyrë ka opsionet e mëposhtme të konfigurimit për aplikacionet Android:

Emri i opsionit Përshkrimi Gama e vlerave Vlera e paracaktuar
display_names_locale Vendos gjuhën e etiketave për t'u përdorur për emrat e shfaqur të dhëna në meta të dhënat e modelit të detyrës, nëse disponohet. Parazgjedhja është en për anglisht. Ju mund të shtoni etiketa të lokalizuara në meta të dhënat e një modeli të personalizuar duke përdorur API-në e shkrimtarit metadata TensorFlow Lite Kodi lokal sq
max_results Vendos numrin maksimal opsional të rezultateve të klasifikimit me pikët më të mira për t'u kthyer. Nëse < 0, të gjitha rezultatet e disponueshme do të kthehen. Çdo numër pozitiv -1
score_threshold Vendos pragun e rezultatit të parashikimit që tejkalon atë të dhënë në meta të dhënat e modelit (nëse ka). Rezultatet nën këtë vlerë refuzohen. Çdo noton Nuk është vendosur
category_allowlist Vendos listën opsionale të emrave të kategorive të lejuara. Nëse nuk janë bosh, rezultatet e klasifikimit emri i kategorisë së të cilave nuk është në këtë grup do të filtrohen. Emrat e kopjuar ose të panjohur të kategorive shpërfillen. Ky opsion është reciprokisht ekskluziv me category_denylist dhe duke përdorur të dyja rezultatet në një gabim. Çdo varg Nuk është vendosur
category_denylist Vendos listën opsionale të emrave të kategorive që nuk lejohen. Nëse nuk janë bosh, rezultatet e klasifikimit emri i kategorisë së të cilave është në këtë grup do të filtrohen. Emrat e kopjuar ose të panjohur të kategorive shpërfillen. Ky opsion është reciprokisht ekskluziv me category_allowlist dhe duke përdorur të dyja rezultatet në një gabim. Çdo varg Nuk është vendosur

Përgatitni të dhënat

Klasifikuesi i tekstit punon me të dhëna teksti ( str ). Detyra trajton parapërpunimin e hyrjes së të dhënave, duke përfshirë parapërpunimin e tokenizimit dhe tensorit.

Të gjitha parapërpunimit trajtohen brenda funksionit classify . Nuk ka nevojë për përpunim shtesë të tekstit të hyrjes paraprakisht.

input_text = 'The input text to be classified.'

Drejtoni detyrën

Klasifikuesi i tekstit përdor funksionin classify për të nxjerrë përfundime. Për klasifikimin e tekstit, kjo nënkupton kthimin e kategorive të mundshme për tekstin hyrës.

Kodi i mëposhtëm tregon se si të ekzekutohet përpunimi me modelin e detyrës.

with python.text.TextClassifier.create_from_options(options) as classifier:
  classification_result = classifier.classify(text)

Trajtoni dhe shfaqni rezultatet

Klasifikuesi i tekstit nxjerr një objekt TextClassifierResult që përmban një listë të kategorive të mundshme për tekstin hyrës. Kategoritë përcaktohen nga modeli që përdorni, kështu që nëse doni kategori të ndryshme, zgjidhni një model tjetër ose rikualifikoni një ekzistues.

Më poshtë tregon një shembull të të dhënave dalëse nga kjo detyrë:

TextClassificationResult:
  Classification #0 (single classification head):
    ClassificationEntry #0:
      Category #0:
        category name: "positive"
        score: 0.8904
        index: 0
      Category #1:
        category name: "negative"
        score: 0.1096
        index: 1

Ky rezultat është marrë duke ekzekutuar klasifikuesin BERT në tekstin hyrës: "an imperfect but overall entertaining mystery" .