Процењивање и лематизација помоћу Питхон НЛТК

Преглед садржаја:

Anonim

Шта је исхрана?

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

Другом речју постоји једна коренска реч, али постоји много варијација истих речи. На пример, основна реч је „јести“, а његове варијације су „јести, јести, јести и слично“. На исти начин, уз помоћ Стемминг-а, можемо пронаћи основну реч било које варијације.

На пример

He was riding.He was taking the ride.

У горње две реченице значење је исто, тј. Јахање у прошлости. Човек лако може да схвати да су оба значења иста. Али за машине су обе реченице различите. Стога је постало тешко претворити га у исти ред података. У случају да не пружимо исти скуп података, машина не успе да предвиди. Стога је неопходно разликовати значење сваке речи како би се скуп података припремио за машинско учење. И овде се коријење користи за категоризацију исте врсте података добијањем њихове коренске речи.

Имплементирајмо ово са програмом Питхон.НЛТК има алгоритам назван „ПортерСтеммер“. Овај алгоритам прихвата листу токенизоване речи и пребацује је у основну реч.

Програм за разумевање матичњака

from nltk.stem import PorterStemmere_words= ["wait", "waiting", "waited", "waits"]ps =PorterStemmer()for w in e_words:rootWord=ps.stem(w)print(rootWord)

Излаз :

waitwaitwaitwait

Објашњење кода:

  • У НЛТк постоји матични модул који се увози. Ако увозите комплетан модул, програм постаје тежак јер садржи хиљаде редова кодова. Дакле, из целог матичног модула смо увезли само „ПортерСтеммер“.
  • Припремили смо лажну листу варијационих података исте речи.
  • Креира се објекат који припада класи нлтк.стем.портер.ПортерСтеммер.
  • Даље, прослеђивали смо га ПортерСтеммеру један по један користећи петљу „фор“. Коначно, добили смо излазну коренску реч сваке речи поменуте на листи.

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

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

Програм:

from nltk.stem import PorterStemmerfrom nltk.tokenize import sent_tokenize, word_tokenizesentence="Hello Guru99, You have to build a very good site and I love visiting your site."words = word_tokenize(sentence)ps = PorterStemmer()for w in words:rootWord=ps.stem(w)print(rootWord)

Излаз:

helloguru99,youhavebuildaverigoodsiteandIlovevisityoursite

Објашњење кода

  • Пакет ПортерСтемер се увози из матичне плоче модула
  • Увозе се пакети за токенизацију реченица као и речи
  • Написана је реченица коју треба означити у следећем кораку.
  • У овом кораку се примењује токенизација речи.
  • Овде се креира објекат за ПортерСтеммер.
  • Понавља се петља и заустављање сваке речи врши се помоћу објекта створеног у линији кода 5

Закључак:

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

Шта је лематизација?

Лематизација је алгоритамски поступак проналажења леме речи у зависности од њиховог значења. Лематизација се обично односи на морфолошку анализу речи која има за циљ уклањање флективних завршетака. Помаже у враћању основног или речничког облика речи, који је познат као лема. Метода лематизације НЛТК заснива се на ВорлдНет-овој уграђеној морф функцији. Претпроцесирање текста укључује и матичну и лематизацију. Многима су та два термина збуњујућа. Неки се према њима понашају исто, али између њих обоје постоји разлика. Из доњег разлога се даје предност лематизацији у односу на прву.

Зашто је лематизација боља од темања?

Алгоритам матичног рада функционише тако што се исече суфикс речи. У ширем смислу сече или почетак или крај речи.

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

Код за разликовање лематизације од матирања

Матични код

import nltkfrom nltk.stem.porter import PorterStemmerporter_stemmer = PorterStemmer()text = "studies studying cries cry"tokenization = nltk.word_tokenize(text)for w in tokenization:print("Stemming for {} is {}".format(w,porter_stemmer.stem(w)))

Излаз:

Stemming for studies is studiStemming for studying is studiStemming for cries is criStemming for cry is cri

Лематизациони код

import nltkfrom nltk.stem import WordNetLemmatizerwordnet_lemmatizer = WordNetLemmatizer()text = "studies studying cries cry"tokenization = nltk.word_tokenize(text)for w in tokenization:print("Lemma for {} is {}".format(w, wordnet_lemmatizer.lemmatize(w)))

Излаз:

Lemma for studies is studyLemma for studying is studyingLemma for cries is cryLemma for cry is cry

Дискусија резултата:

Ако изгледате као основ за студије и студије, излаз је исти (студи), али лематизатор пружа различиту лему за обе лексеме које студирају за студије и за студије. Дакле, када треба да направимо скуп карактеристика за обуку машине, било би сјајно да се даје предност лематизацији.

Случај примене Лемматизер-а:

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

Пример у реалном времену који приказује употребу Ворднет лематизације и ПОС означавања у Питхону

from nltk.corpus import wordnet as wnfrom nltk.stem.wordnet import WordNetLemmatizerfrom nltk import word_tokenize, pos_tagfrom collections import defaultdicttag_map = defaultdict(lambda : wn.NOUN)tag_map['J'] = wn.ADJtag_map['V'] = wn.VERBtag_map['R'] = wn.ADVtext = "guru99 is a totally new kind of learning experience."tokens = word_tokenize(text)lemma_function = WordNetLemmatizer()for token, tag in pos_tag(tokens):lemma = lemma_function.lemmatize(token, tag_map[tag[0]])print(token, "=>", lemma)

Објашњење кода

  • Прво се увози ворднет читача корпуса.
  • ВордНетЛемматизер се увози из ворднета
  • Ознаке речи, као и делови говора, увозе се из нлтк-а
  • Подразумевани речник се увози из колекција
  • Креиран је речник где су пос_таг (прво слово) кључне вредности чије су вредности мапиране са вредношћу из речника ворднет. Узели смо једино прво слово јер ћемо га користити касније у петљи.
  • Текст је написан и токенизиран.
  • Ствара се функција лем__објекта која ће се користити унутар петље
  • Лооп се покреће и лемматизе ће узети два аргумента, један је токен, а други је мапирање пос_таг са ворднет вредношћу.

Излаз:

guru99 => guru99is => betotally => totallynew => newkind => kindof => oflearning => learnexperience => experience. => .

Лематизација је у блиској вези са ворднет речником, па је неопходно проучити ову тему, па ћемо је задржати као следећу тему