ИИ део – Врсте техника векторизације

У овом чланку ћемо разговарати о векторизацији – НЛП техници и разумети њен значај уз свеобухватан водич о различитим типовима векторизације.

Разговарали смо о основним концептима НЛП препроцесирања и чишћења текста. Погледали смо основе НЛП-а, његове различите примене и технике као што су токенизација, нормализација, стандардизација и чишћење текста.

Пре него што разговарамо о векторизацији, хајде да ревидирамо шта је токенизација и како се она разликује од векторизације.

Шта је токенизација?

Токенизација је процес разлагања реченица на мање јединице које се називају токени. Токен помаже рачунарима да лако разумеју и раде са текстом.

ЕКС. ‘Овај чланак је добар’

Жетони- [‘This’, ‘article’, ‘is’, ‘good’.]

Шта је векторизација?

Као што знамо, модели и алгоритми машинског учења разумеју нумеричке податке. Векторизација је процес претварања текстуалних или категоријалних података у нумеричке векторе. Конвертовањем података у нумеричке податке можете прецизније да тренирате свој модел.

Зашто нам је потребна векторизација?

❇ Токенизација и векторизација имају различит значај у обради природног језика (НПЛ). Токенизација дели реченице на мале лексеме. Векторизација га конвертује у нумерички формат тако да рачунар/МЛ модел може да га разуме.

❇ Векторизација није корисна само за претварање у нумерички облик, већ је корисна и за хватање семантичког значења.

❇ Векторизација може смањити димензионалност података и учинити их ефикаснијим. Ово би могло бити веома корисно док радите на великом скупу података.

❇ Многи алгоритми за машинско учење захтевају нумерички унос, као што су неуронске мреже, тако да нам векторизација може помоћи.

Постоје различите врсте техника векторизације, које ћемо разумети кроз овај чланак.

Врећа речи

Ако имате гомилу докумената или реченица и желите да их анализирате, Врећа речи поједностављује овај процес третирајући документ као врећу која је испуњена речима.

Приступ врећици речи може бити користан у класификацији текста, анализи осећања и проналажењу докумената.

Претпоставимо да радите на пуно текста. Врећа речи ће вам помоћи да представите текстуалне податке креирањем речника јединствених речи у нашим текстуалним подацима. Након креирања речника, кодираће сваку реч као вектор на основу учесталости (колико често се свака реч појављује у том тексту) ових речи.

Ови вектори се састоје од ненегативних бројева (0,1,2…..) који представљају број фреквенција у том документу.

Торба речи укључује три корака:

Корак 1: Токенизација

То ће разбити документе у токене.

На пример – (Реченица: „Волим пицу и волим хамбургере“)

Корак 2: Јединствено раздвајање речи/креирање речника

Направите листу свих јединствених речи које се појављују у вашим реченицама.

[“I”, “love”, “Pizza”, “and”, “Burgers”]

Корак 3: Бројање појављивања речи/креирање вектора

Овај корак ће избројати колико пута се свака реч понавља из речника и похранити је у ретку матрицу. У разређеној матрици, сваки ред у вектору реченице чија је дужина (колоне матрице) једнака величини речника.

Увези ЦоунтВецторизер

Увезићемо ЦоунтВецторизер да обучимо наш модел врећице речи

from sklearn.feature_extraction.text import CountVectorizer

Цреате Вецторизер

У овом кораку ћемо креирати наш модел користећи ЦоунтВецторизер и обучити га помоћу нашег узорка текстуалног документа.

# Sample text documents
documents = [
    "This is the first document.",
    "This document is the second document.",
    "And this is the third one.",
    "Is this the first document?",
]

# Create a CountVectorizer 
cv = CountVectorizer()
# Fit and Transform
X = cv.fit_transform(documents)

Претворите у густ низ

У овом кораку ћемо претворити наше репрезентације у густ низ. Такође, добићемо имена функција или речи.

# Get the feature names/words
feature_names = vectorizer.get_feature_names_out()

# Convert to dense array
X_dense = X.toarray()

Хајде да одштампамо матрицу термина документа и речи обележја

# Print the DTM and feature names
print("Document-Term Matrix (DTM):")
print(X_dense)
print("\nFeature Names:")
print(feature_names)

Документ – матрица термина (ДТМ):

Матрик

Називи карактеристика:

Карактеристичне речи

Као што видите, вектори се састоје од ненегативних бројева (0,1,2……) који представљају учесталост речи у документу.

Имамо четири примера текстуалних докумената и идентификовали смо девет јединствених речи из ових докумената. Ове јединствене речи смо сачували у нашем речнику тако што смо им доделили „називе функција“.

Затим, наш модел Вреће речи проверава да ли је прва јединствена реч присутна у нашем првом документу. Ако је присутан, додељује вредност 1, иначе додељује 0.

Ако се реч појави више пута (нпр. 2 пута), додељује вредност у складу са тим.

На пример, у другом документу реч ‘документ’ се понавља два пута, тако да ће њена вредност у матрици бити 2.

Ако желимо једну реч као обележје у кључу речника – униграмско представљање.

н – грами = Униграми, биграми…….итд.

Постоји много библиотека као што је сцикит-леарн за имплементацију врећице речи: Керас, Генсим и друге. Ово је једноставно и може бити корисно у различитим случајевима.

Али, врећа речи је бржа, али има нека ограничења.

  • Он свакој речи придаје исту тежину, без обзира на њену важност. У многим случајевима, неке речи су важније од других.
  • БоВ једноставно броји учесталост речи или колико пута се реч појављује у документу. Ово може довести до пристрасности према уобичајеним речима као што су „тхе”, „анд”, „ис” итд., које можда немају много значења.
  • Дужи документи могу имати више речи и могу створити веће векторе. Ово може да изазове поређење. Може да створи ретку матрицу, што не може бити добро за извођење сложених НЛП пројеката.
  •   Погледајте своје Инстаграм, Фацебоок и Твиттер феедове на једном месту

    За решавање овог проблема можемо изабрати боље приступе, један од њих је ТФ-ИДФ. Хајде да разумемо детаљно.

    ТФ-ИДФ

    ТФ-ИДФ, или учесталост термина – Инверзна фреквенција документа, је нумерички приказ за одређивање важности речи у документу.

    Зашто нам треба ТФ-ИДФ преко Вреће речи?

    Врећа речи третира све речи подједнако и бави се само учесталошћу јединствених речи у реченицама. ТФ-ИДФ даје важност речима у документу узимајући у обзир и учесталост и јединственост.

    Речи које се пречесто понављају не надјачавају мање честе и важније речи.

    ТФ: Учесталост термина мери колико је реч важна у једној реченици.

    ИДФ: Инверзна учесталост докумената мери колико је једна реч важна у целој збирци докумената.

    ТФ = Учесталост речи у документу / Укупан број речи у том документу

    ДФ = Документ који садржи реч в / Укупан број докумената

    ИДФ = дневник (укупан број докумената / докумената који садрже реч в)

    ИДФ је реципрочан ДФ. Разлог за ово је што је реч чешћа у свим документима, то је мањи њен значај у тренутном документу.

    Коначни ТФ-ИДФ резултат: ТФ-ИДФ = ТФ * ИДФ

    То је начин да сазнате које су речи уобичајене у једном документу и јединствене у свим документима. Ове речи могу бити корисне у проналажењу главне теме документа.

    На пример,

    Доц1 = „Волим машинско учење“

    Доц2 = „Волим вдзвдз“

    Морамо пронаћи ТФ-ИДФ матрицу за наше документе.

    Прво ћемо створити речник јединствених речи.

    Речник = [“I,” “love,” “machine,” “learning,” “Geekflare”]

    Дакле, имамо 5 пет речи. Хајде да пронађемо ТФ и ИД за ове речи.

    ТФ = Учесталост речи у документу / Укупан број речи у том документу

    ТФ:

    • За “И” = ТФ за Доц1: 1/4 = 0,25 и за Доц2: 1/3 ≈ 0,33
    • За „љубав“: ТФ за Доц1: 1/4 = 0,25 и за Доц2: 1/3 ≈ 0,33
    • За „Машину“: ТФ за Доц1: 1/4 = 0,25 и за Доц2: 0/3 ≈ 0
    • За „Учење“: ТФ за Доц1: 1/4 = 0,25 и за Доц2: 0/3 ≈ 0
    • За „вдзвдз“: ТФ за Доц1: 0/4 = 0 и за Доц2: 1/3 ≈ 0,33

    Сада, хајде да израчунамо ИД.

    ИДФ = дневник (укупан број докумената / докумената који садрже реч в)

    ИДФ:

    • За „И“: ИДФ је лог(2/2) = 0
    • За „љубав“: ИДФ је лог(2/2) = 0
    • За „Машину“: ИДФ је лог(2/1) = лог(2) ≈ 0,69
    • За „учење“: ИДФ је лог(2/1) = лог(2) ≈ 0,69
    • За „вдзвдз“: ИДФ је лог(2/1) = лог(2) ≈ 0,69

    Сада, хајде да израчунамо коначни резултат ТФ-ИДФ:

    • За „И“: ТФ-ИДФ за Доц1: 0,25 * 0 = 0 и ТФ-ИДФ за Доц2: 0,33 * 0 = 0
    • За „љубав“: ТФ-ИДФ за Доц1: 0,25 * 0 = 0 и ТФ-ИДФ за Доц2: 0,33 * 0 = 0
    • За „Машину“: ТФ-ИДФ за Доц1: 0,25 * 0,69 ≈ 0,17 и ТФ-ИДФ за Доц2: 0 * 0,69 = 0
    • За „учење“: ТФ-ИДФ за Доц1: 0,25 * 0,69 ≈ 0,17 и ТФ-ИДФ за Доц2: 0 * 0,69 = 0
    • За „вдзвдз“: ТФ-ИДФ за Доц1: 0 * 0,69 = 0 и ТФ-ИДФ за Доц2: 0,33 * 0,69 ≈ 0,23

    ТФ-ИДФ матрица изгледа овако:

            I     love   machine   learning   techblog.co.rs
    Doc1    0.0   0.0    0.17      0.17       0.0
    Doc2    0.0   0.0    0.0       0.0        0.23
    

    Вредности у ТФ-ИДФ матрици вам говоре колико је сваки термин важан у сваком документу. Високе вредности указују на то да је термин важан у одређеном документу, док ниске вредности сугеришу да је термин мање важан или уобичајен у том контексту.

    ТФ-ИДФ се углавном користи у класификацији текста, проналажењу информација за чет-ботове у изградњи и сумирању текста.

    Увези ТфидфВецторизер

    Хајде да увеземо ТфидфВецторизер из склеарн-а

    from sklearn.feature_extraction.text import TfidfVectorizer

    Цреате Вецторизер

    Као што видите, креираћемо наш Тф Идф модел користећи ТфидфВецторизер.

    # Sample text documents
    text = [
        "This is the first document.",
        "This document is the second document.",
        "And this is the third one.",
        "Is this the first document?",
    ]
    
    # Create a TfidfVectorizer 
    cv = TfidfVectorizer()

    Креирајте ТФ-ИДФ матрицу

    Хајде да обучимо наш модел пружањем текста. Након тога ћемо конвертовати репрезентативну матрицу у густи низ.

    # Fit and transform to create the TF-IDF matrix
    X = cv.fit_transform(text)
    # Get the feature names/words
    feature_names = vectorizer.get_feature_names_out()
    
    # Convert the TF-IDF matrix to a dense array for easier manipulation (optional)
    X_dense = X.toarray()

    Одштампајте ТФ-ИДФ матрицу и карактеристике речи

    # Print the TF-IDF matrix and feature words
    print("TF-IDF Matrix:")
    print(X_dense)
    print("\nFeature Names:")
    print(feature_names)
    

    ТФ-ИДФ матрица:

    Феатуре Вордс

    Као што видите, ови цели бројеви са децималним зарезом указују на важност речи у одређеним документима.

    Такође, можете комбиновати речи у групе од 2,3,4 и тако даље користећи н-граме.

    Постоје и други параметри које можемо укључити: мин_дф, мак_феатуре, сублинер_тф, итд.

    До сада смо истраживали основне технике засноване на фреквенцији.

    Али, ТФ-ИДФ не може да обезбеди семантичко значење и контекстуално разумевање текста.

    Хајде да разумемо напредније технике које су промениле свет уграђивања речи и које су боље за семантичко значење и контекстуално разумевање.

    Ворд2Вец

    Ворд2вец је популаран уграђивање речи (тип вектора речи и користан за хватање семантичке и синтаксичке сличности) техника у НЛП-у. Ово су развили Томас Миколов и његов тим у Гоогле-у 2013. Ворд2вец представља речи као непрекидне векторе у вишедимензионалном простору.

    Ворд2вец има за циљ да представи речи на начин који обухвата њихово семантичко значење. Вектори речи које генерише ворд2вец позиционирани су у континуални векторски простор.

    Пример – вектори ‘Мачка’ и ‘Дог’ би били ближи од вектора ‘мачка’ и ‘девојка’.

    Извор: усна.еду

    ворд2вец може користити две архитектуре модела за креирање уграђивања речи.

    ЦБОВ: Непрекидна врећа речи или ЦБОВ покушава да предвиди реч усредњавањем значења речи у близини. Потребно је фиксни број или прозор речи око циљне речи, затим га конвертује у нумерички облик (Уграђивање), затим усредњује све и користи тај просек за предвиђање циљне речи помоћу неуронске мреже.

      Како користити обележиваче на Твиттеру

    Бивша мета предвиђања: ‘Лисица’

    Реченице: ‘Тхе’, ‘куицк’, ‘браон’, ‘јумпс’, ‘овер’, ‘тхе’

    Ворд2Вец

    • ЦБОВ узима прозор фиксне величине (број) речи као што је 2 (2 лево и 2 десно)
    • Претворите у уграђивање речи.
    • ЦБОВ усредсређује уградњу речи.
    • ЦБОВ усредсређује реч која се уграђује у контекстуалне речи.
    • Просечни вектор покушава да предвиди циљну реч користећи неуронску мрежу.

    Сада, хајде да разумемо како се скип-грам разликује од ЦБОВ-а.

    Скип-грам: То је модел уградње речи, али функционише другачије. Уместо предвиђања циљне речи, скип-грам предвиђа речи контекста којима су дате циљне речи.

    Скип-грамс је бољи у хватању семантичких односа између речи.

    Бивши краљ – мушкарци + жене = краљица

    Ако желите да радите са Ворд2Вец-ом, имате два избора: или можете да обучите сопствени модел или да користите унапред обучени модел. Проћи ћемо кроз унапред обучени модел.

    Импорт генсим

    Можете инсталирати генсим користећи пип инсталл:

    pip install gensim

    Токенизујте реченицу користећи ворд_токенизе:

    Прво ћемо претворити реченице у ниже. Након тога ћемо токенизирати наше реченице користећи ворд_токенизе.

    # Import necessary libraries
    from gensim.models import Word2Vec
    from nltk.tokenize import word_tokenize
    
    # Sample sentences
    sentences = [
        "I love thor",
        "Hulk is an important member of Avengers",
        "Ironman helps Spiderman",
        "Spiderman is one of the popular members of Avengers",
    ]
    
    # Tokenize the sentences
    tokenized_sentences = [word_tokenize(sentence.lower()) for sentence in sentences]
    

    Хајде да обучимо наш модел:

    Ми ћемо обучити наш модел пружањем токенизираних реченица. Користимо 5 прозора за овај модел обуке, можете прилагодити према вашим захтевима.

    # Train a Word2Vec model
    model = Word2Vec(sentences=tokenized_sentences, vector_size=100, window=5, min_count=1, sg=0)
    
    # Find similar words
    similar_words = model.wv.most_similar("avengers")
    # Print similar words
    print("Similar words to 'avengers':")
    
    for word, score in similar_words:
        print(f"{word}: {score}")

    Сличне речи као ‘осветници’:

    Ворд2Вец сличност

    Ово су неке од речи које су сличне „осветницима“ заснованим на моделу Ворд2Вец, заједно са њиховим оценама сличности.

    Модел израчунава оцену сличности (углавном косинусна сличност) између вектора речи „осветници” и других речи у његовом речнику. Оцена сличности показује колико су две речи блиско повезане у векторском простору.

    пр –

    Овде реч ‘помаже’ са косинусном сличношћу -0,005911458611011982 са речју ‘осветници’. Негативна вредност сугерише да се могу разликовати једни од других.

    Вредности косинусне сличности се крећу од -1 до 1, где је:

    • 1 показује да су два вектора идентична и да имају позитивну сличност.
    • Вредности близу 1 указују на високу позитивну сличност.
    • Вредности близу 0 указују на то да вектори нису јако повезани.
    • Вредности близу -1 указују на велику различитост.
    • -1 указује да су два вектора потпуно супротстављена и да имају савршену негативну сличност.

    Посетите ово линк ако желите боље разумевање ворд2вец модела и визуелни приказ како они функционишу. То је заиста кул алат за гледање ЦБОВ и скип-грама у акцији.

    Слично Ворд2Вец-у, имамо ГлоВе. ГлоВе може да произведе уградње које захтевају мање меморије у поређењу са Ворд2Вец. Хајде да разумемо више о ГлоВе-у.

    Рукавица

    Глобални вектори за представљање речи (ГлоВе) су техника попут ворд2вец. Користи се за представљање речи као вектора у непрекидном простору. Концепт који стоји иза ГлоВе-а је исти као код Ворд2Вец-а: он производи контекстуалне уградње речи узимајући у обзир супериорне перформансе Ворд2Вец-а.

    Зашто нам треба ГлоВе?

    Ворд2вец је метода заснована на прозорима и користи речи у близини за разумевање речи. То значи да на семантичко значење циљне речи утичу само околне речи у реченицама, што је неефикасна употреба статистике.

    Док ГлоВе бележи и глобалну и локалну статистику која долази са уграђивањем речи.

    Када користити ГлоВе?

    Користите ГлоВе када желите уграђивање речи које обухвата шире семантичке односе и глобалне асоцијације речи.

    ГлоВе је бољи од других модела у задацима препознавања именованих ентитета, аналогији речи и сличности речи.

    Прво, морамо да инсталирамо Генсим:

    pip install gensim

    Корак 1: Инсталираћемо важне библиотеке

    # Import the required libraries
    
    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn.manifold import TSNE
    import gensim.downloader as api  

    Корак 2: Увезите модел рукавица

    import gensim.downloader as api
    glove_model = api.load('glove-wiki-gigaword-300')

    Корак 3: Преузмите векторску репрезентацију речи за реч ‘слатка’

    glove_model["cute"]

    Вектор за реч ‘слатко’

    Ове вредности обухватају значење речи и односе са другим речима. Позитивне вредности указују на позитивне асоцијације на одређене појмове, док негативне вредности указују на негативне асоцијације на друге концепте.

    У ГлоВе моделу, свака димензија у вектору речи представља одређени аспект значења или контекста речи.

    Негативне и позитивне вредности у овим димензијама доприносе томе колико је „слатко“ семантички повезано са другим речима у речнику модела.

    Вредности могу бити различите за различите моделе. Хајде да пронађемо неке сличне речи речи ‘дечак’

    Топ 10 сличних речи за које модел мисли да су најсличније речи ‘дечак’

    # find similar word
    glove_model.most_similar("boy")

    10 најбољих речи сличних речи ‘дечак’

    Као што видите, најсличнија реч ‘дечаку’ је ‘девојка’.

    Сада ћемо покушати да пронађемо колико тачно ће модел добити семантичко значење из наведених речи.

    glove_model.most_similar(positive=['boy', 'queen'], negative=['girl'], topn=1)

    Најрелевантнија реч за ‘краљицу’

    Наш модел је у стању да пронађе савршен однос између речи.

    Дефинишите листу воцаб-а:

    Сада, хајде да покушамо да разумемо семантичко значење или однос између речи користећи заплет. Дефинишите листу речи које желите да визуелизујете.

    # Define the list of words you want to visualize
    vocab = ["boy", "girl", "man", "woman", "king", "queen", "banana", "apple", "mango", "cow", "coconut", "orange", "cat", "dog"]
    

    Направите матрицу за уграђивање:

    Хајде да напишемо код за креирање матрице за уграђивање.

    # Your code for creating the embedding matrix
    EMBEDDING_DIM = glove_model.vectors.shape[1]
    word_index = {word: index for index, word in enumerate(vocab)}
    num_words = len(vocab)
    embedding_matrix = np.zeros((num_words, EMBEDDING_DIM))
    
    for word, i in word_index.items():
        embedding_vector = glove_model[word]
        if embedding_vector is not None:
            embedding_matrix[i] = embedding_vector

    Дефинишите функцију за т-СНЕ визуелизацију:

      Како да поправите да ОнеНоте не чува локалне резервне копије

    Из овог кода ћемо дефинисати функцију за наш дијаграм визуелизације.

    def tsne_plot(embedding_matrix, words):
        tsne_model = TSNE(perplexity=3, n_components=2, init="pca", random_state=42)
        coordinates = tsne_model.fit_transform(embedding_matrix)
    
        x, y = coordinates[:, 0], coordinates[:, 1]
    
        plt.figure(figsize=(14, 8))
        for i, word in enumerate(words):
            plt.scatter(x[i], y[i])
            plt.annotate(word,
                         xy=(x[i], y[i]),
                         xytext=(2, 2),
                         textcoords="offset points",
                         ha="right",
                         va="bottom")
        plt.show()
    

    Да видимо како изгледа наша парцела:

    # Call the tsne_plot function with your embedding matrix and list of words
    tsne_plot(embedding_matrix, vocab)
    

    т-СНЕ парцела

    Дакле, као што видимо, на левој страни наше парцеле постоје речи попут „банана“, „манго“, „наранџа“, „кокос“ и „јабука“. Док су ‘крава’, ‘пас’ и ‘мачка’ слични једни другима јер су животиње.

    Дакле, наш модел такође може пронаћи семантичко значење и односе између речи!

    Само променом речника или креирањем свог модела од нуле, можете експериментисати са различитим речима.

    Ову матрицу за уграђивање можете користити како год желите. Може се применити само на задатке сличности речи или унети у слој за уградњу неуронске мреже.

    ГлоВе тренира на матрици ко-појављивања да би извео семантичко значење. Заснован је на идеји да су заједничко појављивање речи и речи суштински део знања и да је њихова употреба ефикасан начин да се користи статистика за стварање уграђивања речи. Овако ГлоВе постиже додавање „глобалне статистике“ коначном производу.

    А то је ГлоВе; Још један популаран метод за векторизацију је ФастТект. Хајде да разговарамо више о томе.

    ФастТект

    ФастТект је библиотека отвореног кода коју је увео Фацебоок тим за истраживање вештачке интелигенције за класификацију текста и анализу сентимента. ФастТект пружа алате за обуку уграђивања речи, који су густо векторски представљају речи. Ово је корисно за хватање семантичког значења документа. ФастТект подржава класификацију са више ознака и више класа.

    Зашто ФастТект?

    ФастТект је бољи од других модела због своје способности да генерализује непознате речи, које су недостајале другим методама. ФастТект обезбеђује унапред обучене векторе речи за различите језике, који би могли бити корисни у разним задацима где су нам потребна предзнања о речима и њиховом значењу.

    ФастТект против Ворд2Вец

    Како то функционише?

    Као што смо дискутовали, други модели, попут Ворд2Вец и ГлоВе, користе речи за уграђивање речи. Али, градивни блок ФастТект-а су слова уместо речи. Што значи да користе слова за уграђивање речи.

    Коришћење знакова уместо речи има још једну предност. За обуку је потребно мање података. Како реч постаје њен контекст, из текста се може извући више информација.

    Уграђивање речи добијено преко ФастТект-а је комбинација уграђивања нижег нивоа.

    Сада, погледајмо како ФастТект користи информације о подречи.

    Рецимо да имамо реч ‘читање’. За ову реч, н-грами знакова дужине 3-6 би се генерисали на следећи начин:

    • Почетак и крај су означени угаоним заградама.
    • Хеширање се користи јер може постојати велики број н-грама; уместо да учимо уграђивање за сваки различити н-грам, учимо укупно Б уграђивање, где Б означава величину буцкета. Величина канте од 2 милиона коришћена је у оригиналном папиру.
    • Сваки карактерни н-грам, као што је „еади“, пресликава се на цео број између 1 и Б помоћу ове функције хеширања, а тај индекс има одговарајуће уграђивање.
    • Усредњавањем ових конститутивних н-грамских уградњи, онда се добија пуна реч ембеддинга.
    • Чак и ако овај приступ хеширању резултира колизијама, он у великој мери помаже у управљању величином речника.
    • Мрежа која се користи у ФастТекту је слична Ворд2Вец. Као и тамо, можемо да тренирамо ФастТект у два режима – ЦБОВ и скип-грам. Дакле, нема потребе да понављамо тај део овде.

    Можете тренирати свој модел, или можете користити унапред обучени модел. Користићемо унапред обучени модел.

    Прво морате да инсталирате ФастТект.

    pip install fasttext

    Користићемо скуп података који се састоји од конверзацијског текста у вези са неколико дрога, а те текстове морамо класификовати у 3 типа. Као са врстом дроге са којом су повезани.

    Скуп података

    Сада, да бисмо обучили ФастТект модел на било ком скупу података, морамо да припремимо улазне податке у одређеном формату, а то је:

    __лабел__<вредност ознаке><размак><придружена тачка података>

    Урадимо ово и за наш скуп података.

    all_texts = train['text'].tolist()
    all_labels = train['drug type'].tolist()
    prep_datapoints=[]
    
    for i in range(len(all_texts)):
        sample="__label__"+ str(all_labels[i]) + ' '+ all_texts[i]
        prep_datapoints.append(sample)

    преп_датапоинтс

    У овом кораку смо изоставили много предобраде. У супротном, наш чланак ће бити превелик. У проблемима из стварног света, најбоље је извршити претходну обраду како би подаци били погодни за моделирање.

    Сада запишите припремљене тачке података у .ткт датотеку.

    with open('train_fasttext.txt','w') as f:
        for datapoint in prep_datapoints:
            f.write(datapoint)
            f.write('n')
        f.close()
    

    Хајде да обучимо наш модел.

    model = fasttext.train_supervised('train_fasttext.txt')

    Добићемо предвиђања из нашег модела.

    Модел предвиђа ознаку и додељује јој оцену поверења.

    Као и код сваког другог модела, перформансе и овог зависе од разних варијабли, али ако желите да добијете брзу представу о томе која је очекивана тачност, ФастТект би могао бити одлична опција.

    Закључак

    У закључку, методе векторизације текста као што су Баг оф Вордс (БоВ), ТФ-ИДФ, Ворд2Вец, ГлоВе и ФастТект пружају различите могућности за НЛП задатке.

    Док Ворд2Вец хвата семантику речи и прилагодљив је за различите НЛП задатке, БоВ и ТФ-ИДФ су једноставни и погодни за класификацију текста и препоруку.

    За апликације као што је анализа осећања, ГлоВе нуди унапред обучене уградње, а ФастТект се добро сналази у анализи на нивоу подречи, што га чини корисним за структурно богате језике и препознавање ентитета.

    Избор технике зависи од задатка, података и ресурса. Разговараћемо о сложености НЛП-а дубље како ова серија буде напредовала. Срећно учење!

    Затим погледајте најбоље НЛП курсеве за учење обраде природног језика.