logo

Navngitt enhetsgjenkjenning

Navngitt enhetsgjenkjenning (NER) er en teknikk i naturlig språkbehandling (NLP) som fokuserer på å identifisere og klassifisere enheter. Hensikten med NER er å automatisk trekke ut strukturert informasjon fra ustrukturert tekst, slik at maskiner kan forstå og kategorisere enheter på en meningsfull måte for ulike applikasjoner som tekstoppsummering, bygge kunnskapsgrafer, spørsmålsbesvarelse og kunnskapsgrafkonstruksjon. Artikkelen utforsker grunnleggende, metoder og implementering av NER-modellen.

Hva er navngitt enhetsgjenkjenning (NER)?

Navneenhetsgjenkjenning (NER) er også referert til som enhetsidentifikasjon , enhet chunking, og enhetsutvinning . NER er komponenten av informasjonsutvinning som tar sikte på å identifisere og kategorisere navngitte enheter i ustrukturert tekst. NER innebærer identifisering av nøkkelinformasjon i teksten og klassifisering i et sett med forhåndsdefinerte kategorier. En entitet er tingen som det konsekvent snakkes om eller refererer til i teksten, for eksempel personnavn, organisasjoner, lokasjoner, tidsuttrykk, mengder, prosenter og flere forhåndsdefinerte kategorier.

NER-systemfinneapplikasjoner på tvers av ulike domener, inkludert svar på spørsmål, informasjonsinnhenting og maskinoversettelse. NER spiller en viktig rolle i å forbedre presisjonen til andre NLP oppgaver som orddelsmerking og parsing. I kjernen er NLP bare en to-trinns prosess, nedenfor er de to trinnene som er involvert:



  • Oppdage enhetene fra teksten
  • Klassifisere dem i forskjellige kategorier

Tvetydighet i NER

  • For en person er kategoridefinisjonen intuitivt ganske klar, men for datamaskiner er det en viss uklarhet i klassifiseringen. La oss se på noen tvetydige eksempler:
    • England (organisasjon) vant verdensmesterskapet i 2019 vs verdensmesterskapet i 2019 skjedde i England (sted).
    • Washington (Location) er hovedstaden i USA vs USAs første president var Washington (Person).

Hvordan fungerer navngitt enhetsgjenkjenning (NER)?

Arbeidet med navngitt enhetsgjenkjenning er diskutert nedenfor:

  • NER-systemet analyserer hele inndatateksten for å identifisere og lokalisere de navngitte enhetene.
  • Systemet identifiserer deretter setningsgrensene ved å vurdere regler for store bokstaver. Den gjenkjenner slutten av setningen når et ord starter med stor bokstav, forutsatt at det kan være begynnelsen på en ny setning. Å kjenne setningsgrenser hjelper til med å kontekstualisere enheter i teksten, slik at modellen kan forstå relasjoner og betydninger.
  • NER kan trenes til å klassifisere hele dokumenter i forskjellige typer, for eksempel fakturaer, kvitteringer eller pass. Dokumentklassifisering øker allsidigheten til NER, slik at den kan tilpasse sin enhetsgjenkjenning basert på de spesifikke egenskapene og konteksten til ulike dokumenttyper.
  • NER bruker maskinlæringsalgoritmer, inkludert overvåket læring, for å analysere merkede datasett. Disse datasettene inneholder eksempler på kommenterte enheter, som veileder modellen i å gjenkjenne lignende enheter i nye, usynlige data.
  • Gjennom flere treningsiterasjoner foredler modellen sin forståelse av kontekstuelle funksjoner, syntaktiske strukturer og enhetsmønstre, og forbedrer kontinuerlig nøyaktigheten over tid.
  • Modellens evne til å tilpasse seg nye data gjør at den kan håndtere variasjoner i språk, kontekst og enhetstyper, noe som gjør den mer robust og effektiv.

Navngitt enhetsgjenkjenning (NER) Metoder

Leksikonbasert metode

NER bruker en ordbok med en liste over ord eller termer. Prosessen innebærer å sjekke om noen av disse ordene finnes i en gitt tekst. Denne tilnærmingen er imidlertid ikke ofte brukt fordi den krever konstant oppdatering og nøye vedlikehold av ordboken for å holde seg nøyaktig og effektiv.

Regelbasert metode

Den regelbaserte NER-metoden bruker et sett med forhåndsdefinerte regler som veileder utvinningen av informasjon. Disse reglene er basert på mønstre og kontekst. Mønsterbaserte regler fokuserer på strukturen og formen til ord, og ser på deres morfologiske mønstre. På den annen side vurderer kontekstbaserte regler de omkringliggende ordene eller konteksten et ord vises i i tekstdokumentet. Denne kombinasjonen av mønsterbaserte og kontekstbaserte regler forbedrer presisjonen av informasjonsutvinning i Named Entity Recognition (NER).

Maskinlæringsbasert metode

Flerklasseklassifisering med maskinlæringsalgoritmer

  • En måte er å trene modellen til flerklasseklassifisering bruker forskjellige maskinlæringsalgoritmer, men det krever mye merking. I tillegg til å merke modellen krever det også en dyp forståelse av kontekst for å håndtere tvetydigheten i setningene. Dette gjør det til en utfordrende oppgave for en enkel maskinlæringsalgoritme.

Betinget tilfeldig felt (CRF)

  • Betinget tilfeldig felt er implementert av både NLP Speech Tagger og NLTK. Det er en sannsynlighetsmodell som kan brukes til å modellere sekvensielle data som ord.
  • CRF kan fange en dyp forståelse av konteksten til setningen. I denne modellen er input {	ext{X}} = venstre { vec{x}_{1} ,vec{x}_{2} ,vec{x}_{3}, ldots,vec{x} _{T} 
ight }
    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}

Dyplæringsbasert metode

  • Deep learning NER-systemet er mye mer nøyaktig enn tidligere metode, siden det er i stand til å sette sammen ord. Dette skyldes det faktum at den brukte en metode som kalles ordinnbygging, som er i stand til å forstå det semantiske og syntaktiske forholdet mellom forskjellige ord.
  • Det er også i stand til å lære analyser emnespesifikke så vel som ord på høyt nivå automatisk.
  • Dette gjør dyp læring NER anvendelig for å utføre flere oppgaver. Dyp læring kan gjøre det meste av det repeterende arbeidet selv, derfor kan forskere for eksempel bruke tiden sin mer effektivt.

Hvordan implementere NER i Python?

For å implementere NER-systemet vil vi utnytte Spacy-biblioteket. Koden kan kjøres på colab, men for visualiseringsformål. Jeg anbefaler nærmiljøet. Vi kan installere de nødvendige bibliotekene ved å bruke:

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

Installer viktige biblioteker

Python3

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 bruker Spacy

I følgende kode bruker vi SpaCy, et naturlig språkbehandlingsbibliotek for å behandle tekst og trekke ut navngitte enheter. Koden itererer gjennom de navngitte enhetene identifisert i det behandlede dokumentet og skriver ut hver enhets tekst, starttegn, slutttegn og etikett.

Python3

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_)>
>
>

Produksjon:

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>

Utdataene viste navnene på enhetene, deres start- og sluttposisjoner i teksten og deres antatte etiketter.

Visualiser

Dedisplacy.render>funksjon fra spaCy brukes til å visualisere de navngitte enhetene i en tekst. Den genererer en visuell representasjon med fargede høydepunkter som indikerer de anerkjente enhetene og deres respektive kategorier.

Python3

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

Produksjon:

Hvordan implementere NER i Python?

Ved å bruke følgende kode vil vi lage en dataramme fra de navngitte enhetene hentet ut av spaCy, inkludert tekst, type (etikett) og lemma for hver enhet.

Python3

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

Produksjon:

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>

Datarammen gir en strukturert representasjon av de navngitte enhetene, deres typer og lemmatiserte former.

Ofte stilte spørsmål (FAQs)

1. Hva er formålet med NER-systemet?

Hensikten med NER er å automatisk trekke ut den strukturerte informasjonen fra ustrukturert tekst, slik at maskiner kan forstå og kategorisere enheter på en meningsfull måte for ulike applikasjoner som tekstoppsummering, bygge kunnskapsgrafer, spørsmålsbesvarelse og kunnskapsgrafkonstruksjon.

2. Hva er metoder for NER i NLP?

Metoder for NER i NLP inkluderer:

  • Leksikonbasert NER.
  • Regler basert
  • ML-basert
  • Dyplæringsbasert.

3. Hva er bruken av NER i NLP?

NER spiller en viktig rolle i å forbedre presisjonen til andre NLP-oppgaver som orddeltagging og parsing.

4. Kan BERT utføre navngitt enhetsgjenkjenning?

Ja, BERT kan brukes for NER.