Rozpoznawanie nazwanych podmiotów (NER) jest techniką przetwarzanie języka naturalnego (NLP) który koncentruje się na identyfikacji i klasyfikacji podmiotów. Celem NER jest automatyczne wyodrębnianie ustrukturyzowanych informacji z nieustrukturyzowanego tekstu, umożliwiając maszynom zrozumienie i kategoryzację jednostek w znaczący sposób na potrzeby różnych zastosowań, takich jak podsumowywanie tekstu, budowanie wykresów wiedzy, odpowiadanie na pytania i konstruowanie grafów wiedzy. W artykule omówiono podstawy, metody i wdrażanie modelu NER.
Co to jest rozpoznawanie jednostek nazwanych (NER)?
Rozpoznawanie nazw (NER) jest również określany jako identyfikacja podmiotu , fragmentacja jednostek, I ekstrakcja jednostek . NER to komponent ekstrakcji informacji, którego celem jest identyfikacja i kategoryzowanie nazwanych jednostek w nieustrukturyzowanym tekście. NER polega na identyfikacji kluczowych informacji w tekście i sklasyfikowaniu ich w zestawie predefiniowanych kategorii. Jednostka to rzecz, o której stale się mówi lub do której odnosi się w tekście, na przykład nazwiska osób, organizacje, lokalizacje, wyrażenia czasu, ilości, wartości procentowe i inne predefiniowane kategorie.
System NER znajduje zastosowania w różnych dziedzinach, w tym odpowiadanie na pytania, wyszukiwanie informacji i tłumaczenie maszynowe. NER odgrywa ważną rolę w zwiększaniu precyzji innych NLP zadania, takie jak znakowanie części mowy i analizowanie. W swej istocie NLP jest procesem dwuetapowym. Poniżej przedstawiono dwa etapy, które składają się na niego:
- Wykrywanie elementów z tekstu
- Klasyfikacja ich w różne kategorie
Niejednoznaczność w NER
- Dla osoby definicja kategorii jest intuicyjnie dość jasna, ale w przypadku komputerów istnieje pewna niejednoznaczność klasyfikacji. Spójrzmy na kilka niejednoznacznych przykładów:
- Anglia (Organizacja) wygrała Puchar Świata 2019 vs Puchar Świata 2019 odbył się w Anglii (Lokalizacja).
- Waszyngton (Lokalizacja) jest stolicą Stanów Zjednoczonych vs Pierwszym prezydentem Stanów Zjednoczonych był Waszyngton (osoba).
Jak działa rozpoznawanie jednostek nazwanych (NER)?
Działanie funkcji rozpoznawania podmiotów nazwanych omówiono poniżej:
- System NER analizuje cały wprowadzony tekst w celu identyfikacji i lokalizacji wskazanych podmiotów.
- Następnie system identyfikuje granice zdań, biorąc pod uwagę zasady dotyczące wielkich liter. Rozpoznaje koniec zdania, gdy słowo zaczyna się z dużej litery, zakładając, że może to być początek nowego zdania. Znajomość granic zdań pomaga w kontekstualizowaniu jednostek w tekście, umożliwiając modelowi zrozumienie relacji i znaczeń.
- NER można przeszkolić w zakresie klasyfikowania całych dokumentów na różne typy, takie jak faktury, paragony lub paszporty. Klasyfikacja dokumentów zwiększa wszechstronność NER, umożliwiając dostosowanie rozpoznawania jednostek w oparciu o specyficzne cechy i kontekst różnych typów dokumentów.
- NER wykorzystuje algorytmy uczenia maszynowego, w tym uczenie się nadzorowane, do analizowania oznaczonych zbiorów danych. Te zbiory danych zawierają przykłady jednostek z adnotacjami, które pomagają modelowi w rozpoznawaniu podobnych jednostek w nowych, niewidocznych danych.
- Dzięki wielu iteracjom szkoleniowym model udoskonala swoje zrozumienie cech kontekstowych, struktur syntaktycznych i wzorców jednostek, stale poprawiając swoją dokładność w czasie.
- Zdolność modelu do dostosowywania się do nowych danych pozwala mu obsługiwać różnice w języku, kontekście i typach jednostek, dzięki czemu jest bardziej niezawodny i skuteczny.
Rozpoznawanie nazwanych podmiotów (NER) Metody
Metoda oparta na leksykonie
NER korzysta ze słownika zawierającego listę słów lub terminów. Proces polega na sprawdzeniu, czy w danym tekście występuje któreś z tych słów. Jednak to podejście nie jest powszechnie stosowane, ponieważ wymaga ciągłej aktualizacji i starannej konserwacji słownika, aby zachować dokładność i skuteczność.
Metoda oparta na regułach
Metoda Rule Based NER wykorzystuje zestaw predefiniowanych reguł, które kierują ekstrakcją informacji. Reguły te opierają się na wzorcach i kontekście. Reguły oparte na wzorach koncentrują się na strukturze i formie słów, przyglądając się ich wzorom morfologicznym. Z drugiej strony reguły oparte na kontekście uwzględniają otaczające słowa lub kontekst, w jakim słowo pojawia się w dokumencie tekstowym. Ta kombinacja reguł opartych na wzorcach i kontekście zwiększa precyzję wyodrębniania informacji w procesie rozpoznawania jednostek nazwanych (NER).
Metoda oparta na uczeniu maszynowym
Klasyfikacja wieloklasowa za pomocą algorytmów uczenia maszynowego
- Jednym ze sposobów jest wytrenowanie modelu klasyfikacja wieloklasowa przy użyciu różnych algorytmów uczenia maszynowego, ale wymaga to wielu etykiet. Oprócz etykietowania model wymaga również głębokiego zrozumienia kontekstu, aby poradzić sobie z niejednoznacznością zdań. To sprawia, że jest to trudne zadanie dla prostego algorytmu uczenia maszynowego.
Warunkowe pole losowe (CRF)
- Warunkowe pole losowe jest implementowane zarówno przez NLP Speech Tagger, jak i NLTK. Jest to model probabilistyczny, który można wykorzystać do modelowania danych sekwencyjnych, takich jak słowa.
- CRF może uchwycić głębokie zrozumienie kontekstu zdania. W tym modelu wejście

Metoda oparta na głębokim uczeniu się
- System głębokiego uczenia się NER jest znacznie dokładniejszy niż poprzednia metoda, ponieważ potrafi łączyć słowa. Wynika to z faktu, że zastosowano w nim metodę zwaną osadzaniem słów, która jest w stanie zrozumieć relacje semantyczne i syntaktyczne pomiędzy różnymi słowami.
- Jest także w stanie automatycznie uczyć się analiz słów specyficznych dla danego tematu oraz słów wysokiego poziomu.
- Dzięki temu głębokie uczenie się NER ma zastosowanie do wykonywania wielu zadań. Głęboka nauka większość powtarzalnych prac może wykonać samodzielnie, dzięki czemu na przykład badacze mogą efektywniej wykorzystywać swój czas.
Jak zaimplementować NER w Pythonie?
Do wdrożenia systemu NER wykorzystamy bibliotekę Spacy. Kod można uruchomić na Colabie, jednak w celach wizualizacyjnych. Polecam lokalne środowisko. Wymagane biblioteki możemy zainstalować za pomocą:
!pip install spacy !pip install nltk ! python -m spacy download en_core_web_sm>
Zainstaluj ważne biblioteki
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 za pomocą Spacy
W poniższym kodzie używamy SpaCy, biblioteka przetwarzania języka naturalnego do przetwarzania tekstu i wyodrębniania nazwanych jednostek. Kod iteruje po nazwanych encjach zidentyfikowanych w przetworzonym dokumencie i drukuje tekst każdej encji, znak początkowy, znak końcowy i etykietę.
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_)> |
>
>
Wyjście:
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>
Dane wyjściowe wyświetlały nazwy elementów, ich początkową i końcową pozycję w tekście oraz przewidywane etykiety.
Wyobrażać sobie
Thedisplacy.render>Funkcja spaCy służy do wizualizacji nazwanych jednostek w tekście. Generuje wizualną reprezentację z kolorowymi podświetleniami wskazującymi rozpoznane jednostki i ich odpowiednie kategorie.
Python3
from> spacy>import> displacy> displacy.render(doc, style>=>'ent'>)> |
>
>
Wyjście:

Używając poniższego kodu, utworzymy ramkę danych z nazwanych jednostek wyodrębnionych przez spaCy, włączając tekst, typ (etykietę) i lemat każdej jednostki.
Python3
entities>=> [(ent.text, ent.label_, ent.lemma_)>for> ent>in> doc.ents]> df>=> pd.DataFrame(entities, columns>=>[>'text'>,>'type'>,>'lemma'>])> print>(df)> |
>
>
Wyjście:
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>
Ramka danych zapewnia uporządkowaną reprezentację nazwanych jednostek, ich typów i form lematyzowanych.
Często zadawane pytania (FAQ)
1. Jaki jest cel systemu NER?
Celem NER jest automatyczne wyodrębnianie ustrukturyzowanych informacji z nieustrukturyzowanego tekstu, umożliwiając maszynom zrozumienie i kategoryzację jednostek w sposób znaczący dla różnych zastosowań, takich jak podsumowywanie tekstu, budowanie wykresów wiedzy, odpowiadanie na pytania i konstruowanie grafów wiedzy.
2. Jakie są metody NER w NLP?
Metody NER w NLP obejmują:
- NER oparty na leksykonie.
- Oparte na zasadach
- Oparty na ML
- Oparte na głębokim uczeniu.
3. Jakie są zastosowania NER w NLP?
NER odgrywa ważną rolę w zwiększaniu precyzji innych zadań NLP, takich jak znakowanie i analizowanie części mowy.
4. Czy BERT może dokonać uznania podmiotu nazwanego?
Tak, BERT może być używany do NER.
