logo

Nimetty entiteetin tunnistus

Nimetyn kokonaisuuden tunnistus (NER) on tekniikka sisällä luonnollisen kielen käsittely (NLP) joka keskittyy kokonaisuuksien tunnistamiseen ja luokitteluun. NER:n tarkoitus on poimia automaattisesti jäsenneltyä tietoa jäsentämättömästä tekstistä, jolloin koneet voivat ymmärtää ja luokitella kokonaisuuksia mielekkäällä tavalla erilaisiin sovelluksiin, kuten tekstin yhteenvetoon, tietokaavioiden rakentamiseen, kysymyksiin vastaamiseen ja tietokaavion rakentamiseen. Artikkeli tutkii NER-mallin perusteet, menetelmät ja toteutus.

Mikä on nimettyjen entiteettien tunnistus (NER)?

Nimientiteetin tunnistus (NER) kutsutaan myös nimellä kokonaisuuden tunniste , kokonaisuus paloiteltuna, ja kokonaisuuden purkaminen . NER on tiedon poiminnan komponentti, jonka tarkoituksena on tunnistaa ja luokitella nimetyt entiteetit jäsentämättömässä tekstissä. NER sisältää avaintietojen tunnistamisen tekstissä ja luokittelun ennalta määritettyihin luokkiin. Entiteetti on asia, josta johdonmukaisesti puhutaan tai johon tekstissä viitataan, kuten henkilöiden nimet, organisaatiot, sijainnit, aikailmaisut, määrät, prosenttiosuudet ja muut ennalta määritellyt kategoriat.

NER-järjestelmä fin sovelluksia eri aloilla, mukaan lukien kysymyksiin vastaaminen, tiedonhaku ja konekäännös. NER:llä on tärkeä rooli muiden tarkkuuden parantamisessa NLP tehtävät, kuten puheosan merkitseminen ja jäsentäminen. Pohjimmiltaan NLP on vain kaksivaiheinen prosessi, alla on kaksi vaihetta, jotka ovat mukana:



  • Entiteettien tunnistaminen tekstistä
  • Luokittele ne eri luokkiin

Epäselvyyttä NER:ssä

  • Henkilölle luokan määritelmä on intuitiivisesti melko selkeä, mutta tietokoneiden luokittelussa on jonkin verran epäselvyyttä. Katsotaanpa joitain epäselviä esimerkkejä:
    • Englanti (Organisaatio) voitti 2019 World Cupin vs. Vuoden 2019 MM-kisat tapahtuivat Englannissa (sijainti).
    • Washington (sijainti) on Yhdysvaltain pääkaupunki vs. Yhdysvaltain ensimmäinen presidentti oli Washington (henkilö).

Kuinka nimettyjen entiteettien tunnistus (NER) toimii?

Nimettyjen entiteettien tunnistamisen toimintaa käsitellään alla:

  • NER-järjestelmä analysoi koko syötetekstin tunnistaakseen ja paikantaakseen nimetyt entiteetit.
  • Järjestelmä tunnistaa sitten lauseen rajat isojen kirjainten sääntöjen perusteella. Se tunnistaa lauseen lopun, kun sana alkaa isolla kirjaimella, olettaen, että se voi olla uuden lauseen alku. Lauserajojen tunteminen auttaa tekstin entiteettien kontekstualisoinnissa, jolloin malli ymmärtää suhteita ja merkityksiä.
  • NER voidaan kouluttaa luokittelemaan kokonaisia ​​asiakirjoja eri tyyppeihin, kuten laskut, kuitit tai passit. Asiakirjojen luokittelu lisää NER:n monipuolisuutta, jolloin se voi mukauttaa entiteettitunnistustaan ​​eri asiakirjatyyppien erityisominaisuuksien ja kontekstin perusteella.
  • NER käyttää koneoppimisalgoritmeja, mukaan lukien valvottua oppimista, analysoidakseen merkittyjä tietojoukkoja. Nämä tietojoukot sisältävät esimerkkejä annotoiduista entiteeteista, jotka ohjaavat mallia samanlaisten entiteettien tunnistamisessa uudessa, näkymättömässä datassa.
  • Useiden koulutusiteraatioiden avulla malli parantaa ymmärrystään kontekstuaalisista ominaisuuksista, syntaktisista rakenteista ja kokonaisuuksista, mikä parantaa jatkuvasti tarkkuuttaan ajan myötä.
  • Mallin kyky mukautua uuteen tietoon mahdollistaa sen, että se pystyy käsittelemään vaihteluita kielessä, kontekstissa ja entiteettityypeissä, mikä tekee siitä kestävämmän ja tehokkaamman.

Nimetyn kokonaisuuden tunnistus (NER) menetelmät

Sanastopohjainen menetelmä

NER käyttää sanakirjaa, jossa on luettelo sanoja tai termejä. Prosessi sisältää sen tarkistamisen, onko jokin näistä sanoista läsnä tietyssä tekstissä. Tätä lähestymistapaa ei kuitenkaan käytetä yleisesti, koska se vaatii jatkuvaa päivittämistä ja sanakirjan huolellista ylläpitoa, jotta se pysyy tarkana ja tehokkaana.

Sääntöihin perustuva menetelmä

Sääntöpohjainen NER-menetelmä käyttää ennalta määritettyjä sääntöjä, jotka ohjaavat tiedon poimimista. Nämä säännöt perustuvat malleihin ja kontekstiin. Kaavoihin perustuvat säännöt keskittyvät sanojen rakenteeseen ja muotoon tarkastelemalla niiden morfologisia malleja. Toisaalta kontekstipohjaiset säännöt huomioivat ympäröivät sanat tai kontekstin, jossa sana esiintyy tekstidokumentissa. Tämä mallipohjaisten ja kontekstipohjaisten sääntöjen yhdistelmä parantaa tiedon poiminnan tarkkuutta nimettyjen entiteettien tunnistuksessa (NER).

Koneoppimiseen perustuva menetelmä

Moniluokkainen luokittelu koneoppimisalgoritmeilla

  • Yksi tapa on kouluttaa malli moniluokkainen luokitus käyttää erilaisia ​​koneoppimisalgoritmeja, mutta se vaatii paljon merkintöjä. Nimeämisen lisäksi malli vaatii myös syvällistä kontekstin ymmärtämistä lauseiden moniselitteisyyden käsittelemiseksi. Tämä tekee siitä haastavan tehtävän yksinkertaiselle koneoppimisalgoritmille.

Ehdollinen satunnaiskenttä (CRF)

  • Ehdollinen satunnaiskenttä on toteutettu sekä NLP Speech Taggerilla että NLTK. Se on todennäköisyysmalli, jota voidaan käyttää peräkkäisten tietojen, kuten sanojen, mallintamiseen.
  • CRF voi vangita syvän ymmärryksen lauseen kontekstista. Tässä mallissa syöttö {	ext{X}} = left { vec{x}_{1} ,vec{x}_{2} ,vec{x}_{3}, ldots,vec{x} _{T} oikea }
    p(y | mathbf{x}) = frac{1}{z(vec{x})} prod_{t=1}^{T} expleft{ sum_{k=1} ^{K} omega_k f_k(y_t, y_{t-1}, vec{x}_t) 
ight}

Syväoppimiseen perustuva menetelmä

  • Deep learning NER -järjestelmä on paljon tarkempi kuin edellinen menetelmä, koska se pystyy koottamaan sanoja. Tämä johtuu siitä, että se käytti menetelmää nimeltä sanan upottaminen, joka pystyy ymmärtämään eri sanojen väliset semanttiset ja syntaktiset suhteet.
  • Se pystyy myös oppimaan analysoimaan aihekohtaisia ​​ja korkean tason sanoja automaattisesti.
  • Tämä tekee syvän oppimisen NER:stä soveltuvan useiden tehtävien suorittamiseen. Syvä oppiminen osaa tehdä suurimman osan toistuvasta työstä itse, joten esimerkiksi tutkijat voivat käyttää aikaansa tehokkaammin.

Kuinka ottaa NER käyttöön Pythonissa?

NER-järjestelmän toteuttamisessa hyödynnämme Spacy-kirjastoa. Koodi voidaan ajaa colabissa, mutta visualisointitarkoituksessa. Suosittelen paikallista ympäristöä. Voimme asentaa tarvittavat kirjastot käyttämällä:

!pip install spacy !pip install nltk ! python -m spacy download en_core_web_sm>

Asenna tärkeitä kirjastoja

Python 3

import> pandas as pd> import> spacy> import> requests> from> bs4>import> BeautifulSoup> nlp>=> spacy.load(>'en_core_web_sm'>)> pd.set_option(>'display.max_rows'>,>200>)>
>
>

NER käyttää Spacea

Seuraavassa koodissa käytämme SpaCy, luonnollisen kielen käsittelykirjasto tekstin käsittelemiseen ja nimettyjen kokonaisuuksien purkamiseen. Koodi toistuu käsitellyssä asiakirjassa tunnistettujen nimettyjen entiteettien läpi ja tulostaa kunkin entiteetin tekstin, aloitusmerkin, loppumerkin ja tarran.

Python 3

content>=> 'Trinamool Congress leader Mahua Moitra has moved the Supreme Court against her expulsion from the Lok Sabha over the cash-for-query allegations against her. Moitra was ousted from the Parliament last week after the Ethics Committee of the Lok Sabha found her guilty of jeopardising national security by sharing her parliamentary portal's login credentials with businessman Darshan Hiranandani.'> doc>=> nlp(content)> for> ent>in> doc.ents:> >print>(ent.text, ent.start_char, ent.end_char, ent.label_)>
>
>

Lähtö:

Congress 10 18 ORG Mahua Moitra 26 38 PERSON the Supreme Court 49 66 ORG the Lok Sabha 94 107 PERSON Moitra 157 163 ORG Parliament 184 194 ORG last week 195 204 DATE the Ethics Committee 211 231 ORG Darshan Hiranandani 373 392 PERSON>

Tulos näyttää entiteettien nimet, niiden alku- ja loppupaikat tekstissä sekä niiden ennustetut otsikot.

Visualisoi

Thedisplacy.render>funktiota spaCysta käytetään visualisoimaan nimetyt entiteetit tekstissä. Se luo visuaalisen esityksen värillisillä korostuksilla, jotka osoittavat tunnistetut kokonaisuudet ja niitä vastaavat luokat.

Python 3

from> spacy>import> displacy> displacy.render(doc, style>=>'ent'>)>
>
>

Lähtö:

Kuinka ottaa NER käyttöön Pythonissa?

Luomme seuraavan koodin avulla tietokehyksen spaCyn poimimista nimetyistä entiteeteista, mukaan lukien kunkin entiteetin teksti, tyyppi (tunniste) ja lemma.

Python 3

entities>=> [(ent.text, ent.label_, ent.lemma_)>for> ent>in> doc.ents]> df>=> pd.DataFrame(entities, columns>=>[>'text'>,>'type'>,>'lemma'>])> print>(df)>
>
>

Lähtö:

text type lemma 0 Congress ORG Congress 1 Mahua Moitra PERSON Mahua Moitra 2 the Supreme Court ORG the Supreme Court 3 the Lok Sabha PERSON the Lok Sabha 4 Moitra ORG Moitra 5 Parliament ORG Parliament 6 last week DATE last week 7 the Ethics Committee ORG the Ethics Committee 8 Darshan Hiranandani PERSON Darshan Hiranandani>

Tietokehys tarjoaa jäsennellyn esityksen nimetyistä kokonaisuuksista, niiden tyypeistä ja lemmatoiduista muodoista.

Usein kysytyt kysymykset (FAQ)

1. Mikä on NER-järjestelmän tarkoitus?

NER:n tarkoitus on automaattisesti poimia jäsenneltyä tietoa jäsentämättömästä tekstistä, jolloin koneet voivat ymmärtää ja luokitella kokonaisuuksia tarkoituksenmukaisella tavalla erilaisiin sovelluksiin, kuten tekstin yhteenvetoon, tietokaavioiden rakentamiseen, kysymyksiin vastaamiseen ja tietokaavion rakentamiseen.

2. Mitkä ovat NER-menetelmät NLP:ssä?

NER-menetelmiä NLP:ssä ovat:

  • Sanastopohjainen NER.
  • Sääntöihin perustuva
  • ML-pohjainen
  • Perustuu syvään oppimiseen.

3. Mitä NER:ää käytetään NLP:ssä?

NER:llä on tärkeä rooli muiden NLP-tehtävien, kuten puheosan taggauksen ja jäsentämisen, tarkkuuden parantamisessa.

4. Voiko BERT tehdä nimetyn kokonaisuuden tunnistamisen?

Kyllä, BERT:tä voidaan käyttää NER:lle.