Шта је уграђивање речи?
Уграђивање речи је врста представљања речи која омогућава разумевање речи сличног значења алгоритмима машинског учења. Технички гледано, то је мапирање речи у векторе реалних бројева помоћу неуронске мреже, вероватноћног модела или редукције димензија на матрици заједничке појаве речи. То је моделирање језика и техника учења карактеристика. Уграђивање речи је начин за извођење мапирања помоћу неуронске мреже. Доступни су различити модели уградње речи, као што су ворд2вец (Гоогле), Глове (Станфорд) и најбржи (Фацебоок).
Уграђивање речи такође се назива дистрибуирани семантички модел или дистрибуирани представљени или семантички векторски простор или векторски просторни модел. Читајући ова имена, наилазите на реч семантичка што значи категоризацију сличних речи заједно. На пример, воће попут јабуке, манга, банане треба ставити близу, док ће књиге бити далеко од ових речи. У ширем смислу, уграђивање речи створиће вектор плодова који ће бити постављен далеко од векторског представљања књига.
У овом упутству ћете научити
- Шта је уграђивање речи?
- Где се користи уграђивање речи?
- Шта је ворд2вец?
- Која ворд2вец ради?
- Зашто Ворд2вец?
- Ворд2вец Архитектура
- Непрекидна торба речи.
- Скип-Грам модел
- Однос између Ворд2вец и НЛТК
- Активаторе и Ворд2Вец
- Шта је Генсим?
- Код Имплементација ворд2вец користећи Генсим
Где се користи уграђивање речи?
Уграђивање речи помаже у генерисању карактеристика, груписању докумената, класификацији текста и задацима обраде природног језика. Дозволите нам да их наведемо и разговарамо о свакој од ових апликација.
- Израчунавање сличних речи: Уграђивање речи се користи за сугерисање речи сличних речи која је подвргнута моделу предвиђања. Уз то такође предлаже различите речи, као и најчешће речи.
- Створите групу сродних речи: Користи се за семантичко груписање које ће групирати ствари сличних карактеристика заједно и удаљене.
- Карактеристика за класификацију текста: Текст се пресликава у низове вектора који се доводе до модела за обуку, као и предвиђања. Модели класификатора засновани на тексту не могу се обучавати на низу, па ће ово претворити текст у машински обрадиву форму. Даље његове карактеристике изградње семантичке помоћи у класификацији заснованој на тексту.
- Груписање докумената је још једна апликација у којој се уграђивање речи широко користи
- Обрада природног језика: Постоји много апликација у којима је уграђивање речи корисно и побеђује над фазама издвајања карактеристика, као што су делови означавања говора, сентиментална анализа и синтаксичка анализа.
Сада смо стекли неко знање о уграђивању речи. Такође се баца мало светла на различите моделе како би се применило уграђивање речи. Цео овај водич је усмерен на један од модела (ворд2вец).
Шта је ворд2вец?
Ворд2вец је техника / модел за производњу уграђивања речи ради бољег представљања речи. Обухвата велики број прецизних синтаксичких и семантичких односа речи. То је плитка двослојна неуронска мрежа. Пре него што наставите даље, погледајте разлику између плитке и дубоке неуронске мреже:
Плитка неуронска мрежа састоји се од јединог скривеног слоја између улаза и излаза, док дубока неуронска мрежа садржи више скривених слојева између улаза и излаза. Улаз се подвргава чворовима док скривени слој, као и излазни слој, садржи неуроне.
Слика: Плитко наспрам дубоког учења
ворд2вец је двослојна мрежа у коју се улази један скривени слој и излази.
Ворд2вец је развила група истраживача на челу са Томасом Миколовом у Гоогле-у. Ворд2вец је бољи и ефикаснији од латентног модела семантичке анализе.
Која ворд2вец ради?
Ворд2вец представља речи у представљању векторског простора. Речи су представљене у облику вектора, а постављање се врши на такав начин да се речи сличног значења појављују заједно, а различите речи се налазе далеко. Ово се такође назива семантичким односом. Неуронске мреже не разумију текст, већ разумију само бројеве. Уграђивање речи пружа начин за претварање текста у нумерички вектор.
Ворд2вец реконструише језички контекст речи. Пре него што кренемо даље, схватимо шта је језички контекст? У општем животном сценарију када говоримо или пишемо да бисмо комуницирали, други људи покушавају да схвате шта је циљ реченице. На пример, „Која је температура Индије“, овде је контекст корисник који жели да зна „температура Индије“ што је контекст. Укратко, главни циљ реченице је контекст. Реч или реченица које окружују говорни или писани језик (откривање) помажу у одређивању значења контекста. Ворд2вец учи векторску репрезентацију речи кроз контекст.
Зашто Ворд2вец?
Пре уграђивања речи
Важно је знати који се приступ користи пре уграђивања речи и које су његове демерите, а затим ћемо прећи на тему како се демерити превазилазе уграђивањем речи помоћу ворд2вец приступа. На крају ћемо померити како ворд2вец ради јер је важно разумети да ради.
Приступ латентној семантичкој анализи
Ово је приступ који се користио пре уградње речи. Користио је концепт Торбе речи где су речи представљене у облику кодираних вектора. То је оскудни векторски приказ где је димензија једнака величини речника. Ако се реч појави у речнику, она се рачуна, иначе не. Да бисте разумели више, погледајте доњи програм.
from sklearn.feature_extraction.text import CountVectorizervectorizer=CountVectorizer()data_corpus=["guru99 is the best sitefor online tutorials. I love to visit guru99."]vocabulary=vectorizer.fit(data_corpus)X= vectorizer.transform(data_corpus)print(X.toarray())print(vocabulary.get_feature_names())
Излаз:
[[1 2 1 1 1 1 1 1 1 1]]
[u'best', u'guru99', u'is', u'love', u'online', u'sitefor', u'the', u'to', u'tutorials', u'visit']
Објашњење кода
- ЦоунтВецторизер је модул који се користи за чување речника на основу уклапања речи у њега. Ово се увози из склеарна
- Направите објекат помоћу класе ЦоунтВецторизер.
- Запишите податке на листу коју треба уградити у ЦоунтВецторизер.
- Подаци се уклапају у објекат креиран из класе ЦоунтВецторизер.
- Примените приступ врећама речи за бројање речи у подацима користећи речник. Ако реч или знак нису доступни у речнику, тада је такав положај индекса постављен на нулу.
- Променљива у линији 5 која је к претвара се у низ (метода доступна за к). Ово ће пружити пребројавање сваког жетона у реченици или списку наведеном у 3. реду.
- Ово ће приказати карактеристике које су део речника када је уклопљен помоћу података у реду 4.
У приступу латентне семантике, ред представља јединствене речи, док колона представља број времена када се та реч појављује у документу. То је представљање речи у облику матрице документа. Термин-фреквенција инверзне фреквенције документа (ТФИДФ) користи се за бројање учесталости речи у документу, што је фреквенција термина у документу / фреквенција израза у целом корпусу.
Недостатак методе вреће речи
- Занемарује редослед речи, на пример, ово је лоше = лоше је ово.
- Занемарује контекст речи. Претпоставимо ако напишем реченицу "Волео је књиге. Образовање се најбоље може наћи у књигама". Створила би два вектора, један за „Волео је књиге“ и други за „Образовање је најбоље наћи у књигама“. Обоје би их третирало правокутно што их чини независним, али у стварности су међусобно повезани
Да би се превазишла ова ограничења развијено је уграђивање речи, а ворд2вец је приступ за њихову примену.
Како Ворд2вец ради?
Ворд2вец учи реч предвиђањем околног контекста. На пример, узмимо реч „Он воли фудбал“.
Желимо да израчунамо реч2вец за реч: воли.
Претпоставимо
loves = Vin. P(Vout / Vin) is calculatedwhere,Vin is the input word.P is the probability of likelihood.Vout is the output word.
Реч воли кретање преко сваке речи у корпусу. Кодиран је синтаксички, као и семантички однос између речи. Ово помаже у проналажењу сличних и аналогних речи.
Израчунавају се све случајне одлике речи љубав . Ове функције се мењају или ажурирају у вези са суседним или контекстуалним речима уз помоћ метода повратног ширења.
Други начин учења је да ако су контекст две речи слични или две речи имају слична обележја, онда су такве речи повезане.
Ворд2вец Архитектура
Ворд2вец користи две архитектуре
- Непрекидна врећа речи (ЦБОВ)
- прескочите грам
Пре него што кренемо даље, разговарајмо зашто су ове архитектуре или модели важни са становишта представљања речи. Представљање речи у учењу у основи није под надзором, али за обуку модела потребни су циљеви / ознаке. Скип-грам и ЦБОВ претварају ненадгледану представу у надгледану форму за обуку модела.
У ЦБОВ, тренутна реч се предвиђа помоћу прозора околних прозора у окружењу. На пример, ако в и-1 , в и-2 , в и + 1 , в и + 2 добију речи или контекст, овај модел ће пружити в и
Скип-Грам изводи супротно од ЦБОВ, што подразумева да предвиђа дати низ или контекст из речи. Можете обрнути пример да бисте га разумели. Ако је дато в и , ово ће предвидети контекст или в и-1 , в и-2 , в и + 1 , в и + 2.
Ворд2вец пружа могућност избора између ЦБОВ (континуирана врећа речи) и обраног грама. Такви параметри се обезбеђују током тренинга модела. Може се имати могућност коришћења негативног узорковања или хијерархијског софтмак слоја.
Непрекидна торба речи.
Нацртајмо једноставан дијаграм да бисмо разумели непрекидну врећу архитектуре речи.
Слика Континуирана врећа архитектуре речи
Израчунајмо једначине математички. Претпоставимо да је В величина речника, а Н величина скривеног слоја. Улаз је дефинисан као {к и-1 , к и-2, к и + 1, к и + 2 }. Матрицу тежина добијамо множењем В * Н. Друга матрица се добија множењем улазног вектора са матрицом тежине. То се такође може разумети следећом једначином.
х = ки т В
где су ки т ∧ В улазни вектор и матрица тежине,
Да бисте израчунали подударање између контекста и следеће речи, погледајте доњу једначину
у = предвиђена презентација * х
где се предвиђена презентација добија моделом∧х у горњој једначини.
Скип-Грам модел
Скип-Грам приступ се користи за предвиђање реченице која има улазну реч. Да бисмо га боље разумели, нацртајмо дијаграм.
Слика Скип-Грам Модел
То се може третирати као наличје континуираног врећице модела речи где је улаз реч и модел пружа контекст или низ. Такође можемо закључити да се циљ доводи на улазни и излазни слој реплицира више пута како би се прилагодило изабраном броју контекстуалних речи. Вектор грешака из свих излазних слојева сумиран је за подешавање тежине методом повратног ширења.
Који модел одабрати?
ЦБОВ је неколико пута бржи од прескакања грама и пружа бољу фреквенцију за честе речи, док за прескакање грама треба мала количина података о обуци и представља чак и ретке речи или фразе.
Однос између Ворд2вец и НЛТК
НЛТК је приручник за природни језик. Користи се за предобраду текста. Човек може да ради различите операције, као што су означавање делова говора, лематизација, резање, заустављање уклањања речи, уклањање ретких речи или најмање коришћених речи. Помаже у чишћењу текста, као и у припреми карактеристика из ефективних речи. На други начин, ворд2вец се користи за семантичко (уско повезане ставке заједно) и синтаксичко (секвенцијално) подударање. Користећи ворд2вец, могу се наћи сличне речи, различите речи, димензионална редукција и многе друге. Још једна важна карактеристика ворд2вец-а је претварање вишедимензионалне репрезентације текста у векторе ниже димензије.
Где користити НЛТК и Ворд2вец?
Ако неко мора да изврши неке задатке опште намене, као што је горе поменуто, попут токенизације, означавање и рашчлањивање ПОС-а, мора се ићи на коришћење НЛТК-а, док за предвиђање речи према неком контексту, моделовању теме или сличности докумената мора бити коришћен Ворд2вец.
Однос НЛТК и Ворд2вец уз помоћ кода
НЛТК и Ворд2вец могу се користити заједно за проналажење сличних речи или синтаксичко подударање. НЛТК сет алата може се користити за учитавање многих пакета који долазе са НЛТК, а модел се може креирати помоћу ворд2вец. Затим се може тестирати на речима у стварном времену. Да видимо комбинацију оба у следећем коду. Пре даље обраде, погледајте корпусе које нуди НЛТК. Можете преузети помоћу команде
nltk(nltk.download('all'))
Слика Цорпора преузета помоћу НЛТК
Молимо погледајте снимак екрана за код.
import nltkimport gensimfrom nltk.corpus import abcmodel= gensim.models.Word2Vec(abc.sents())X= list(model.wv.vocab)data=model.most_similar('science')print(data)
Излаз:
[('law', 0.9415997266769409), ('practice', 0.9276568293571472), ('discussion', 0.9259148836135864), ('agriculture', 0.9257254004478455), ('media', 0.9232194423675537), ('policy', 0.922248125076294), ('general', 0.9166069030761719), ('undertaking', 0.916458249092102), ('tight', 0.9129181504249573), ('board', 0.9107444286346436)]
Објашњење кода
- увезена је библиотека нлтк, одакле можете преузети абц корпус који ћемо користити у следећем кораку.
- Генсим се увози. Ако Генсим није инсталиран, инсталирајте га помоћу наредбе „пип3 инсталл генсим“. Погледајте доњи снимак екрана.
Слика Инсталирање Генсима помоћу ПИП-а
- увезите корпус абц који је преузет помоћу нлтк.довнлоад ('абц').
- Проследите датотеке моделу ворд2вец који се увози користећи Генсим као реченице.
- Речник се чува у облику променљиве.
- Модел је тестиран на узорку речи наука јер су ове датотеке повезане са науком.
- Овде модел предвиђа сличну реч „наука“.
Активаторе и Ворд2Вец
Функција активације неурона дефинише излаз тог неурона с обзиром на скуп улаза. Биолошки инспирисан активношћу у нашем мозгу где се различити неурони активирају користећи различите стимулусе. Да разумемо функцију активирања кроз следећи дијаграм.
Слика Разумевање функције активације
Овде је к1, к2,… к4 чвор неуронске мреже.
в1, в2, в3 је тежина чвора,
∑ је збир свих тежина и вредности чвора који раде као функција активирања.
Зашто функција активирања?
Ако се не користи функција активирања, излаз би био линеаран, али функционалност линеарне функције је ограничена. Да би се постигла сложена функционалност као што су откривање објеката, класификација слика, куцање текста помоћу гласа и многи други нелинеарни излази, што се постиже помоћу функције активирања.
Како се израчунава слој активације у уграђивању речи (ворд2вец)
Софтмак слој (нормализована експоненцијална функција) је функција излазног слоја која активира или активира сваки чвор. Следећи приступ који се користи је Хијерархијски софтмак, где се сложеност израчунава помоћу О (лог 2 В), при чему је софтмак О (В) где је В величина речника. Разлика између њих је смањење сложености хијерархијског софтмак слоја. Да бисте разумели његову (хијерархијску софтмак) функционалност, погледајте доњи пример:
Слика Хијерархијско стабло налик софтмак дрвету
Претпоставимо да желимо да израчунамо вероватноћу посматрања речи љубав с обзиром на одређени контекст. Проток од корена до лисног чвора биће први прелазак на чвор 2, а затим на чвор 5. Дакле, ако смо имали речник величине 8, потребна су само три прорачуна. Дакле, омогућава разлагање, израчунавање вероватноће једне речи ( љубав ).
Које су друге опције доступне осим Хијерархијског Софтмака?
Доступне опције за уградњу речи у општем смислу су Диференцирани Софтмак, ЦНН-Софтмак, Узорковање важности, Узорковање прилагодљиве важности, Процене контрастне буке, Негативно узорковање, Саморегулација и ретка нормализација.
Говорећи конкретно о Ворд2вецу, на располагању имамо негативно узорковање.
Негативно узорковање је начин узорковања података о обуци. То је помало попут стохастичког градијентног спуштања, али са извесном разликом. Негативно узорковање тражи само негативне примере тренинга. Заснован је на процени контрастне буке и насумично узоркује речи, а не у контексту. То је брза метода тренинга и случајно бира контекст. Ако се предвиђена реч појави у насумично одабраном контексту, оба вектора су близу.
Какав закључак се може извести?
Активатори испаљују неуроне баш као што се наши неурони отпуштају помоћу спољних стимулуса. Софтмак слој је једна од функција излазног слоја која отпушта неуроне у случају уграђивања речи. У ворд2вец имамо опције као што су хијерархијски софтмак и негативно узорковање. Коришћењем активатора може се претворити линеарна функција у нелинеарну функцију и помоћу ње се може применити сложени алгоритам машинског учења.
Шта је Генсим?
Генсим је сет алата за моделирање тема који је имплементиран у питхон. Моделирање теме је откривање скривене структуре у телу текста. Ворд2вец се увози из Генсим алата. Имајте на уму да Генсим не пружа само имплементацију ворд2вец већ и Доц2вец и ФастТект, али ово упутство је све о ворд2вец-у, па ћемо се задржати на тренутној теми.
Примена ворд2вец-а помоћу Генсима
До сада смо разговарали шта је ворд2вец, његове различите архитектуре, зашто постоји прелазак са вреће речи на ворд2вец, однос између ворд2вец и НЛТК са живим кодом и функцијама активирања. У овом одељку ће се применити ворд2вец користећи Генсим
Корак 1) Прикупљање података
Први корак ка примени било ког модела машинског учења или примени обраде природног језика је прикупљање података
Молимо вас да поштујете податке како бисте направили интелигентни цхатбот.
[{"tag": "welcome","patterns": ["Hi", "How are you", "Is any one to talk?", "Hello", "hi are you available"],"responses": ["Hello, thanks for contacting us", "Good to see you here"," Hi there, how may I assist you?"]},{"tag": "goodbye","patterns": ["Bye", "See you later", "Goodbye", "I will come back soon"],"responses": ["See you later, thanks for visiting", "have a great day ahead", "Wish you Come back again soon."]},{"tag": "thankful","patterns": ["Thanks for helping me", "Thank your guidance", "That's helpful and kind from you"],"responses": ["Happy to help!", "Any time!", "My pleasure", "It is my duty to help you"]},{"tag": "hoursopening","patterns": ["What hours are you open?", "Tell your opening time?", "When are you open?", "Just your timing please"],"responses": ["We're open every day 8am-7pm", "Our office hours are 8am-7pm every day", "We open office at 8 am and close at 7 pm"]},{"tag": "payments","patterns": ["Can I pay using credit card?", " Can I pay using Mastercard?", " Can I pay using cash only?" ],"responses": ["We accept VISA, Mastercard and credit card", "We accept credit card, debit cards and cash. Please don’t worry"]}]
Ево шта смо схватили из података
- Ови подаци садрже три ствари, ознаку, образац и одговоре. Ознака је намера (шта је тема дискусије).
- Подаци су у ЈСОН формату.
- Узорак је питање које ће корисници поставити боту
- Респонсес је одговор који ће цхатбот пружити на одговарајуће питање / образац.
Корак 2) Предобрада података.
Веома је важно обрадити сирове податке. Ако се очишћени подаци допремају у машину, тада ће модел реаговати тачније и ефикасније ће научити податке.
Овај корак укључује уклањање зауставних речи, коријена, непотребних речи итд. Пре него што наставите, важно је учитати податке и претворити их у оквир података. Молимо погледајте доњи код за такве
import jsonjson_file =’intents.json'with open('intents.json','r') as f:data = json.load(f)
Објашњење КОДА.
- Како су подаци у облику јсон формата, стога се јсон увози
- Датотека се чува у променљивој
- Датотека је отворена и учитана у променљиву података
Сада се подаци увозе и време је да се подаци претворе у оквир података. Погледајте следећи код да бисте видели следећи корак
import pandas as pddf = pd.DataFrame(data)df['patterns'] = df['patterns'].apply(', '.join)
Објашњење КОДА
1. Подаци се претварају у оквир података помоћу панди које су увезене горе.
2. Претвориће листу у обрасцима колона у низ.
from nltk.corpus import stopwordsfrom textblob import Wordstop = stopwords.words('english')df['patterns'] = df['patterns'].apply(lambda x:' '.join(x.lower() for x in x.split()))df['patterns't']= df['patterns''].apply(lambda x: ' '.join(x for x in x.split() if x not in string.punctuation)df['patterns']= df['patterns'].str.replace('[^\w\s]','')df['patterns']= df['patterns'].apply(lambda x: ' '.join(x for x in x.split() if not x.isdigit()))df['patterns'] = df['patterns'].apply(lambda x:' '.join(x for x in x.split() if not x in stop))df['patterns'] = df['patterns'].apply(lambda x: " ".join([Word(word).lemmatize() for word in x.split()]))
Објашњење кода
1. Енглеске зауставне речи се увозе помоћу модула зауставне речи из нлтк алата
2. Све речи у тексту се конвертују у мала слова помоћу функције стања и ламбда функције. Ламбда функција је анонимна функција.
3. Сви редови текста у оквиру података проверавају се на знакове интерпункције и они се филтрирају.
4. Знакови попут бројева или тачака уклањају се помоћу регуларног израза.
5. Цифре се уклањају из текста.
6. У овој фази уклањају се зауставне речи.
7. Речи се сада филтрирају, а различити облици исте речи уклањају се помоћу лематизације. Овим смо завршили предобраду података.
Излаз:
, patterns, responses, tag0,hi one talk hello hi available,"['Hello, thanks for contacting us', 'Good to see you here', ' Hi there, how may I assist you?']",welcome1,bye see later goodbye come back soon,"['See you later, thanks for visiting', 'have a great day ahead', 'Wish you Come back again soon.']",goodbye2,thanks helping thank guidance thats helpful kind,"['Happy to help!', 'Any time!', 'My pleasure', 'It is my duty to help you']",thankful3,hour open tell opening time open timing please,"[""We're open every day 8am-7pm"", 'Our office hours are 8am-7pm every day', 'We open office at 8 am and close at 7 pm']",hoursopening4,pay using credit card pay using mastercard pay using cash,"['We accept VISA, Mastercard and credit card', 'We accept credit card, debit cards and cash. Please don’t worry']",payments
Корак 3) Изградња неуронске мреже помоћу ворд2вец
Сада је време за изградњу модела помоћу Генсим модула ворд2вец. Морамо да увозимо ворд2вец из Генсима. Урадимо то, а затим ћемо направити и у завршној фази ћемо проверити модел на подацима у реалном времену.
from gensim.models import Word2Vec
Сада можемо успешно да направимо модел користећи Ворд2Вец. Погледајте следећи ред кода да бисте сазнали како да креирате модел помоћу Ворд2Вец. Текст се моделу даје у облику листе, тако да ћемо текст из оквира података претворити у списак помоћу доњег кода
Bigger_list=[]for i in df['patterns']li = list(i.split(""))Bigger_list.append(li)Model= Word2Vec(Bigger_list,min_count=1,size=300,workers=4)
Објашњења кодекса
1. Направио је већи_лист где је додата унутрашња листа. Ово је формат који се преноси на модел Ворд2Вец.
2. Лооп је имплементиран и сваки унос колоне образаца оквира података се понавља.
3. Сваки елемент узорака колона се дели и чува у унутрашњој листи ли
4. Унутрашња листа је додата спољној листи.
5. Ова листа је дата моделу Ворд2Вец. Хајде да разумемо неке од параметара који су овде дати
Мин_цоунт: Занемарит ће све ријечи чија је укупна фреквенција нижа од ове.
Величина: Говори о димензионалности вектора речи.
Радници: Ово су нити за обуку модела
Доступне су и друге опције, а неке важне су објашњене у наставку
Прозор: Максимална удаљеност између тренутне и предвиђене речи у реченици.
Сг: То је алгоритам за обуку и 1 за прескакање грама и 0 за континуирану врећу речи. О њима смо детаљно разговарали горе.
Хс: Ако је ово 1, тада користимо хијерархијски софтмак за тренинг, а ако је 0, користи се негативно узорковање.
Алфа: почетна стопа учења
Прикажимо доњи коначни код
#list of libraries used by the codeimport stringfrom gensim.models import Word2Vecimport loggingfrom nltk.corpus import stopwordsfrom textblob import Wordimport jsonimport pandas as pd#data in json formatjson_file = 'intents.json'with open('intents.json','r') as f:data = json.load(f)#displaying the list of stopwordsstop = stopwords.words('english')#dataframedf = pd.DataFrame(data)df['patterns'] = df['patterns'].apply(', '.join)# print(df['patterns'])#print(df['patterns'])#cleaning the data using the NLP approachprint(df)df['patterns'] = df['patterns'].apply(lambda x:' '.join(x.lower() for x in x.split()))df['patterns']= df['patterns'].apply(lambda x: ' '.join(x for x in x.split() if x not in string.punctuation))df['patterns']= df['patterns'].str.replace('[^\w\s]','')df['patterns']= df['patterns'].apply(lambda x: ' '.join(x for x in x.split() if not x.isdigit()))df['patterns'] = df['patterns'].apply(lambda x:' '.join(x for x in x.split() if not x in stop))df['patterns'] = df['patterns'].apply(lambda x: " ".join([Word(word).lemmatize() for word in x.split()]))#taking the outer listbigger_list=[]for i in df['patterns']:li = list(i.split(" "))bigger_list.append(li)#structure of data to be taken by the model.word2vecprint("Data format for the overall list:",bigger_list)#custom data is fed to machine for further processingmodel = Word2Vec(bigger_list, min_count=1,size=300,workers=4)#print(model)
Корак 4) Уштеда модела
Модел се може сачувати у облику канте и модела. Бин је бинарни формат. Молимо погледајте доње редове да бисте сачували модел
model.save("word2vec.model")model.save("model.bin")
Објашњење горњег кода
1. Модел је сачуван у облику .модел датотеке.
2. модел је сачуван у облику .бин датотеке
Овај модел ћемо користити за тестирање у стварном времену, попут Сличних речи, Различитих речи и Најчешћих речи.
Корак 5) Учитавање модела и извођење тестирања у реалном времену
Модел се учитава помоћу доњег кода
model = Word2Vec.load('model.bin')
Ако желите да одштампате речник из њега, то се врши помоћу наредбе испод
Погледајте резултат
['see', 'thank', 'back', 'thanks', 'soon', 'open', 'mastercard', 'card', 'time', 'pay', 'talk', 'cash', 'one', 'please', 'goodbye', 'thats', 'helpful', 'hour', 'credit', 'hi', 'later', 'guidance', 'opening', 'timing', 'hello', 'helping', 'bye', 'tell', 'come', 'using', 'kind', 'available']
Корак 6) Провера најсличнијих речи
Применимо ствари практично
similar_words = model.most_similar('thanks')print(similar_words)
Погледајте резултат
[('kind', 0.16104359924793243), ('using', 0.1352398842573166), ('come', 0.11500970274209976), ('later', 0.09989878535270691), ('helping', 0.04855936020612717), ('credit', 0.04659383371472359), ('pay', 0.0329081267118454), ('thank', 0.02484947443008423), ('hour', 0.0202352125197649), ('opening', 0.018177658319473267)]
Корак 7) Не подудара се са речју из испоручених речи
dissimlar_words = model.doesnt_match('See you later, thanks for visiting'.split())print(dissimlar_words)
Навели смо речи „Видимо се касније, хвала на посети“. Ово ће исписати најразличитије речи из ових речи. Покренимо овај код и пронађимо резултат
Резултат након извршавања горњег кода.
Thanks
Корак 8) Проналажење сличности између две речи
Ово ће рећи резултат у вероватноћи сличности између две речи. Молимо погледајте доњи код како извршити овај одељак.
similarity_two_words = model.similarity('please','see')print("Please provide the similarity between these two words:")print(similarity_two_words)
Резултат горњег кода је као испод
0.13706
Сличне речи можете даље пронаћи извршавањем доњег кода
similar = model.similar_by_word('kind')print(similar)
Излаз горњег кода
[('credit', 0.11764447391033173), ('cash', 0.11440904438495636), ('one', 0.11151769757270813), ('hour', 0.0944807156920433), ('using', 0.0705675333738327), ('thats', 0.05206916481256485), ('later', 0.04502468928694725), ('bye', 0.03960943967103958), ('back', 0.03837274760007858), ('thank', 0.0380823090672493)]
Закључак
- Уграђивање речи је врста представљања речи која омогућава разумевање речи сличног значења алгоритмима машинског учења
- Уграђивање речи користи се за израчунавање сличних речи, стварање групе сродних речи, карактеристика за класификацију текста, груписање докумената, обрада природног језика
- Ворд2вец је плитки двослојни модел неуронске мреже за производњу уграђивања речи ради бољег представљања речи
- Ворд2вец представља речи у представљању векторског простора. Речи су представљене у облику вектора, а постављање се врши на такав начин да се речи сличног значења појављују заједно, а различите речи се налазе далеко
- Ворд2вец је користио 2 архитектуре Цонтинуоус Баг оф вордс (ЦБОВ) и прескочио грам
- ЦБОВ је неколико пута бржи од прескакања грама и пружа бољу фреквенцију за честе речи, док за прескакање грама треба мала количина података о обуци и представља чак и ретке речи или фразе.
- НЛТК и ворд2вец могу се користити заједно и стварају моћне апликације
- Функција активације неурона дефинише излаз тог неурона с обзиром на скуп улаза. У ворд2вец. Софтмак слој (нормализована експоненцијална функција) је функција излазног слоја која активира или активира сваки чвор. Ворд2вец такође има негативно узорковање
- Генсим је сет алата за моделирање тема који је имплементиран у питхон