Odpowiedź na pierwsze pytanie jest taka, że algorytm działa na otaczający kontekst (tokeny) w zdaniu; to nie tylko prosty mechanizm wyszukiwania. OpenNLP wykorzystuje maksymalną entropię, która jest formą wielomianowej regresji logistycznej do zbudowania jej modelu. Powodem tego jest zmniejszenie "niejednoznaczności słowa" i znalezienie podmiotów w kontekście. Na przykład, jeśli mam na imię April, łatwo mogę pomylić się z kwietniem, a jeśli mam na imię May, to pomylę się z miesiącem majowym i czasownikiem. W drugiej części pierwszego pytania możesz utworzyć listę znanych imion i użyć ich w programie, który przegląda twoje zdania i automatycznie je adnotuje, aby pomóc Ci utworzyć zestaw treningowy, jednak tworząc listę nazwisk sam bez kontekstu nie wytrenuje modelu w stopniu wystarczającym lub wcale. W rzeczywistości istnieje dodatek OpenNLP o nazwie "dodatek do modelu", który jest przeznaczony do tego celu: nadajesz mu plik nazw i używa on nazw i niektórych danych (zdań) do szkolenia modelu. Jeśli szukasz konkretnych nazw jednostek, które nie są wieloznaczne, lepiej być może, używając listy i czegoś w stylu regex, aby odkryć nazwy zamiast NER.
Jeśli chodzi o twoje drugie pytanie, jest kilka opcji, ale ogólnie rzecz biorąc, nie sądzę, że NER to świetne narzędzie do określania czegoś takiego jak płeć, jednak przy wystarczająco długich szkoleniowych zdaniach możesz uzyskać przyzwoite wyniki. Ponieważ NER używa modelu opartego na otaczających tokenach w zestawie szkoleniowym do zdania, aby ustalić istnienie nazwanego podmiotu, nie może zrobić wiele pod względem identyfikacji płci. Być może lepiej znaleźć wszystkie nazwiska osób, a następnie odwołać się do indeksu nazwisk, o których wiesz, że są męskie lub żeńskie, aby uzyskać dopasowanie. Ponadto, niektóre nazwiska, takie jak Pat, są zarówno męskie, jak i żeńskie, aw większości danych tekstowych nie będzie żadnego wskazania, który z nich nie jest ani człowiekiem, ani maszyną. Mając to na uwadze, można stworzyć osobno model męski i żeński lub stworzyć różne typy jednostek w ramach tego samego modelu. Możesz użyć adnotacji w ten sposób (używając różnych nazw typów jednostek: female.person i female.person). Nigdy tego nie próbowałem, ale może się to udać, musiałbyś przetestować to na swoich danych.
<START:male.person> Pierre Vinken <END> , 61 years old , will join the board as a nonexecutive director Nov. 29 .
Mrs . <START:female.person> Maria <END> is chairman of Elsevier N.V. , the Dutch publishing group
NER = Nazwany Entity rozpoznawania
HTH
Dzięki! Tak, powinienem wykonać twój przykład robiąc ** female.person ** and ** male.osoba **, problem polega na tym, że mam wiele imion i nazwisk (około 200 tys.), więc w takim razie czy powinienem pisać za każdym razem te same zdania o innej nazwie ?, np. Pierre Vinken , 61 lat .. ** następnie ** John Travolta , 61 lat ... etc etc? –
Dail
ciekawy pomysł ... Chciałbym spróbować i zobaczyć, co się stanie – markg
czy musimy podążać tą drogą? – Dail